Determine how much you could save by refinancing your current home loan.
Current Monthly Payment:
New Monthly Payment:
Monthly Savings:
Break-Even Period (Months):
Lifetime Interest Savings:
How to Use the Refinance Savings Calculator
Deciding to refinance your mortgage is a significant financial move. This calculator helps you analyze whether the lower interest rate justifies the closing costs associated with a new loan. To get the most accurate result, follow these steps:
Current Loan Balance: Enter the remaining principal balance on your current mortgage statement.
Current Interest Rate: The annual percentage rate (APR) you are currently paying.
Remaining Term: How many years are left until your current mortgage is paid off?
New Interest Rate: The rate quoted by your lender for the refinance.
Refinance Closing Costs: Typically 2% to 5% of the loan amount, including appraisal, origination, and title fees.
Understanding the Results
The Break-Even Period is the most critical metric. This represents the number of months it will take for your monthly savings to cover the total cost of the refinance. If you plan to sell your home before reaching the break-even point, refinancing may actually cost you more money than you save.
Example Scenario
Imagine you have a $350,000 balance on a loan at 6.5% interest with 25 years remaining. If you refinance into a new 30-year loan at 5.25% with $5,000 in closing costs:
Your monthly payment drops from approximately $2,363 to $1,932.
You save $431 per month.
Your break-even point is roughly 12 months.
Over the total life of the new loan, despite extending the term, you could potentially save thousands in interest costs if the rate reduction is significant enough.
Is Refinancing Right for You?
A general rule of thumb used to be that you should refinance if you can lower your rate by at least 1%. However, with modern lean-refinance options, even a 0.5% drop can be beneficial if you plan to stay in the home long-term. Always consider your long-term goals and consult with a financial advisor before making final decisions.
function calculateRefinance() {
var currentBalance = parseFloat(document.getElementById('currentBalance').value);
var currentRate = parseFloat(document.getElementById('currentRate').value) / 100 / 12;
var remainingYears = parseFloat(document.getElementById('remainingYears').value);
var remainingMonths = remainingYears * 12;
var newRate = parseFloat(document.getElementById('newRate').value) / 100 / 12;
var newTermYears = parseFloat(document.getElementById('newTerm').value);
var newTermMonths = newTermYears * 12;
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
if (isNaN(currentBalance) || isNaN(currentRate) || isNaN(remainingMonths) || isNaN(newRate) || isNaN(newTermMonths) || isNaN(closingCosts)) {
alert('Please enter valid numbers in all fields.');
return;
}
// Current Monthly Payment Logic
var currentMonthly = (currentBalance * currentRate * Math.pow(1 + currentRate, remainingMonths)) / (Math.pow(1 + currentRate, remainingMonths) – 1);
// New Monthly Payment Logic
var newMonthly = (currentBalance * newRate * Math.pow(1 + newRate, newTermMonths)) / (Math.pow(1 + newRate, newTermMonths) – 1);
// Savings Logic
var monthlySavings = currentMonthly – newMonthly;
var breakEven = closingCosts / monthlySavings;
// Total Interest Paid Calculations
var totalCurrentInterest = (currentMonthly * remainingMonths) – currentBalance;
var totalNewInterest = (newMonthly * newTermMonths) – currentBalance;
var totalInterestSavings = totalCurrentInterest – totalNewInterest;
// Formatting Results
document.getElementById('resCurrentMonthly').innerText = '$' + currentMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resNewMonthly').innerText = '$' + newMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMonthlySavings').innerText = '$' + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings > 0) {
document.getElementById('resBreakEven').innerText = breakEven.toFixed(1) + ' Months';
} else {
document.getElementById('resBreakEven').innerText = 'No Break-Even (Costs increase)';
}
document.getElementById('resTotalSavings').innerText = '$' + totalInterestSavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Display Results Div
document.getElementById('calcResults').style.display = 'block';
}