Understanding how much house you can afford is a crucial first step in the home-buying process. This mortgage affordability calculator will help you estimate your potential borrowing power based on your income, debts, and down payment. It takes into account common lending criteria to give you a realistic idea of your budget.
How Mortgage Affordability Works
Lenders typically use a set of debt-to-income (DTI) ratios to determine how much they are willing to lend you. The two most common ratios are:
Front-End Ratio (Housing Ratio): This ratio compares your estimated monthly housing expenses (principal, interest, taxes, and insurance – PITI) to your gross monthly income. Lenders often prefer this to be no more than 28% to 31%.
Back-End Ratio (Total Debt Ratio): This ratio compares all your monthly debt obligations (including your estimated PITI, credit card payments, car loans, student loans, etc.) to your gross monthly income. Lenders typically look for this to be no more than 36% to 43%.
Our calculator uses these principles to give you an estimated maximum mortgage amount. It's important to remember that this is an estimate, and your actual borrowing capacity may vary depending on the lender, your credit score, market conditions, and other factors.
Factors Affecting Affordability
Income: Your gross monthly income is the primary driver of affordability.
Existing Debts: High monthly debt payments reduce the amount you can allocate to a mortgage.
Down Payment: A larger down payment reduces the loan amount needed, making the purchase more affordable.
Interest Rates: Higher interest rates mean higher monthly payments for the same loan amount.
Property Taxes & Homeowners Insurance: These are crucial components of your PITI and impact your housing ratio.
Private Mortgage Insurance (PMI): If your down payment is less than 20%, PMI will add to your monthly housing costs.
Mortgage Affordability Calculator
function calculateAffordability() {
var grossMonthlyIncome = parseFloat(document.getElementById("grossMonthlyIncome").value);
var monthlyDebtPayments = parseFloat(document.getElementById("monthlyDebtPayments").value);
var downPayment = parseFloat(document.getElementById("downPayment").value);
var estimatedAnnualTaxes = parseFloat(document.getElementById("estimatedAnnualTaxes").value);
var estimatedAnnualInsurance = parseFloat(document.getElementById("estimatedAnnualInsurance").value);
var estimatedInterestRate = parseFloat(document.getElementById("estimatedInterestRate").value) / 100;
var loanTermYears = parseFloat(document.getElementById("loanTermYears").value);
var resultDiv = document.getElementById("result");
resultDiv.innerHTML = ""; // Clear previous results
if (isNaN(grossMonthlyIncome) || isNaN(monthlyDebtPayments) || isNaN(downPayment) || isNaN(estimatedAnnualTaxes) || isNaN(estimatedAnnualInsurance) || isNaN(estimatedInterestRate) || isNaN(loanTermYears)) {
resultDiv.innerHTML = "Please enter valid numbers for all fields.";
return;
}
// Assumptions based on typical lender ratios
var maxFrontEndRatio = 0.31; // Max PITI as % of gross income
var maxBackEndRatio = 0.43; // Max total debt (PITI + other debts) as % of gross income
var maxHousingPayment = grossMonthlyIncome * maxFrontEndRatio;
var maxTotalDebtPayment = grossMonthlyIncome * maxBackEndRatio;
var maxAllowedMortgagePayment = maxTotalDebtPayment – monthlyDebtPayments;
// We take the more conservative of the two limits for the maximum PITI
var targetMonthlyPITI = Math.min(maxHousingPayment, maxTotalDebtPayment – monthlyDebtPayments);
if (targetMonthlyPITI 0) {
maxPrincipalLoanAmount = targetMonthlyPITI * (Math.pow(1 + monthlyInterestRate, numberOfMonths) – 1) / (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfMonths));
} else { // Handle 0% interest rate case
maxPrincipalLoanAmount = targetMonthlyPITI * numberOfMonths;
}
// Subtract the down payment to estimate the maximum home price
var maxHomePrice = maxPrincipalLoanAmount + downPayment;
// Calculate estimated monthly PITI for clarity
var estimatedMonthlyPITI = targetMonthlyPITI; // This is the target PITI we calculated
// Calculate the estimated loan amount
var estimatedLoanAmount = maxHomePrice – downPayment;
// Display results
resultDiv.innerHTML = `