Estimate how much house you can buy based on your income and debts.
30 Years
20 Years
15 Years
10 Years
Conservative (28%)
Standard (36%)
Aggressive (43%)
FHA Max (50%)
Please enter valid positive numbers for income and interest rate.
Maximum Home Price
$0
Max Monthly Payment
$0
Loan Amount
$0
Monthly Principal & Interest
$0
Est. Taxes & Insurance
$0
How Much House Can You Really Afford?
Determining "how much house can I afford" is the critical first step in the home buying process. This Mortgage Affordability Calculator goes beyond simple estimates by considering your specific financial picture, including your debt-to-income ratio (DTI), down payment savings, and current interest rates.
Understanding the Calculation Logic
Lenders don't just look at your salary; they look at your ability to repay. They use a metric called the Debt-to-Income Ratio (DTI). This calculator works backward from your DTI to find your maximum budget.
Gross Annual Income: Your total income before taxes.
Monthly Debts: Minimum payments on credit cards, student loans, and auto loans.
The 28/36 Rule: Ideally, your housing costs shouldn't exceed 28% of your gross monthly income, and your total debt (housing + other debts) shouldn't exceed 36%.
Key Factors Affecting Your Purchasing Power
1. Interest Rates
Interest rates significantly impact your buying power. A 1% increase in rates can reduce your purchasing power by approximately 10%. When rates are high, your monthly payment covers less principal, reducing the total loan amount you qualify for.
2. Down Payment
A larger down payment does two things: it reduces the loan amount needed (lowering monthly payments) and instantly increases the maximum price of the home you can purchase. If you put down less than 20%, remember to account for Private Mortgage Insurance (PMI), though this calculator focuses on the PITI (Principal, Interest, Taxes, Insurance) limits.
3. Property Taxes and Insurance
Many buyers forget that a "monthly mortgage payment" usually includes escrow for property taxes and homeowners insurance. In high-tax areas, these costs can eat up a significant portion of your qualifying budget. This calculator subtracts these estimated costs to give you a realistic "Principal and Interest" budget.
What is a Good DTI Ratio?
While 43% is often the absolute maximum for a Qualified Mortgage, sticking to a 36% back-end ratio is recommended for financial health. This ensures you aren't "house poor" and have funds remaining for maintenance, savings, and emergencies.
function calculateAffordability() {
// Get Input Values
var annualIncome = parseFloat(document.getElementById('annualIncome').value);
var monthlyDebt = parseFloat(document.getElementById('monthlyDebt').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value);
var termYears = parseFloat(document.getElementById('loanTerm').value);
var propertyTaxYearly = parseFloat(document.getElementById('propertyTax').value) || 0;
var homeInsuranceYearly = parseFloat(document.getElementById('homeInsurance').value) || 0;
var dtiLimit = parseFloat(document.getElementById('dtiRatio').value);
// Validation
var errorMsg = document.getElementById('errorMsg');
var resultSection = document.getElementById('resultSection');
if (isNaN(annualIncome) || isNaN(interestRate) || annualIncome <= 0 || interestRate < 0) {
errorMsg.style.display = 'block';
resultSection.style.display = 'none';
return;
} else {
errorMsg.style.display = 'none';
}
// Calculations
var monthlyIncome = annualIncome / 12;
// 1. Calculate Maximum Allowable Total Monthly Debt Payment based on DTI
var maxTotalMonthlyDebt = monthlyIncome * dtiLimit;
// 2. Calculate Maximum Housing Payment (PITI) available
// Max Housing = Max Total Debt – Current Monthly Debts
var maxHousingPayment = maxTotalMonthlyDebt – monthlyDebt;
// Ensure maxHousingPayment is positive
if (maxHousingPayment <= 0) {
resultSection.style.display = 'block';
document.getElementById('maxHomePrice').innerHTML = "$0";
document.getElementById('maxHomePrice').style.color = "#c0392b";
document.getElementById('maxMonthlyPayment').innerHTML = "Income too low for debts";
document.getElementById('loanAmount').innerHTML = "$0";
document.getElementById('monthlyPI').innerHTML = "$0";
document.getElementById('monthlyTaxIns').innerHTML = "$0";
return;
}
// 3. Subtract Monthly Taxes and Insurance to find available P&I
var monthlyTax = propertyTaxYearly / 12;
var monthlyInsurance = homeInsuranceYearly / 12;
var monthlyTaxAndIns = monthlyTax + monthlyInsurance;
var availableForPI = maxHousingPayment – monthlyTaxAndIns;
if (availableForPI <= 0) {
resultSection.style.display = 'block';
document.getElementById('maxHomePrice').innerHTML = "Check Taxes/Ins";
document.getElementById('maxHomePrice').style.color = "#c0392b";
document.getElementById('maxMonthlyPayment').innerHTML = "$" + formatMoney(maxHousingPayment);
document.getElementById('loanAmount').innerHTML = "$0";
document.getElementById('monthlyPI').innerHTML = "$0";
document.getElementById('monthlyTaxIns').innerHTML = "$" + formatMoney(monthlyTaxAndIns);
return;
}
// 4. Calculate Max Loan Amount based on available P&I
// Formula: PV = PMT * (1 – (1+r)^-n) / r
var r = (interestRate / 100) / 12;
var n = termYears * 12;
var maxLoanAmount = 0;
if (interestRate === 0) {
maxLoanAmount = availableForPI * n;
} else {
maxLoanAmount = availableForPI * (1 – Math.pow(1 + r, -n)) / r;
}
// 5. Calculate Max Home Price
var maxHomePrice = maxLoanAmount + downPayment;
// Formatting Helpers
function formatMoney(num) {
return num.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 0 });
}
// Display Results
resultSection.style.display = 'block';
document.getElementById('maxHomePrice').style.color = "#27ae60";
document.getElementById('maxHomePrice').innerHTML = "$" + formatMoney(maxHomePrice);
document.getElementById('maxMonthlyPayment').innerHTML = "$" + formatMoney(maxHousingPayment);
document.getElementById('loanAmount').innerHTML = "$" + formatMoney(maxLoanAmount);
document.getElementById('monthlyPI').innerHTML = "$" + formatMoney(availableForPI);
document.getElementById('monthlyTaxIns').innerHTML = "$" + formatMoney(monthlyTaxAndIns);
}