Amortization Schedule Calculator
This calculator helps you understand how your loan principal and interest payments are distributed over the life of the loan. Amortization is the process of paying off a debt over time in equal installments. Each payment you make consists of two parts: principal and interest. Initially, a larger portion of your payment goes towards interest, and a smaller portion goes towards the principal. As you continue to make payments, this ratio gradually shifts, with more going towards the principal and less towards interest. This calculator will generate an amortization schedule showing the breakdown for each payment period.
Amortization Schedule
Enter the loan details above and click "Calculate Amortization" to see the schedule.
Amortization Schedule
"; // Clear previous results if (isNaN(loanAmount) || isNaN(annualInterestRate) || isNaN(loanTermYears) || loanAmount <= 0 || annualInterestRate < 0 || loanTermYears <= 0) { resultsDiv.innerHTML += "Please enter valid positive numbers for all fields."; return; } var monthlyInterestRate = (annualInterestRate / 100) / paymentFrequency; var numberOfPayments = loanTermYears * paymentFrequency; // Calculate monthly payment using the loan payment formula var monthlyPayment; if (monthlyInterestRate === 0) { monthlyPayment = loanAmount / numberOfPayments; } else { monthlyPayment = loanAmount * (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments)) / (Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1); } var remainingBalance = loanAmount; var totalInterestPaid = 0; var totalPrincipalPaid = 0; var tableHtml = "| Payment # | Payment Date | Payment Amount | Principal Paid | Interest Paid | Remaining Balance |
|---|---|---|---|---|---|
| " + i + " | "; tableHtml += "TBD | "; // Placeholder for payment date, can be complex to calculate accurately without start date tableHtml += "$" + monthlyPayment.toFixed(2) + " | "; tableHtml += "$" + principalPayment.toFixed(2) + " | "; tableHtml += "$" + interestPayment.toFixed(2) + " | "; tableHtml += "$" + remainingBalance.toFixed(2) + " | "; tableHtml += "