Refinancing a mortgage can be one of the smartest financial moves a homeowner makes, but it isn't always a "slam dunk." To determine if refinancing is worth it, you must look beyond just the lower interest rate and consider the break-even point—the moment when your monthly savings finally outweigh the costs of getting the new loan.
How to Use the Mortgage Refinance Calculator
Our calculator simplifies the complex math of mortgage comparisons. To get an accurate result, you will need:
Current Balance: What you currently owe on your home.
New Interest Rate: The rate quoted by your lender for the new loan.
Closing Costs: Total fees including appraisal, origination, and title insurance (typically 2% to 5% of the loan amount).
Loan Term: Whether you are switching to a new 15-year or 30-year fixed mortgage.
Understanding Your Results
Monthly Savings: This is the immediate cash flow impact on your monthly budget. While a lower payment is great, remember that if you extend your loan term (e.g., from 20 years remaining to a new 30-year loan), you might pay more in interest over the long haul even if the rate is lower.
Lifetime Savings: This calculates the total interest you would have paid on your current loan versus the total interest plus closing costs on the new loan. This is the ultimate "wealth" metric.
The Break-Even Point: If your closing costs are $6,000 and you save $200 per month, it will take you 30 months to break even. If you plan to sell the house in two years, refinancing would actually lose you money.
Example Scenario
Imagine you have a $300,000 balance at 6.5% with 25 years left. Your current payment (principal and interest) is approximately $2,025. If you refinance into a new 30-year loan at 4.5% with $5,000 in closing costs:
New Monthly Payment: $1,520
Monthly Savings: $505
Break-Even Point: ~10 months
Total Interest Saved: Over $60,000 (depending on previous term)
function calculateRefi() {
var balance = parseFloat(document.getElementById('currentBalance').value);
var currentRate = parseFloat(document.getElementById('currentRate').value) / 100 / 12;
var remainingMonths = parseFloat(document.getElementById('remainingYears').value) * 12;
var newRate = parseFloat(document.getElementById('newRate').value) / 100 / 12;
var newMonths = parseFloat(document.getElementById('newYears').value) * 12;
var costs = parseFloat(document.getElementById('closingCosts').value);
if (isNaN(balance) || isNaN(currentRate) || isNaN(newRate) || isNaN(costs)) {
alert("Please enter valid numeric values.");
return;
}
// Current Monthly Payment Formula: P * [i(1+i)^n] / [(1+i)^n – 1]
var currentPayment = (balance * currentRate * Math.pow(1 + currentRate, remainingMonths)) / (Math.pow(1 + currentRate, remainingMonths) – 1);
// New Monthly Payment
var newPayment = (balance * newRate * Math.pow(1 + newRate, newMonths)) / (Math.pow(1 + newRate, newMonths) – 1);
var monthlySavings = currentPayment – newPayment;
// Total Cost of Current Loan (remaining)
var totalCurrentCost = currentPayment * remainingMonths;
// Total Cost of New Loan (including closing costs)
var totalNewCost = (newPayment * newMonths) + costs;
var lifetimeSavings = totalCurrentCost – totalNewCost;
var breakEvenMonths = costs / monthlySavings;
// Display Results
document.getElementById('refi-results').style.display = 'block';
document.getElementById('resNewPayment').innerText = '$' + newPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMonthlySavings').innerText = '$' + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resLifetimeSavings').innerText = '$' + lifetimeSavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings > 0) {
document.getElementById('resBreakeven').innerText = Math.ceil(breakEvenMonths) + " Months";
document.getElementById('breakEvenMsg').innerText = "You will recover your refinancing costs in approximately " + (Math.ceil(breakEvenMonths / 12 * 10) / 10) + " years.";
} else {
document.getElementById('resBreakeven').innerText = "Never";
document.getElementById('breakEvenMsg').innerText = "Your new monthly payment is higher than your current one. Refinancing may not be beneficial unless you are significantly shortening the term.";
}
}