Determine your maximum home budget based on your income and debts.
30 Years
20 Years
15 Years
10 Years
Recommended Home Price$0
Max Monthly Mortgage Payment$0
Estimated Loan Amount$0
Monthly Gross Income$0
How Much House Can You Really Afford?
Calculating your mortgage affordability is the first critical step in the home-buying process. Most financial experts recommend following the 28/36 rule. This means your mortgage payment should not exceed 28% of your gross monthly income, and your total debt payments (including the new mortgage) should not exceed 36%.
Our calculator uses these industry-standard Debt-to-Income (DTI) ratios to provide a safe "conservative" estimate of your purchasing power. We take your annual income, subtract your existing monthly obligations (like car loans or student debt), and factor in current interest rates and your down payment.
Key Factors Influencing Your Budget
Debt-to-Income Ratio: Lenders prefer a DTI below 36-43%. The lower your existing debt, the higher the mortgage you can qualify for.
Down Payment: A higher down payment reduces your loan amount, lowering your monthly interest cost and potentially removing the need for Private Mortgage Insurance (PMI).
Interest Rates: Even a 1% change in interest rates can swing your buying power by tens of thousands of dollars.
Property Taxes and Insurance: These are often bundled into your monthly payment (escrow). We've included a 1.2% estimate, but this varies by state and county.
Real-World Example
If you earn $100,000 per year, your gross monthly income is $8,333. Using the 36% rule, your total monthly debt should stay under $3,000. If you have a $500 car payment, your maximum mortgage payment (PITI) should be approximately $2,500. At a 6.5% interest rate on a 30-year term with $50,000 down, you could likely afford a home priced around $415,000.
function calculateAffordability() {
var annualIncome = parseFloat(document.getElementById('annualIncome').value);
var monthlyDebt = parseFloat(document.getElementById('monthlyDebt').value);
var downPayment = parseFloat(document.getElementById('downPayment').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTermYears = parseInt(document.getElementById('loanTerm').value);
var taxAndInsRate = parseFloat(document.getElementById('propertyTax').value) / 100;
if (isNaN(annualIncome) || isNaN(monthlyDebt) || isNaN(downPayment) || isNaN(interestRate)) {
alert("Please enter valid numeric values.");
return;
}
// Monthly Gross Income
var monthlyGross = annualIncome / 12;
// 28% Rule: Front-end ratio (Housing only)
var frontEndLimit = monthlyGross * 0.28;
// 36% Rule: Back-end ratio (Total Debt)
var backEndLimit = (monthlyGross * 0.36) – monthlyDebt;
// Use the more conservative of the two
var maxMonthlyPITI = Math.min(frontEndLimit, backEndLimit);
if (maxMonthlyPITI <= 0) {
alert("Current debts are too high relative to income for standard mortgage qualification.");
return;
}
// Adjust for Taxes and Insurance (Estimating 25% of the payment goes to Tax/Ins)
// Or better: Max PI = Max PITI – (HomePrice * TaxRate / 12)
// Since HomePrice is unknown, we use an approximation factor:
// PI = PITI / (1 + (TaxRate / (12 * MonthlyFactor)))
var monthlyInt = (interestRate / 100) / 12;
var numPayments = loanTermYears * 12;
// Formula for Monthly Payment: P = L [ i(1 + i)^n ] / [ (1 + i)^n – 1]
// Therefore, L = P / [ i(1 + i)^n / ((1 + i)^n – 1) ]
var factor = (monthlyInt * Math.pow(1 + monthlyInt, numPayments)) / (Math.pow(1 + monthlyInt, numPayments) – 1);
// Approximate monthly PITI components:
// PI is roughly 80% of PITI in most cases where tax/ins is 1.2%
// Let's solve: MaxMonthlyPITI = LoanAmount * factor + (LoanAmount + DownPayment) * (TaxRate/12)
// MaxMonthlyPITI = L * factor + L * (TaxRate/12) + DP * (TaxRate/12)
// L * (factor + TaxRate/12) = MaxMonthlyPITI – DP * (TaxRate/12)
var taxMonthlyFactor = taxAndInsRate / 12;
var loanAmountCalculated = (maxMonthlyPITI – (downPayment * taxMonthlyFactor)) / (factor + taxMonthlyFactor);
if (loanAmountCalculated < 0) loanAmountCalculated = 0;
var homePrice = loanAmountCalculated + downPayment;
// Formatting
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
maximumFractionDigits: 0
});
document.getElementById('maxHomePrice').innerText = formatter.format(homePrice);
document.getElementById('maxMonthlyPayment').innerText = formatter.format(maxMonthlyPITI);
document.getElementById('loanAmount').innerText = formatter.format(loanAmountCalculated);
document.getElementById('monthlyIncome').innerText = formatter.format(monthlyGross);
document.getElementById('results').style.display = 'block';
}