Estimate your maximum home purchase price based on income, debt, and current rates.
30 Years
20 Years
15 Years
10 Years
You Can Afford A Home Price Of:$0
Max Monthly Mortgage Payment (PITI):$0
Debt-to-Income (DTI) Limit Used:36%
Loan Amount:$0
Understanding Home Affordability
Determining "how much house can I afford" is the critical first step in the home buying process. This calculator uses the standard debt-to-income (DTI) ratios utilized by lenders to estimate your purchasing power. It doesn't just look at your salary; it balances your income against your existing financial obligations, the down payment you have saved, and the ongoing costs of property ownership.
The 28/36 Rule Explained
Most lenders follow the 28/36 rule to determine affordability:
Front-End Ratio (28%): Your housing costs (Principal, Interest, Taxes, Insurance, and HOA) should not exceed 28% of your gross monthly income.
Back-End Ratio (36%): Your total monthly debt payments (housing costs + credit cards, car loans, student loans, etc.) should not exceed 36% of your gross monthly income.
Note: While 36% is a standard conservative limit, some loan programs (like FHA) may allow for higher DTI ratios, sometimes up to 43% or even 50% depending on credit score and reserves.
Factors That Impact Your Purchasing Power
Several variables can significantly swing your affordability number:
Interest Rates: Even a 1% increase in mortgage rates can reduce your buying power by tens of thousands of dollars because more of your monthly payment goes toward interest rather than principal.
Down Payment: A larger down payment reduces the loan amount required, lowering your monthly payment and potentially eliminating Private Mortgage Insurance (PMI).
Property Taxes & HOA: High property taxes or expensive Homeowners Association fees reduce the amount of money left over for your actual mortgage loan, thereby lowering the price of the home you can afford.
Existing Debt: Reducing your monthly recurring debts (like paying off a car loan) releases more cash flow for a mortgage, directly increasing your home budget.
Example Calculation
Imagine a household with a gross annual income of $100,000. This equals roughly $8,333 per month.
Max Housing (Front-End 28%): $2,333/month.
Max Total Debt (Back-End 36%): $3,000/month.
If this household has $600 in car and student loan payments, their remaining capacity for a mortgage is $2,400 ($3,000 – $600). Since $2,333 (Front-End) is lower than $2,400 (Back-End residual), the lender will likely cap the monthly mortgage payment at $2,333.
function calculateAffordability() {
// 1. Get Input Values
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 = parseFloat(document.getElementById('loanTerm').value);
var propertyTaxRate = parseFloat(document.getElementById('propertyTaxRate').value);
var annualInsurance = parseFloat(document.getElementById('homeInsurance').value);
var hoaFees = parseFloat(document.getElementById('hoaFees').value);
// 2. Validate Inputs
if (isNaN(annualIncome) || annualIncome <= 0) {
alert("Please enter a valid annual income.");
return;
}
if (isNaN(monthlyDebt)) monthlyDebt = 0;
if (isNaN(downPayment)) downPayment = 0;
if (isNaN(interestRate) || interestRate < 0) interestRate = 6.5; // Default fallback
if (isNaN(propertyTaxRate)) propertyTaxRate = 1.2;
if (isNaN(annualInsurance)) annualInsurance = 1000;
if (isNaN(hoaFees)) hoaFees = 0;
// 3. Calculate DTI Limits
var monthlyGrossIncome = annualIncome / 12;
// Standard conventional loan limits
var frontEndRatio = 0.28;
var backEndRatio = 0.36;
// Max Payment based on Front End (Housing only)
var maxHousingFront = monthlyGrossIncome * frontEndRatio;
// Max Payment based on Back End (Total Debt – Existing Debt)
var maxTotalBack = monthlyGrossIncome * backEndRatio;
var maxHousingBack = maxTotalBack – monthlyDebt;
// The allowable monthly payment is the lesser of the two
var maxMonthlyPayment = Math.min(maxHousingFront, maxHousingBack);
// If debts are too high, maxHousingBack could be negative
if (maxMonthlyPayment <= 0) {
document.getElementById('results-area').style.display = 'block';
document.getElementById('resultHomePrice').innerHTML = "$0";
document.getElementById('resultMonthlyPayment').innerHTML = "$0";
document.getElementById('resultLoanAmount').innerHTML = "$0";
document.getElementById('resultDTI').innerHTML = "N/A (Debts too high)";
return;
}
// 4. Reverse Engineer Home Price
// Formula components:
// P = Home Price
// DP = Down Payment
// L = Loan Amount = P – DP
// r = Monthly Interest Rate
// n = Total Payments
// M = Mortgage Factor
// T_mo = Monthly Tax = P * (TaxRate / 100 / 12)
// I_mo = Monthly Insurance = annualInsurance / 12
// HOA = hoaFees
// MaxPay = (P – DP)*M + P*(TaxRate/1200) + I_mo + HOA
// Algebra:
// MaxPay – I_mo – HOA = P*M – DP*M + P*(TaxRate/1200)
// MaxPay – I_mo – HOA + DP*M = P * (M + TaxRate/1200)
// P = (MaxPay – I_mo – HOA + DP*M) / (M + TaxRate/1200)
var monthlyInterestRate = (interestRate / 100) / 12;
var totalPayments = loanTermYears * 12;
// Calculate Mortgage Factor
// If interest rate is 0, factor is 1/n
var mortgageFactor = 0;
if (monthlyInterestRate === 0) {
mortgageFactor = 1 / totalPayments;
} else {
mortgageFactor = (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, totalPayments)) / (Math.pow(1 + monthlyInterestRate, totalPayments) – 1);
}
var monthlyTaxFactor = (propertyTaxRate / 100) / 12;
var monthlyInsurance = annualInsurance / 12;
var numerator = maxMonthlyPayment – monthlyInsurance – hoaFees + (downPayment * mortgageFactor);
var denominator = mortgageFactor + monthlyTaxFactor;
var maxHomePrice = numerator / denominator;
// Edge case: if the calculated price is less than downpayment (unlikely math but possible with high fees)
if (maxHomePrice < downPayment) {
// If the fees alone exceed the budget, they can't afford anything beyond cash on hand?
// Simplified: Just default to Down Payment or 0
maxHomePrice = downPayment;
}
// Determine Loan Amount
var loanAmount = maxHomePrice – downPayment;
if (loanAmount < 0) loanAmount = 0;
// 5. Output Results
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
maximumFractionDigits: 0
});
document.getElementById('results-area').style.display = 'block';
document.getElementById('resultHomePrice').innerHTML = formatter.format(maxHomePrice);
document.getElementById('resultMonthlyPayment').innerHTML = formatter.format(maxMonthlyPayment);
document.getElementById('resultLoanAmount').innerHTML = formatter.format(loanAmount);
// Show which ratio constrained the budget
var limitText = (maxHousingFront < maxHousingBack) ? "28% (Front-End Ratio)" : "36% (Back-End Ratio)";
document.getElementById('resultDTI').innerHTML = limitText;
}