Mortgage Amortization Math, Explained with Code
Every mortgage calculator hides the same elegant math: the amortization formula. Here's the full breakdown with JavaScript.
Skip the math with the free Mortgage Calculator — monthly payment, total interest, and payoff scenarios.
The core formula
function monthlyPayment(principal, annualRate, years) {
const r = annualRate / 12;
const n = years * 12;
if (r === 0) return principal / n;
const factor = Math.pow(1 + r, n);
return principal * (r * factor) / (factor - 1);
}
// $400,000 loan, 6.5% APR, 30 years → $2,528.27/mo
Amortization schedule
function amortizationSchedule(principal, annualRate, years) {
const r = annualRate / 12;
const payment = monthlyPayment(principal, annualRate, years);
let balance = principal;
const schedule = [];
for (let month = 1; month <= years * 12; month++) {
const interest = balance * r;
const principalPaid = payment - interest;
balance -= principalPaid;
schedule.push({ month, interest: +interest.toFixed(2), principal: +principalPaid.toFixed(2), balance: +Math.max(balance, 0).toFixed(2) });
if (balance <= 0) break;
}
return schedule;
}
Extra payments
function payoffWithExtra(principal, annualRate, years, extraMonthly) {
const r = annualRate / 12;
const basePayment = monthlyPayment(principal, annualRate, years);
let balance = principal, months = 0, totalInterest = 0;
while (balance > 0) {
const interest = balance * r;
totalInterest += interest;
balance -= (basePayment + extraMonthly - interest);
months++;
}
return { years: (months / 12).toFixed(1), totalInterest: +totalInterest.toFixed(2) };
}
Calculate yours
The Mortgage Calculator runs all of this instantly — free, no signup, computed locally in your browser.
Top comments (0)