Understanding how your mortgage is paid down over time is crucial. This calculator helps you visualize your amortization schedule, showing how much of each payment goes towards principal and interest, and your remaining balance over the life of your loan.
Monthly
Bi-Weekly
Weekly
Amortization Schedule
Enter the loan details above and click "Calculate Amortization" to see your schedule.
";
table += "";
table += "";
var remainingBalance = loanAmount;
var totalInterestPaid = 0;
var totalPrincipalPaid = 0;
for (var i = 1; i <= numberOfPayments; i++) {
var interestPayment = remainingBalance * monthlyInterestRate;
var principalPayment = monthlyPayment – interestPayment;
// Adjust the last payment to account for rounding
if (i === numberOfPayments) {
principalPayment = remainingBalance;
monthlyPayment = principalPayment + interestPayment;
}
remainingBalance -= principalPayment;
totalInterestPaid += interestPayment;
totalPrincipalPaid += principalPayment;
if (remainingBalance < 0) { // Ensure remaining balance doesn't go below zero due to rounding
remainingBalance = 0;
}
// Simple date approximation for demonstration
var paymentDate = new Date();
paymentDate.setMonth(paymentDate.getMonth() + i);
var formattedDate = paymentDate.toLocaleDateString(); // Use locale-specific formatting
table += "
";
table += "
" + i + "
";
table += "
" + formattedDate + "
";
table += "
$" + monthlyPayment.toFixed(2) + "
";
table += "
$" + principalPayment.toFixed(2) + "
";
table += "
$" + interestPayment.toFixed(2) + "
";
table += "
$" + remainingBalance.toFixed(2) + "
";
table += "
";
}
table += "";
table += "
";
resultDiv.innerHTML = table;
var summary = "Summary:";
summary += "Your estimated monthly payment: $" + monthlyPayment.toFixed(2) + "";
summary += "Total principal paid: $" + totalPrincipalPaid.toFixed(2) + "";
summary += "Total interest paid over the life of the loan: $" + totalInterestPaid.toFixed(2) + "";
summary += "Total amount paid: $" + (totalPrincipalPaid + totalInterestPaid).toFixed(2) + "";
resultDiv.innerHTML = summary + resultDiv.innerHTML;
}