Mortgage Affordability Calculator

ANALife Services AuthorityNational Calculator Authority›Mortgage Affordability Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Mortgage Affordability Calculator

Estimate the maximum home price you can afford based on your gross income, monthly debts, down payment, and current interest rates using standard lending guidelines.

Annual Gross Income ($)

Monthly Debt Payments ($) (car, student loans, credit cards, etc.)

Down Payment ($)

Annual Interest Rate (%)

Loan Term (Years)

30 Years 20 Years 15 Years 10 Years

Annual Property Tax Rate (%)

Annual Home Insurance ($)

Monthly HOA Fees ($) (if applicable)

Calculate Affordability

function morCalc() { var resultDiv = document.getElementById('mor_result');

var annualIncome = parseFloat(document.getElementById('mor_annual_income').value); var monthlyDebts = parseFloat(document.getElementById('mor_monthly_debts').value) || 0; var downPayment = parseFloat(document.getElementById('mor_down_payment').value) || 0; var annualRate = parseFloat(document.getElementById('mor_interest_rate').value); var loanTermYears = parseInt(document.getElementById('mor_loan_term').value); var propTaxRate = parseFloat(document.getElementById('mor_property_tax_rate').value) || 1.2; var annualInsurance = parseFloat(document.getElementById('mor_home_insurance').value) || 1200; var monthlyHOA = parseFloat(document.getElementById('mor_hoa_fees').value) || 0;

// --- Validation --- if (isNaN(annualIncome) || annualIncome ⚠ Please enter a valid annual gross income.'; return; } if (isNaN(annualRate) || annualRate 25) { resultDiv.style.display = 'block'; resultDiv.innerHTML = '⚠ Please enter a valid interest rate between 0.1% and 25%.'; return; } if (downPayment ⚠ Down payment cannot be negative.'; return; }

// --- Core Calculations --- // Monthly gross income var monthlyIncome = annualIncome / 12;

// Standard lending ratios: // Front-end ratio (housing expense ratio): max 28% of gross monthly income // Back-end ratio (total debt-to-income ratio): max 36% of gross monthly income var frontEndLimit = monthlyIncome * 0.28; var backEndLimit = monthlyIncome * 0.36;

// Maximum allowable total housing payment (PITI + HOA) // Back-end: total housing + existing debts ⚠ Your existing monthly debts exceed the maximum allowable debt-to-income ratio. Consider reducing debts before applying for a mortgage.'; return; }

// Fixed monthly costs (insurance + HOA); property tax depends on home price var monthlyInsurance = annualInsurance / 12;

// Available for P&I + property tax // Property tax monthly = (homePrice * propTaxRate/100) / 12 // Let P = max loan amount, H = home price = P + downPayment // Monthly P&I = P * r(1+r)^n / ((1+r)^n - 1) where r = monthly rate, n = months // Monthly prop tax = H * propTaxRate / 1200 // Equation: P&I + HpropTaxRate/1200 + monthlyInsurance + monthlyHOA = maxHousingPayment // P&I = P * mortgageFactor // H = P + downPayment // P * mortgageFactor + (P + downPayment) * propTaxRate/1200 + monthlyInsurance + monthlyHOA = maxHousingPayment // P * (mortgageFactor + propTaxRate/1200) = maxHousingPayment - downPayment*propTaxRate/1200 - monthlyInsurance - monthlyHOA

var monthlyRate = annualRate / 100 / 12; var numPayments = loanTermYears * 12;

// Mortgage payment factor (per dollar of loan) var mortgageFactor; if (monthlyRate === 0) { mortgageFactor = 1 / numPayments; } else { var compounded = Math.pow(1 + monthlyRate, numPayments); mortgageFactor = (monthlyRate * compounded) / (compounded - 1); }

var propTaxMonthlyFactor = propTaxRate / 100 / 12; // per dollar of home price

// Solve for max loan amount P var numerator = maxHousingPayment - downPayment * propTaxMonthlyFactor - monthlyInsurance - monthlyHOA; var denominator = mortgageFactor + propTaxMonthlyFactor;

if (numerator ⚠ Fixed costs (insurance, HOA, property tax on down payment) already exceed your maximum housing budget. Consider increasing income or reducing fixed costs.'; return; }

var maxLoanAmount = numerator / denominator; var maxHomePrice = maxLoanAmount + downPayment;

if (maxHomePrice ⚠ Unable to calculate a positive affordable home price with the given inputs.'; return; }

// Verify actual monthly payment breakdown
var compounded2 = Math.pow(1 + monthlyRate, numPayments);
var monthlyPI = monthlyRate === 0
? maxLoanAmount / numPayments
maxLoanAmount * (monthlyRate * compounded2) / (compounded2 - 1); var monthlyPropTax = (maxHomePrice * propTaxRate / 100) / 12; var totalMonthly = monthlyPI + monthlyPropTax + monthlyInsurance + monthlyHOA;

// DTI ratios var frontEndDTI = (totalMonthly / monthlyIncome) * 100; var backEndDTI = ((totalMonthly + monthlyDebts) / monthlyIncome) * 100;

// Down payment percentage var downPct = (downPayment / maxHomePrice) * 100;

// PMI note (if down payment 0) { // Typical PMI: 0.5%–1% of loan amount annually; use 0.75% estimate pmiMonthly = maxLoanAmount * 0.0075 / 12; pmiNote = 'Est. PMI (0.75%/yr)*$' + pmiMonthly.toFixed(2) + '/mo'; }

// Total interest paid over life of loan var totalPaid = monthlyPI * numPayments; var totalInterest = totalPaid - maxLoanAmount;

// Format currency function fmt(n) { return n.toLocaleString('en-US', {minimumFractionDigits: 0, maximumFractionDigits: 0}); } function fmt2(n) { return n.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); }

var pmiWarning = downPct ' + 'Maximum Affordable Home Price: $' + fmt(maxHomePrice) + '' + 'Maximum Loan Amount$' + fmt(maxLoanAmount) + '' + 'Down Payment$' + fmt(downPayment) + ' (' + downPct.toFixed(1) + '%)' + 'Monthly Payment Breakdown' + 'Principal & Interest (P&I)$' + fmt2(monthlyPI) + '' + 'Property Tax (' + propTaxRate + '%/yr)$' + fmt2(monthlyPropTax) + '' + 'Home Insurance$' + fmt2(monthlyInsurance) + '' + 'HOA Fees$' + fmt2(monthlyHOA) + '' + pmiNote + 'Total Housing Payment (PITI+HOA)$' + fmt2(totalMonthly) + '' + 'Debt-to-Income Ratios' + 'Front-End DTI (housing / income)' + frontEndDTI.toFixed(1) + '% (limit: 28%)' + 'Back-End DTI (all debts / income)' + backEndDTI.toFixed(1) + '% (limit: 36%)' + 'Loan Summary' + 'Loan Term' + loanTermYears + ' years (' + numPayments + ' payments)' + 'Interest Rate' + annualRate + '% APR' + 'Total Interest Paid$' + fmt(totalInterest) + '' + 'Total Amount Paid (P&I only)$' + fmt(totalPaid) + '' + '' + pmiWarning; }

#### Formulas Used

1. Maximum Housing Payment (PITI + HOA):

Front-End Limit = Gross Monthly Income × 0.28 Back-End Limit = Gross Monthly Income × 0.36 − Monthly Debts Max Housing Payment = min(Front-End Limit, Back-End Limit)

2. Maximum Loan Amount (P):

Solving: P × MF + (P + D) × (t/1200) + Imo + HOA = Max Housing Payment ⇒ P = [Max Housing Payment − D × (t/1200) − Imo − HOA] / [MF + (t/1200)]

Where:

3. Maximum Home Price: Home Price = Max Loan Amount + Down Payment

4. DTI Ratios:

Front-End DTI = Total Housing Payment / Gross Monthly Income Back-End DTI = (Total Housing Payment + Monthly Debts) / Gross Monthly Income

#### Assumptions & References

More Calculators

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References