This calculator helps you estimate how much you can afford to borrow for a mortgage, considering your income, debts, and desired loan terms.
function calculateMortgageAffordability() {
var annualIncome = parseFloat(document.getElementById("annualIncome").value);
var monthlyDebt = parseFloat(document.getElementById("monthlyDebt").value);
var downPayment = parseFloat(document.getElementById("downPayment").value);
var loanTerm = parseInt(document.getElementById("loanTerm").value);
var interestRate = parseFloat(document.getElementById("interestRate").value);
var resultDiv = document.getElementById("result");
resultDiv.innerHTML = ""; // Clear previous results
if (isNaN(annualIncome) || isNaN(monthlyDebt) || isNaN(downPayment) || isNaN(loanTerm) || isNaN(interestRate)) {
resultDiv.innerHTML = "Please enter valid numbers for all fields.";
return;
}
// Lender's Debt-to-Income (DTI) Ratio guidelines often range from 30% to 50%.
// We'll use a common guideline of 36% for the total housing payment (PITI)
// and a higher ratio (e.g., 43%) for total debt.
var maxHousingPaymentRatio = 0.36; // Max percentage of gross monthly income for PITI
var maxTotalDebtRatio = 0.43; // Max percentage of gross monthly income for all debts
var grossMonthlyIncome = annualIncome / 12;
var maxAllowedTotalDebtPayment = grossMonthlyIncome * maxTotalDebtRatio;
var maxAllowedHousingPayment = grossMonthlyIncome * maxHousingPaymentRatio;
// Calculate the maximum allowable monthly mortgage payment (Principal, Interest, Taxes, Insurance)
var maxMonthlyMortgagePayment = maxAllowedTotalDebtPayment – monthlyDebt;
if (maxMonthlyMortgagePayment maxAllowedHousingPayment) {
maxMonthlyMortgagePayment = maxAllowedHousingPayment;
}
// Now, we need to calculate the maximum loan amount based on the maxMonthlyMortgagePayment.
// This requires the mortgage payment formula (M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1])
// We need to rearrange it to solve for P (Principal Loan Amount).
// P = M [ (1 + i)^n – 1] / [ i(1 + i)^n ]
var monthlyInterestRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var maxLoanAmount = 0;
if (monthlyInterestRate > 0) {
maxLoanAmount = maxMonthlyMortgagePayment * (Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1) / (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments));
} else { // Handle 0% interest rate case (though unlikely for mortgages)
maxLoanAmount = maxMonthlyMortgagePayment * numberOfPayments;
}
// The total home price you can afford is the max loan amount plus your down payment.
var affordableHomePrice = maxLoanAmount + downPayment;
// Format results for display
var formattedMaxLoanAmount = maxLoanAmount.toLocaleString(undefined, { style: 'currency', currency: 'USD' });
var formattedAffordableHomePrice = affordableHomePrice.toLocaleString(undefined, { style: 'currency', currency: 'USD' });
var formattedMaxMonthlyMortgagePayment = maxMonthlyMortgagePayment.toLocaleString(undefined, { style: 'currency', currency: 'USD' });
resultDiv.innerHTML =
"
Estimated Affordability
" +
"Based on your inputs, the maximum monthly mortgage payment (Principal, Interest, Taxes, Insurance) you might afford is: " + formattedMaxMonthlyMortgagePayment + "" +
"This allows for an estimated maximum loan amount of: " + formattedMaxLoanAmount + "" +
"With your down payment of " + downPayment.toLocaleString(undefined, { style: 'currency', currency: 'USD' }) + ", the estimated maximum home price you could afford is: " + formattedAffordableHomePrice + "" +
"Disclaimer: This is an estimation only. Actual mortgage approval depends on lender specific criteria, credit score, property taxes, homeowner's insurance, PMI (if applicable), and market conditions. Consult with a mortgage professional for personalized advice.";
}
.calculator-container {
font-family: sans-serif;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
max-width: 600px;
margin: 20px auto;
background-color: #f9f9f9;
}
.calculator-container h2, .calculator-container h3 {
text-align: center;
color: #333;
}
.calculator-container p {
line-height: 1.6;
color: #555;
}
.input-section {
margin-top: 20px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 15px;
align-items: center;
}
.input-section label {
font-weight: bold;
color: #444;
text-align: right;
padding-right: 10px;
}
.input-section input[type="number"] {
width: calc(100% – 20px);
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box;
}
.calculator-container button {
display: block;
width: 100%;
padding: 12px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
margin-top: 20px;
transition: background-color 0.3s ease;
}
.calculator-container button:hover {
background-color: #0056b3;
}
#result {
margin-top: 25px;
padding: 15px;
border-top: 1px solid #eee;
background-color: #fff;
border-radius: 5px;
}
#result p {
margin-bottom: 10px;
}
#result strong {
color: #0056b3;
}
/* Responsive adjustments */
@media (max-width: 480px) {
.input-section {
grid-template-columns: 1fr;
}
.input-section label {
text-align: left;
padding-right: 0;
}
.input-section input[type="number"] {
width: 100%;
}
}