This calculator helps you estimate how much house you can afford based on your income, debts, and desired loan terms. Remember, this is an estimate and your actual loan approval will depend on lender specifics, credit score, and other factors.
15 Years
30 Years
20 Years
25 Years
.calculator-container {
font-family: sans-serif;
border: 1px solid #ccc;
padding: 20px;
border-radius: 8px;
max-width: 500px;
margin: 20px auto;
background-color: #f9f9f9;
}
.calculator-container h2 {
text-align: center;
margin-bottom: 15px;
color: #333;
}
.calculator-container p {
font-size: 0.9em;
color: #555;
margin-bottom: 20px;
line-height: 1.5;
}
.input-section {
margin-bottom: 15px;
display: flex;
flex-direction: column;
}
.input-section label {
margin-bottom: 5px;
font-weight: bold;
color: #444;
}
.input-section input[type="number"],
.input-section select {
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 1em;
}
.input-section input[type="number"]::placeholder {
color: #aaa;
}
button {
background-color: #4CAF50;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 1.1em;
width: 100%;
margin-top: 10px;
transition: background-color 0.3s ease;
}
button:hover {
background-color: #45a049;
}
#result {
margin-top: 25px;
padding: 15px;
border: 1px dashed #4CAF50;
background-color: #e8f5e9;
border-radius: 5px;
text-align: center;
font-size: 1.1em;
color: #333;
}
#result strong {
color: #4CAF50;
}
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 = parseInt(document.getElementById("loanTerm").value);
var resultDiv = document.getElementById("result");
if (isNaN(annualIncome) || annualIncome < 0 ||
isNaN(monthlyDebt) || monthlyDebt < 0 ||
isNaN(downPayment) || downPayment < 0 ||
isNaN(interestRate) || interestRate < 0 ||
isNaN(loanTerm) || loanTerm <= 0) {
resultDiv.innerHTML = "Error: Please enter valid positive numbers for all fields.";
return;
}
// Rule of thumb: Housing costs (PITI) should not exceed 28% of gross monthly income.
var maxMonthlyHousingPayment = annualIncome / 12 * 0.28;
// Rule of thumb: Total debt payments (including PITI) should not exceed 36% of gross monthly income.
var maxTotalMonthlyObligations = annualIncome / 12 * 0.36;
// Calculate maximum allowed monthly mortgage payment (P&I only)
// This is the portion of the total debt that can go towards mortgage principal and interest.
var maxMortgagePrincipalAndInterest = maxTotalMonthlyObligations – monthlyDebt;
// Ensure the calculated P&I is not negative
if (maxMortgagePrincipalAndInterest 0 && numberOfPayments > 0) {
// Mortgage payment formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1]
// Rearranged to solve for P (Principal Loan Amount): P = M [ (1 + i)^n – 1] / [ i(1 + i)^n ]
maxLoanAmount = affordableMonthlyPayment * (Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1) / (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments));
} else if (affordableMonthlyPayment > 0 && monthlyInterestRate === 0) {
// If interest rate is 0, loan amount is simply monthly payment times number of payments
maxLoanAmount = affordableMonthlyPayment * numberOfPayments;
}
// Calculate the estimated maximum home price
var estimatedMaxHomePrice = maxLoanAmount + downPayment;
// Display the results
resultDiv.innerHTML = "Estimated Maximum Home Price: $" + estimatedMaxHomePrice.toFixed(2) + "" +
"Estimated Maximum Loan Amount: $" + maxLoanAmount.toFixed(2) + "" +
"Estimated Affordable Monthly P&I Payment: $" + affordableMonthlyPayment.toFixed(2) + "" +
"Note: This is an estimate. Actual affordability may vary based on lender, credit score, property taxes, insurance, and other factors.";
}