Calculate your monthly savings and break-even point
Monthly Savings
$0.00
Break-even Point
0 Months
Lifetime Interest Savings
$0.00
Should You Refinance Your Mortgage?
Deciding to refinance your home is a major financial move. While a lower interest rate is the primary motivator, it is crucial to understand the "break-even point"—the moment your monthly savings have officially covered the upfront closing costs of the new loan.
Key Factors to Consider
Interest Rate Differential: Traditionally, experts suggest refinancing if you can lower your rate by at least 0.75% to 1%.
Closing Costs: You will typically pay 2% to 5% of the loan amount in fees, including appraisal, title insurance, and origination fees.
Time in Home: If you plan to sell the property within the next 2-3 years, you might not reach the break-even point, making the refinance a net loss.
Loan Term: Switching from a 30-year to a 15-year mortgage increases your monthly payment but drastically reduces the total interest paid over time.
How to Use This Calculator
To get an accurate estimate, follow these steps:
Enter your Current Loan Balance from your most recent mortgage statement.
Input your Closing Costs. If you aren't sure, 3% of the loan balance is a safe estimate for initial calculations.
Compare your Current Interest Rate against the market rates offered for your credit profile.
Check the Break-even Point. If it takes 60 months to break even and you plan to move in 48 months, the refinance likely doesn't make sense.
Example Scenario
Imagine you have a $300,000 balance at 6.5% interest with 25 years remaining. Your current principal and interest payment is approximately $2,025. If you refinance into a new 30-year loan at 5.25% with $5,000 in closing costs:
Your new payment drops to $1,656.
You save $369 per month.
Your break-even point is roughly 14 months ($5,000 / $369).
If you stay in the home for the full 30 years, you could save over $10,000 in total interest compared to the original trajectory, despite extending the term.
function calculateRefinance() {
var currBal = parseFloat(document.getElementById('currBalance').value);
var currRate = parseFloat(document.getElementById('currRate').value) / 100 / 12;
var currTermMonths = parseFloat(document.getElementById('currTerm').value) * 12;
var newRate = parseFloat(document.getElementById('newRate').value) / 100 / 12;
var newTermMonths = parseFloat(document.getElementById('newTerm').value) * 12;
var refiFees = parseFloat(document.getElementById('refiFees').value);
if (isNaN(currBal) || isNaN(currRate) || isNaN(newRate) || isNaN(refiFees)) {
alert("Please enter valid numbers in all fields.");
return;
}
// Current Monthly Payment (Principal + Interest)
var currMonthly = currBal * (currRate * Math.pow(1 + currRate, currTermMonths)) / (Math.pow(1 + currRate, currTermMonths) – 1);
// New Monthly Payment (Principal + Interest)
var newMonthly = currBal * (newRate * Math.pow(1 + newRate, newTermMonths)) / (Math.pow(1 + newRate, newTermMonths) – 1);
var savingsPerMonth = currMonthly – newMonthly;
// Lifetime calculations
var totalRemainingOld = currMonthly * currTermMonths;
var totalNew = (newMonthly * newTermMonths) + refiFees;
var lifetimeSavingsValue = totalRemainingOld – totalNew;
// Break-even (Months)
var breakEvenMonths = 0;
if (savingsPerMonth > 0) {
breakEvenMonths = Math.ceil(refiFees / savingsPerMonth);
}
// Display Results
document.getElementById('results').style.display = 'block';
document.getElementById('monthlySavings').innerHTML = '$' + (savingsPerMonth > 0 ? savingsPerMonth.toFixed(2) : "0.00");
if (savingsPerMonth <= 0) {
document.getElementById('breakeven').innerHTML = "Never";
document.getElementById('breakeven').style.color = "#e74c3c";
} else {
document.getElementById('breakeven').innerHTML = breakEvenMonths + " Months";
document.getElementById('breakeven').style.color = "#2c3e50";
}
document.getElementById('lifetimeSavings').innerHTML = '$' + lifetimeSavingsValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (lifetimeSavingsValue < 0) {
document.getElementById('lifetimeSavings').style.color = "#e74c3c";
} else {
document.getElementById('lifetimeSavings').style.color = "#27ae60";
}
}