Calculate your monthly savings and break-even point
Monthly Savings
$0.00
Total Savings (Lifetime)
$0.00
Break-even Period
0 Months
How to Use the Mortgage Refinance Calculator
Deciding when to refinance your home is a major financial milestone. This tool helps you determine if the long-term interest savings outweigh the upfront closing costs of a new loan. By entering your current mortgage details and the terms of your new offer, you can visualize exactly when you will "break even."
Key Refinancing Metrics Explained
Monthly Savings: The difference between your current monthly principal and interest payment and your projected new payment.
Refinancing Costs: This includes loan origination fees, appraisal fees, title insurance, and other closing costs (typically 2% to 5% of the loan amount).
Break-even Point: The number of months it takes for your monthly savings to fully repay the costs of refinancing. If you plan to sell the house before this date, refinancing may not be profitable.
Lifetime Savings: The total amount of interest and principal you avoid paying over the entire life of the new loan compared to the remaining life of the old loan.
Refinance Example
Suppose you have a $300,000 balance at 6.5% with 25 years remaining. Your current payment is roughly $2,025. If you refinance to a 4.5% rate on a new 30-year term, your new payment drops to $1,520. That is a monthly savings of $505. If the closing costs are $5,000, your break-even point is roughly 10 months. After month 10, every dollar saved is pure profit.
Frequently Asked Questions
Is a 1% drop in interest rate enough to refinance?
Traditionally, a 1% drop was the rule of thumb. However, with lower closing costs or high loan balances, even a 0.5% or 0.75% drop can result in significant savings and a short break-even period.
Does refinancing reset my mortgage term?
Yes, usually. If you refinance into a new 30-year loan, you are starting the clock over. While this lowers your monthly payment, it may increase the total interest paid over the life of the loan unless you make extra payments.
function calculateRefinance() {
var balance = parseFloat(document.getElementById('refi_balance').value);
var costs = parseFloat(document.getElementById('refi_costs').value);
var oldRate = parseFloat(document.getElementById('refi_old_rate').value) / 100 / 12;
var newRate = parseFloat(document.getElementById('refi_new_rate').value) / 100 / 12;
var oldTermMonths = parseFloat(document.getElementById('refi_old_term').value) * 12;
var newTermMonths = parseFloat(document.getElementById('refi_new_term').value) * 12;
if (isNaN(balance) || isNaN(oldRate) || isNaN(newRate) || isNaN(oldTermMonths) || isNaN(newTermMonths)) {
alert("Please enter valid numerical values.");
return;
}
// Monthly Payment Formulas: P * (r(1+r)^n) / ((1+r)^n – 1)
var oldPayment = (balance * oldRate * Math.pow(1 + oldRate, oldTermMonths)) / (Math.pow(1 + oldRate, oldTermMonths) – 1);
var newPayment = (balance * newRate * Math.pow(1 + newRate, newTermMonths)) / (Math.pow(1 + newRate, newTermMonths) – 1);
var monthlySavings = oldPayment – newPayment;
// Break even months
var breakEvenMonths = costs / monthlySavings;
// Total cost of remaining old loan
var totalOldCost = oldPayment * oldTermMonths;
// Total cost of new loan including closing costs
var totalNewCost = (newPayment * newTermMonths) + costs;
var lifetimeSavings = totalOldCost – totalNewCost;
// UI Updates
document.getElementById('refi_results').style.display = 'block';
document.getElementById('res_monthly_savings').innerText = '$' + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_lifetime_savings').innerText = '$' + lifetimeSavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings 0) {
summaryText += "Over the full term, you will save a total of $" + lifetimeSavings.toLocaleString(undefined, {maximumFractionDigits: 0}) + ".";
} else {
summaryText += "Note: Because the new loan term is longer, you may pay $" + Math.abs(lifetimeSavings).toLocaleString(undefined, {maximumFractionDigits: 0}) + " more in total interest over time despite the lower monthly payment.";
}
document.getElementById('refi_summary').innerText = summaryText;
}
}