Please enter valid numbers for Income, Interest Rate, and Term.
Maximum Home Price
$0
Loan Amount$0
Monthly Principal & Interest$0
Taxes, Insurance & HOA$0
Total Monthly Payment$0
Limiting Factor–
How Much House Can You Really Afford?
Determining your budget is the first critical step in the home buying process. This Mortgage Affordability Calculator uses industry-standard Debt-to-Income (DTI) ratios used by lenders to estimate the maximum home price you can afford based on your income, debts, and down payment savings.
Understanding the 28/36 Rule
Lenders typically use two main ratios to determine your borrowing capacity. Our calculator checks both and uses the lower number to ensure a safe estimate:
The Front-End Ratio (28%): This rule states that your total monthly housing costs (Mortgage Principal, Interest, Property Taxes, Insurance, and HOA) should not exceed 28% of your gross monthly income.
The Back-End Ratio (36%): This rule takes into account your entire debt load. It states that your total housing costs plus all other monthly debt payments (student loans, car payments, credit cards) should not exceed 36% of your gross monthly income.
Key Factors Influencing Your Affordability
Several variables can significantly shift your purchasing power:
1. Interest Rates
Even a small increase in interest rates can reduce your affordability by tens of thousands of dollars. A higher rate means a higher monthly payment for the same loan amount, which reduces the total principal you can borrow while staying within DTI limits.
2. Down Payment
A larger down payment increases your affordability in two ways: it directly adds to the purchase price, and it reduces the loan amount needed, which lowers your monthly payments. Putting down at least 20% also eliminates Private Mortgage Insurance (PMI), further reducing monthly costs.
3. Monthly Debts
High monthly obligations like car loans or credit card minimums eat into your Back-End ratio. Paying off a car loan with a $500 monthly payment before applying for a mortgage could increase your borrowing power by roughly $75,000 to $100,000, depending on interest rates.
Example Calculation
Let's say you earn $90,000 annually ($7,500/month) and have $400 in monthly student loan payments. You have saved $50,000 for a down payment.
Front-End Limit: $7,500 × 0.28 = $2,100 max housing payment.
In this scenario, the Front-End ratio is the limiting factor. You can afford a house where the total monthly payment (including taxes and insurance) is $2,100.
function calculateAffordability() {
// 1. Get Input Values
var incomeAnnual = parseFloat(document.getElementById("annualIncome").value);
var debtsMonthly = parseFloat(document.getElementById("monthlyDebts").value);
var downPayment = parseFloat(document.getElementById("downPayment").value);
var rate = parseFloat(document.getElementById("interestRate").value);
var years = parseFloat(document.getElementById("loanTerm").value);
var taxAnnual = parseFloat(document.getElementById("propertyTax").value);
var insAnnual = parseFloat(document.getElementById("homeInsurance").value);
var hoaMonthly = parseFloat(document.getElementById("hoaFees").value);
// 2. Validate Inputs
var errorDiv = document.getElementById("errorDisplay");
var resultDiv = document.getElementById("resultBox");
if (isNaN(incomeAnnual) || isNaN(rate) || isNaN(years)) {
errorDiv.style.display = "block";
resultDiv.style.display = "none";
return;
}
// Handle optional/empty fields as 0
if (isNaN(debtsMonthly)) debtsMonthly = 0;
if (isNaN(downPayment)) downPayment = 0;
if (isNaN(taxAnnual)) taxAnnual = 0;
if (isNaN(insAnnual)) insAnnual = 0;
if (isNaN(hoaMonthly)) hoaMonthly = 0;
errorDiv.style.display = "none";
// 3. Calculate Limits
var incomeMonthly = incomeAnnual / 12;
var taxMonthly = taxAnnual / 12;
var insMonthly = insAnnual / 12;
var totalEscrow = taxMonthly + insMonthly + hoaMonthly;
// Front End Ratio (28% of gross income)
var maxPaymentFront = incomeMonthly * 0.28;
// Back End Ratio (36% of gross income minus debts)
var maxPaymentBack = (incomeMonthly * 0.36) – debtsMonthly;
// Determine the Limiting Factor
var maxAllowedTotalPayment = Math.min(maxPaymentFront, maxPaymentBack);
var limitingFactorText = (maxPaymentFront 0) {
// Mortgage Calculation Inverse: P = M * ( (1-(1+r)^-n) / r )
var r = (rate / 100) / 12;
var n = years * 12;
if (rate === 0) {
loanAmount = maxPI * n;
} else {
loanAmount = maxPI * ( (1 – Math.pow(1 + r, -n)) / r );
}
homePrice = loanAmount + downPayment;
} else {
maxPI = 0;
loanAmount = 0;
homePrice = downPayment; // Can only afford downpayment if cash flow is negative
maxAllowedTotalPayment = totalEscrow; // Just the fees
}
// 5. Update HTML
document.getElementById("maxHomePrice").innerHTML = "$" + Math.floor(homePrice).toLocaleString();
document.getElementById("loanAmount").innerHTML = "$" + Math.floor(loanAmount).toLocaleString();
document.getElementById("monthlyPI").innerHTML = "$" + Math.round(maxPI).toLocaleString();
document.getElementById("monthlyEscrow").innerHTML = "$" + Math.round(totalEscrow).toLocaleString();
document.getElementById("totalMonthly").innerHTML = "$" + Math.round(maxPI + totalEscrow).toLocaleString();
document.getElementById("limitingFactor").innerHTML = limitingFactorText;
resultDiv.style.display = "block";
}