Calculate how much faster you can pay off your mortgage and the total interest saved by making extra payments.
Results
Standard Payoff Time: Calculating…
Accelerated Payoff Time: Calculating…
Time Saved: Calculating…
Total Interest Saved: Calculating…
Understanding Your Mortgage Paydown
Paying down your mortgage early can be a powerful financial strategy. By making extra payments, you not only reduce the loan's term but also significantly decrease the total amount of interest paid over the life of the loan. This calculator helps you visualize the impact of additional payments on your mortgage payoff timeline and overall savings.
How the Calculator Works
This calculator uses standard mortgage amortization formulas to project your loan's payoff. It first calculates the payoff time and total interest for your current mortgage terms (principal, interest rate, and monthly payment). Then, it recalculates these figures with the addition of an extra monthly payment. The difference between these two scenarios highlights the benefits of accelerating your mortgage payments.
Key Calculations:
Monthly Interest Rate: The annual interest rate is divided by 12.
Standard Payoff Time: Calculated using the loan balance, monthly interest rate, and your current monthly payment. This is typically done iteratively or using the loan amortization formula:
N = -log(1 - (P * r) / M) / log(1 + r) Where:
N = Number of payments (months)
P = Principal loan amount
r = Monthly interest rate
M = Monthly payment
The result N is then converted into years and months.
Accelerated Payoff Time: Calculated using the same formula but with the monthly payment increased by your specified extra payment amount.
Time Saved: The difference between the standard payoff time and the accelerated payoff time.
Total Interest Paid (Standard): Calculated by subtracting the original principal from the total amount paid over the standard payoff period (standard monthly payment * number of standard months).
Total Interest Paid (Accelerated): Calculated by subtracting the original principal from the total amount paid over the accelerated payoff period ( (standard monthly payment + extra payment) * number of accelerated months).
Total Interest Saved: The difference between the total interest paid under the standard scenario and the accelerated scenario.
When to Use This Calculator
Budgeting for Extra Payments: Determine how much extra you can afford to pay monthly and see its impact.
Financial Planning: Understand the long-term savings and how it affects your financial goals.
Debt Reduction Strategy: Compare paying extra on your mortgage versus other debt repayment options.
Refinancing Decisions: Evaluate if a shorter loan term with a higher payment is beneficial compared to your current loan with extra payments.
Making informed decisions about your mortgage can lead to substantial financial benefits. Use this tool to empower your financial journey.
function calculatePaydown() {
var principal = parseFloat(document.getElementById("principal").value);
var interestRate = parseFloat(document.getElementById("interestRate").value) / 100;
var monthlyPayment = parseFloat(document.getElementById("monthlyPayment").value);
var extraPayment = parseFloat(document.getElementById("extraPayment").value);
var resultElement = document.getElementById("result");
var payoffTimeNormalElement = document.getElementById("payoffTimeNormal");
var payoffTimeExtraElement = document.getElementById("payoffTimeExtra");
var timeSavedElement = document.getElementById("timeSaved");
var interestSavedElement = document.getElementById("interestSaved");
if (isNaN(principal) || isNaN(interestRate) || isNaN(monthlyPayment)) {
resultElement.innerHTML = "
Error
Please enter valid numbers for principal, interest rate, and current monthly payment.";
return;
}
if (monthlyPayment <= (principal * (interestRate / 12))) {
resultElement.innerHTML = "
Error
Your monthly payment is too low to cover the interest. Please increase your monthly payment.";
return;
}
if (extraPayment 0) {
var interestThisMonth = remainingBalanceNormal * monthlyInterestRate;
var principalThisMonth = monthlyPayment – interestThisMonth;
if (principalThisMonth 10000) { // Prevent infinite loops for edge cases
monthsNormal = Infinity;
break;
}
}
// Calculate accelerated payoff
var monthsExtra = 0;
var remainingBalanceExtra = principal;
var totalMonthlyPaymentExtra = monthlyPayment + extraPayment;
if (totalMonthlyPaymentExtra 0) {
var interestThisMonth = remainingBalanceExtra * monthlyInterestRate;
var principalThisMonth = totalMonthlyPaymentExtra – interestThisMonth;
if (principalThisMonth 10000) { // Prevent infinite loops for edge cases
monthsExtra = Infinity;
break;
}
}
}
var yearsNormal = Math.floor(monthsNormal / 12);
var monthsRemainingNormal = Math.round(monthsNormal % 12);
var payoffTimeNormalStr = (monthsNormal === Infinity) ? "Never" : yearsNormal + " years and " + monthsRemainingNormal + " months";
var yearsExtra = Math.floor(monthsExtra / 12);
var monthsRemainingExtra = Math.round(monthsExtra % 12);
var payoffTimeExtraStr = (monthsExtra === Infinity) ? "Never" : yearsExtra + " years and " + monthsRemainingExtra + " months";
var timeSavedMonths = monthsNormal – monthsExtra;
var timeSavedYears = Math.floor(timeSavedMonths / 12);
var timeSavedMonthsRemaining = Math.round(timeSavedMonths % 12);
var timeSavedStr = (monthsNormal === Infinity || monthsExtra === Infinity) ? "N/A" : timeSavedYears + " years and " + timeSavedMonthsRemaining + " months";
totalInterestSaved = totalInterestPaidNormal – totalInterestPaidExtra;
var interestSavedStr = (totalInterestSaved < 0 || monthsNormal === Infinity || monthsExtra === Infinity) ? "N/A" : "$" + totalInterestSaved.toFixed(2);
var interestPaidNormalStr = (monthsNormal === Infinity) ? "N/A" : "$" + totalInterestPaidNormal.toFixed(2);
var interestPaidExtraStr = (monthsExtra === Infinity) ? "N/A" : "$" + totalInterestPaidExtra.toFixed(2);
payoffTimeNormalElement.innerHTML = "Standard Payoff Time: " + payoffTimeNormalStr;
payoffTimeExtraElement.innerHTML = "Accelerated Payoff Time: " + payoffTimeExtraStr;
timeSavedElement.innerHTML = "Time Saved: " + timeSavedStr;
interestSavedElement.innerHTML = "Total Interest Saved: " + interestSavedStr;
// Add total interest paid for context
resultElement.innerHTML += "Total Interest (Standard): " + interestPaidNormalStr + "";
resultElement.innerHTML += "Total Interest (Accelerated): " + interestPaidExtraStr + "";
}