Calculate your mortgage payments, total interest paid, and payoff time when making bi-weekly payments, including the option for extra payments.
Estimated Payoff Time:
Original Term:
Time Saved:
Total Payments Made:
Total Payments:
Total Interest Paid:
Total Interest:
Final Bi-Weekly Payment Amount:
Bi-Weekly Payment:
Understanding the Bi-Weekly Mortgage Calculator
A bi-weekly mortgage payment plan can significantly accelerate the payoff of your home loan and reduce the total interest you pay over its lifetime. This calculator helps you visualize the benefits of making extra payments on a bi-weekly schedule.
How Bi-Weekly Payments Work
Traditionally, mortgages are paid monthly. A bi-weekly payment plan involves paying half of your monthly mortgage payment every two weeks. Since there are 52 weeks in a year, this results in 26 half-payments, which equals 13 full monthly payments annually. This extra full monthly payment goes directly towards the principal balance, leading to faster loan repayment.
The Role of Extra Payments
This calculator goes a step further by allowing you to input an additional fixed amount to be paid with each bi-weekly installment. For example, if your calculated bi-weekly payment is $750 and you add an extra $100, your total bi-weekly payment becomes $850. This further accelerates principal reduction and interest savings.
The Math Behind the Calculator
The calculator performs the following calculations:
Monthly Payment Calculation (P&I): It first calculates the standard monthly principal and interest (P&I) payment using the loan amount, annual interest rate, and loan term. The formula used is a standard mortgage payment formula:
M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1]
Where:
M = Monthly Payment
P = Principal Loan Amount
i = Monthly Interest Rate (Annual Rate / 12)
n = Total Number of Payments (Loan Term in Years * 12)
Bi-Weekly Payment Base: The calculated monthly payment is divided by 2 to get the base bi-weekly payment.
Total Bi-Weekly Payment: The base bi-weekly payment is added to your specified extra bi-weekly payment amount.
Amortization Simulation: The calculator then simulates the loan amortization process on a bi-weekly basis, factoring in the total bi-weekly payment (base + extra). Each payment is applied: first to interest accrued since the last payment, and then the remainder to the principal.
Interest Calculation: Interest accrued between payments is calculated daily or based on the outstanding balance at the time of payment. The formula for interest for a given period is:
Interest = (Remaining Principal Balance) * (Daily Interest Rate)
Where:
Daily Interest Rate = Annual Interest Rate / 365 (or 360, depending on convention, here assumed 365 for simplicity)
Note: The calculator simplifies this by applying payments every two weeks, effectively making 26 payments a year. The exact interest calculation can be complex due to payment timing, but this simulation provides a very close approximation.
Payoff Time and Savings: By simulating payments until the principal reaches zero, the calculator determines the actual payoff time, the number of payments made, and the total interest paid. This is then compared to the original loan term to calculate time saved and total interest saved.
Key Benefits
Faster Equity Building: Significantly increase your home equity by paying down the principal faster.
Reduced Interest Costs: Save thousands, or even tens of thousands, of dollars in interest over the life of the loan.
Debt Freedom: Achieve mortgage freedom years ahead of schedule.
Considerations
Ensure your mortgage lender allows bi-weekly payments or that you have a system to automatically apply your extra payments towards the principal. Some lenders may charge fees for bi-weekly plans, so verify this with them. Communicate clearly with your lender that your additional payments should be applied to the principal balance.
function calculateBiWeeklyMortgage() {
var loanAmount = parseFloat(document.getElementById("loanAmount").value);
var annualInterestRate = parseFloat(document.getElementById("annualInterestRate").value);
var loanTermYears = parseFloat(document.getElementById("loanTermYears").value);
var extraPaymentBiWeekly = parseFloat(document.getElementById("extraPaymentBiWeekly").value);
// Input validation
if (isNaN(loanAmount) || loanAmount <= 0 ||
isNaN(annualInterestRate) || annualInterestRate < 0 ||
isNaN(loanTermYears) || loanTermYears <= 0 ||
isNaN(extraPaymentBiWeekly) || extraPaymentBiWeekly < 0) {
document.getElementById("result").innerHTML = 'Please enter valid positive numbers for all fields.';
document.getElementById("timeSaved").innerHTML = '-';
document.getElementById("totalPayments").innerHTML = '-';
document.getElementById("totalInterest").innerHTML = '-';
document.getElementById("finalBiWeeklyPayment").innerHTML = '-';
document.getElementById("originalTermFormatted").innerHTML = '-';
return;
}
var monthlyInterestRate = (annualInterestRate / 100) / 12;
var numberOfPayments = loanTermYears * 12;
var originalTermFormatted = loanTermYears + " years";
// Calculate standard monthly payment (P&I)
var monthlyPayment = 0;
if (monthlyInterestRate > 0) {
monthlyPayment = loanAmount * (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments)) / (Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1);
} else {
monthlyPayment = loanAmount / numberOfPayments; // Simple division if interest rate is 0
}
var baseBiWeeklyPayment = monthlyPayment / 2;
var totalBiWeeklyPayment = baseBiWeeklyPayment + extraPaymentBiWeekly;
// Amortization Simulation
var remainingBalance = loanAmount;
var totalInterestPaid = 0;
var totalPaymentsMade = 0;
var paymentCount = 0;
var maxPayments = 10000; // Safety break for potentially infinite loops
while (remainingBalance > 0 && paymentCount remainingBalance) {
principalPayment = remainingBalance;
interestForPeriod = totalBiWeeklyPayment – principalPayment; // Adjust interest if we pay off early
if (interestForPeriod 0) timeSavedFormatted += yearsSaved + " year" + (yearsSaved > 1 ? "s" : "");
if (monthsSaved > 0) {
if (timeSavedFormatted.length > 0) timeSavedFormatted += ", ";
timeSavedFormatted += monthsSaved + " month" + (monthsSaved > 1 ? "s" : "");
}
if (timeSavedFormatted.length === 0) timeSavedFormatted = "Less than a month";
var totalPaymentsFormatted = paymentCount + " bi-weekly payments";
var finalBiWeeklyPaymentFormatted = "$" + totalBiWeeklyPayment.toFixed(2);
var totalInterestFormatted = "$" + totalInterestPaid.toFixed(2);
document.getElementById("timeSaved").innerHTML = timeSavedFormatted;
document.getElementById("totalPayments").innerHTML = totalPaymentsFormatted;
document.getElementById("totalInterest").innerHTML = totalInterestFormatted;
document.getElementById("finalBiWeeklyPayment").innerHTML = finalBiWeeklyPaymentFormatted;
document.getElementById("originalTermFormatted").innerHTML = originalTermFormatted;
document.getElementById("result").innerHTML = ""; // Clear any previous error messages
}