Buying a home is a significant financial decision, and understanding how much mortgage you can realistically afford is crucial. The Mortgage Affordability Calculator is designed to help you estimate your potential borrowing capacity based on key financial factors. It takes into account your income, existing debts, down payment, and the terms of the mortgage itself.
Key Factors in Mortgage Affordability:
Annual Income: This is the primary source of funds for your mortgage payments. Lenders will assess your stable and verifiable income.
Existing Monthly Debt Payments: This includes payments for credit cards, student loans, car loans, and any other recurring debts. These obligations reduce the amount of income available for a mortgage.
Down Payment: The upfront cash you pay towards the home's purchase price. A larger down payment reduces the loan amount needed and can often lead to better interest rates and lower monthly payments.
Interest Rate: The percentage charged by the lender on the loan amount. Even small variations in interest rates can significantly impact your monthly payments and the total cost of the loan over time.
Loan Term: The duration over which you agree to repay the loan, typically measured in years (e.g., 15, 20, or 30 years). Shorter terms usually mean higher monthly payments but less interest paid overall.
How the Calculator Works:
The calculator typically uses a few rules of thumb and calculations to estimate affordability. A common guideline is the "front-end" and "back-end" debt-to-income (DTI) ratio:
Front-end DTI: Your potential total housing payment (principal, interest, taxes, insurance – PITI) divided by your gross monthly income. Lenders often prefer this to be no more than 28%.
Back-end DTI: Your total monthly debt payments (including the potential PITI) divided by your gross monthly income. Lenders often prefer this to be no more than 36% to 43%, depending on the loan type and your financial profile.
Our calculator simplifies this by focusing on the maximum loan amount you might qualify for given your income and debts, assuming a certain interest rate and loan term. It helps you understand the *potential principal amount* you can borrow, which, when added to your down payment, gives you an idea of the maximum home price you might be able to afford.
Example Calculation:
Let's say you have:
Annual Income: $90,000
Existing Monthly Debt Payments: $600
Down Payment: $30,000
Interest Rate: 5.5%
Loan Term: 30 Years
Based on these inputs, the calculator will estimate the maximum loan amount you could potentially afford and, consequently, the maximum home price (loan amount + down payment) you might be able to purchase.
Disclaimer: This calculator provides an estimate for informational purposes only and does not constitute a loan offer or financial advice. Actual loan approval and terms will depend on a lender's full underwriting process, credit score, property appraisal, and other factors.
function calculateMortgageAffordability() {
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 loanTerm = parseFloat(document.getElementById("loanTerm").value);
var resultElement = document.getElementById("result");
resultElement.innerHTML = ""; // Clear previous results
if (isNaN(annualIncome) || isNaN(monthlyDebt) || isNaN(downPayment) || isNaN(interestRate) || isNaN(loanTerm)) {
resultElement.innerHTML = "Please enter valid numbers for all fields.";
return;
}
if (annualIncome <= 0 || monthlyDebt < 0 || downPayment < 0 || interestRate <= 0 || loanTerm <= 0) {
resultElement.innerHTML = "Please enter positive values for income, interest rate, and loan term. Debt and down payment can be zero but not negative.";
return;
}
// Assuming a maximum back-end DTI of 36% and a front-end DTI of 28% for a conservative estimate
// Let's use a common lender guideline that housing costs (PITI) shouldn't exceed 28% of gross monthly income
// and total debt (PITI + other debts) shouldn't exceed 36% of gross monthly income.
var grossMonthlyIncome = annualIncome / 12;
// Maximum total monthly debt allowed (including PITI)
var maxTotalMonthlyDebt = grossMonthlyIncome * 0.36;
// Maximum allowable monthly mortgage payment (PITI)
// We subtract existing monthly debt from the maximum total debt allowed
var maxMonthlyMortgagePayment = maxTotalMonthlyDebt – monthlyDebt;
// Ensure the maximum monthly mortgage payment is not negative
if (maxMonthlyMortgagePayment 0) {
var numerator = Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1;
var denominator = monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments);
maxLoanAmount = maxMonthlyMortgagePayment * (numerator / denominator);
} else {
// If interest rate is 0, loan amount is simply payment * number of payments
maxLoanAmount = maxMonthlyMortgagePayment * numberOfPayments;
}
// Additional check: Ensure PITI doesn't exceed 28% of gross income directly
var maxPITIbyFrontEnd = grossMonthlyIncome * 0.28;
if (maxMonthlyMortgagePayment > maxPITIbyFrontEnd) {
maxMonthlyMortgagePayment = maxPITIbyFrontEnd;
// Recalculate maxLoanAmount if PITI is capped by front-end DTI
if (monthlyInterestRate > 0) {
var numerator = Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1;
var denominator = monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments);
maxLoanAmount = maxMonthlyMortgagePayment * (numerator / denominator);
} else {
maxLoanAmount = maxMonthlyMortgagePayment * numberOfPayments;
}
}
var estimatedMaxHomePrice = maxLoanAmount + downPayment;
if (maxLoanAmount <= 0) {
resultElement.innerHTML = "Based on your inputs, you may not qualify for a mortgage at this time. Please consult with a financial advisor.";
} else {
resultElement.innerHTML =
"Estimated Maximum Loan Amount: $" + maxLoanAmount.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,') + "" +
"Estimated Maximum Home Price: $" + estimatedMaxHomePrice.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,') + "";
}
}