Determine how much home you can actually afford based on your income and debts.
30 Years Fixed
20 Years Fixed
15 Years Fixed
10 Years Fixed
Estimated Maximum Home Price$0
Estimated Monthly Payment (PITI)$0
*Calculation based on a 36% Debt-to-Income (DTI) ratio. Results are estimates only.
How Much Home Can I Afford?
Understanding home affordability is the most critical step in the home-buying process. Most financial experts and lenders use the 28/36 rule to determine how much they are willing to lend you. This rule suggests that 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%.
What Factors Influence Affordability?
Gross Annual Income: Your total income before taxes. Lenders look for stability and consistency.
Debt-to-Income Ratio (DTI): The percentage of your monthly income that goes toward paying debts. Low DTI usually equals higher borrowing power.
Down Payment: The more you put down upfront, the lower your monthly loan payment will be, and the higher the home price you can afford.
Interest Rates: Even a 1% change in interest rates can swing your buying power by tens of thousands of dollars.
Property Taxes & Insurance: These "hidden" costs are part of your monthly PITI (Principal, Interest, Taxes, and Insurance) and directly impact your monthly budget.
Example Affordability Scenarios
Annual Income
Monthly Debts
Interest Rate
Est. Max Home Price
$60,000
$250
6.5%
~$215,000
$100,000
$500
6.5%
~$370,000
$150,000
$800
6.5%
~$560,000
Tips to Increase Your Home Budget
If the calculator shows a lower number than you hoped for, consider these strategies:
Pay down existing debt: Reducing car loans or credit card balances improves your DTI ratio instantly.
Improve your credit score: A higher credit score can qualify you for lower interest rates, significantly lowering your monthly payment.
Save a larger down payment: This reduces the loan principal and may eliminate the need for Private Mortgage Insurance (PMI).
function calculateAffordability() {
var income = parseFloat(document.getElementById('annualIncome').value);
var monthlyDebts = parseFloat(document.getElementById('monthlyDebts').value);
var downPayment = parseFloat(document.getElementById('downPayment').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseInt(document.getElementById('loanTerm').value);
var taxRate = parseFloat(document.getElementById('propertyTax').value);
if (isNaN(income) || isNaN(monthlyDebts) || isNaN(downPayment) || isNaN(interestRate)) {
alert("Please enter valid numeric values.");
return;
}
// Monthly Gross Income
var monthlyGross = income / 12;
// Using the 36% DTI Rule for total debt
var maxTotalMonthlyDebt = monthlyGross * 0.36;
// Max Monthly PITI (Principal, Interest, Tax, Insurance) allowed
var maxMonthlyPITI = maxTotalMonthlyDebt – monthlyDebts;
// Estimate Insurance (Roughly 0.35% of home value annually)
// Estimate Property Tax (User input rate)
// We need to back-calculate Home Price from PITI.
// Monthly PITI = PrincipalPayment + (HomePrice * TaxRate / 12) + (HomePrice * InsuranceRate / 12)
var monthlyInt = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var annualTaxAndInsRate = (taxRate / 100) + 0.0035; // tax % + 0.35% for insurance
var monthlyTaxInsFactor = annualTaxAndInsRate / 12;
// Mortgage Formula: M = L [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
// var K = [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
// PITI = (HomePrice – DownPayment) * K + (HomePrice * monthlyTaxInsFactor)
// PITI = HomePrice * K – DownPayment * K + HomePrice * monthlyTaxInsFactor
// PITI + DownPayment * K = HomePrice * (K + monthlyTaxInsFactor)
// HomePrice = (PITI + DownPayment * K) / (K + monthlyTaxInsFactor)
var commonPower = Math.pow(1 + monthlyInt, numberOfPayments);
var K = (monthlyInt * commonPower) / (commonPower – 1);
var estimatedHomePrice = (maxMonthlyPITI + (downPayment * K)) / (K + monthlyTaxInsFactor);
if (estimatedHomePrice < downPayment) {
estimatedHomePrice = downPayment;
}
var finalMonthlyPayment = maxMonthlyPITI;
if (finalMonthlyPayment < 0) finalMonthlyPayment = 0;
document.getElementById('maxHomePrice').innerText = '$' + Math.round(estimatedHomePrice).toLocaleString();
document.getElementById('monthlyPayment').innerText = '$' + Math.round(finalMonthlyPayment).toLocaleString();
document.getElementById('results').style.display = 'block';
}