Calculate your monthly savings and determine your break-even point.
Current Monthly Payment (P&I):$0.00
New Monthly Payment (P&I):$0.00
Monthly Savings:$0.00
Break-Even Period:0 months
Total Interest Saved:$0.00
How to Use the Mortgage Refinance Calculator
Deciding whether to refinance your mortgage requires more than just looking at a lower interest rate. You must account for the closing costs and the break-even point. This calculator helps you visualize exactly how much you will save monthly and how long it will take for those savings to cover the cost of the refinance.
Understanding the Break-Even Point
The break-even point is the moment when the total monthly savings from your lower interest rate equal the upfront costs of the refinance. For example, if your refinance costs $5,000 and you save $200 per month, your break-even point is 25 months. If you plan to sell your home before that 25-month mark, refinancing may actually lose you money.
Key Factors in Your Calculation
Loan Balance: The remaining principal on your current mortgage.
Interest Rate: Comparing your current annual percentage rate with the new offered rate.
Loan Term: Note that resetting a 30-year mortgage after already paying for 5 years means you are extending your debt timeline.
Closing Costs: Typically 2% to 5% of the loan amount, including appraisal fees, title insurance, and origination fees.
Example Scenario
Imagine you have a $300,000 balance at 6.5% interest with 25 years remaining. Your current payment is roughly $2,025. If you refinance into a new 30-year loan at 4.5%, your new payment drops to $1,520. That is a monthly savings of $505. If closing costs are $6,000, your break-even point is approximately 12 months. Over the remaining life of the loan, the interest savings could exceed $100,000 depending on the amortization schedule.
function calculateRefi() {
var balance = parseFloat(document.getElementById('currentBalance').value);
var oldRate = parseFloat(document.getElementById('currentRate').value) / 100 / 12;
var newRate = parseFloat(document.getElementById('newRate').value) / 100 / 12;
var newTermMonths = parseFloat(document.getElementById('loanTerm').value) * 12;
var remainingMonths = parseFloat(document.getElementById('remainingYears').value) * 12;
var costs = parseFloat(document.getElementById('closingCosts').value);
if (isNaN(balance) || isNaN(oldRate) || isNaN(newRate) || isNaN(newTermMonths) || isNaN(costs)) {
alert("Please enter valid numbers in all fields.");
return;
}
// Calculate Old Payment (Principal and Interest)
// Formula: P * [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
var oldPayment = (balance * oldRate * Math.pow(1 + oldRate, remainingMonths)) / (Math.pow(1 + oldRate, remainingMonths) – 1);
// Calculate New Payment
var newPayment = (balance * newRate * Math.pow(1 + newRate, newTermMonths)) / (Math.pow(1 + newRate, newTermMonths) – 1);
var monthlySavings = oldPayment – newPayment;
var breakEvenMonths = costs / monthlySavings;
// Total Interest Savings Calculation
var totalOldInterest = (oldPayment * remainingMonths) – balance;
var totalNewInterest = (newPayment * newTermMonths) – balance;
var totalInterestSaved = totalOldInterest – totalNewInterest;
// Display Results
document.getElementById('refiResults').style.display = 'block';
document.getElementById('oldPaymentText').innerText = '$' + oldPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('newPaymentText').innerText = '$' + newPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('monthlySavingsText').innerText = '$' + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings > 0) {
document.getElementById('breakEvenText').innerText = Math.ceil(breakEvenMonths) + " months";
document.getElementById('totalInterestSavedText').innerText = '$' + totalInterestSaved.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
} else {
document.getElementById('breakEvenText').innerText = "Never (No savings)";
document.getElementById('totalInterestSavedText').innerText = "N/A";
}
}