Mortgage Refinance Savings Calculator
Determine if refinancing your home loan saves you money after closing costs.
30 Years
20 Years
15 Years
10 Years
Calculation Results
Should You Refinance Your Mortgage?
Refinancing a mortgage involves replacing your existing loan with a new one, typically to secure a lower interest rate or change the loan term. While a lower rate is attractive, it is vital to calculate the Break-Even Point—the amount of time it takes for your monthly savings to cover the upfront closing costs.
How the Refinance Savings Calculation Works
To determine your potential savings, our calculator uses the standard amortization formula:
M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
- P = Principal loan balance
- i = Monthly interest rate (Annual rate / 12)
- n = Number of months (Years × 12)
Example Calculation
Imagine you have a $300,000 balance on a loan with a current payment of $1,800. You decide to refinance into a new 30-year loan at 4.5% interest with $5,000 in closing costs.
- New Payment: Based on 4.5%, your new payment would be approximately $1,520.06.
- Monthly Savings: $1,800 – $1,520.06 = $279.94.
- Break-Even: $5,000 / $279.94 = 17.8 months.
If you plan to stay in the home for longer than 18 months, this refinance would likely be a financially sound decision.
Key Factors to Consider
Before proceeding, remember that refinancing restarts the clock on your loan. If you were 10 years into a 30-year mortgage and refinance into a new 30-year term, you will be paying interest for a total of 40 years. Always check if a 15-year or 20-year term fits your budget to maximize long-term wealth building.
function calculateRefi() {
var loanBalance = parseFloat(document.getElementById(‘loanBalance’).value);
var currentPayment = parseFloat(document.getElementById(‘currentPayment’).value);
var newRate = parseFloat(document.getElementById(‘newRate’).value) / 100 / 12;
var newTermYears = parseFloat(document.getElementById(‘newTerm’).value);
var closingCosts = parseFloat(document.getElementById(‘closingCosts’).value);
var remainingMonths = parseFloat(document.getElementById(‘remainingMonths’).value);
if (isNaN(loanBalance) || isNaN(currentPayment) || isNaN(newRate) || isNaN(closingCosts)) {
alert(“Please enter valid numerical values.”);
return;
}
var n = newTermYears * 12;
// Monthly Payment Formula: P * [i(1+i)^n] / [(1+i)^n – 1]
var x = Math.pow(1 + newRate, n);
var newMonthlyPayment = (loanBalance * x * newRate) / (x – 1);
var monthlySavings = currentPayment – newMonthlyPayment;
var breakEvenMonths = closingCosts / monthlySavings;
// Total cost comparisons
var totalOldCost = currentPayment * remainingMonths;
var totalNewCost = (newMonthlyPayment * n) + closingCosts;
var totalInterestSavings = totalOldCost – totalNewCost;
// Display Results
document.getElementById(‘refi-results’).style.display = ‘block’;
document.getElementById(‘resNewPayment’).innerText = ‘$’ + newMonthlyPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings > 0) {
document.getElementById(‘resMonthlySavings’).innerText = ‘$’ + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById(‘resMonthlySavings’).style.color = ‘#28a745’;
document.getElementById(‘resBreakEven’).innerText = breakEvenMonths.toFixed(1) + ‘ Months’;
} else {
document.getElementById(‘resMonthlySavings’).innerText = ‘No Monthly Savings’;
document.getElementById(‘resMonthlySavings’).style.color = ‘#d9534f’;
document.getElementById(‘resBreakEven’).innerText = ‘N/A’;
}
if (totalInterestSavings > 0) {
document.getElementById(‘resTotalSavings’).innerText = ‘$’ + totalInterestSavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById(‘resTotalSavings’).style.color = ‘#28a745’;
} else {
document.getElementById(‘resTotalSavings’).innerText = ‘$’ + totalInterestSavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ‘ (Loss)’;
document.getElementById(‘resTotalSavings’).style.color = ‘#d9534f’;
}
}