Determine exactly how many months it will take for your mortgage savings to cover the cost of refinancing.
How to Use the Refinance Breakeven Calculator
Deciding whether to refinance your mortgage isn't just about getting a lower interest rate; it's about whether the math makes sense for your long-term financial goals. This calculator helps you identify the "breakeven point"—the moment where your cumulative monthly savings equal the upfront costs of the new loan.
To use this tool, you will need three primary pieces of information:
Current Monthly Payment: Only include Principal and Interest (P&I). Do not include taxes or insurance, as those typically remain similar regardless of the loan.
New Monthly Payment: The estimated P&I for your new loan at the lower rate.
Closing Costs: The total fees associated with the refinance, including appraisal fees, origination points, and title insurance.
The Breakeven Formula
The logic behind the calculation is straightforward but essential for homeowners:
Breakeven (Months) = Total Closing Costs / (Current Payment – New Payment)
Practical Example:
Imagine your current payment is $2,000 and your new payment will be $1,750. You are saving $250 per month. If your closing costs are $5,000, the calculation is:
$5,000 / $250 = 20 Months.
In this scenario, if you plan to stay in the home for more than 20 months, refinancing is likely a sound financial move.
Factors That Influence Your Decision
While the breakeven point is the most important metric, consider these additional factors:
Loan Term: If you are switching from a 30-year to a 15-year mortgage, your payment might increase, but your long-term interest savings will be massive. This calculator focuses on cash-flow breakeven.
Taxes and Insurance: These are generally escrowed and won't change based on the refinance, which is why we exclude them from the calculation.
Opportunity Cost: Consider what that $5,000 in closing costs could earn if invested in the stock market instead of paying for a refinance.
function calculateBreakeven() {
var currentPay = parseFloat(document.getElementById('current_payment').value);
var newPay = parseFloat(document.getElementById('new_payment').value);
var costs = parseFloat(document.getElementById('closing_costs').value);
var yearsStay = parseFloat(document.getElementById('years_remaining').value);
var resultDiv = document.getElementById('refi_result');
var summaryDiv = document.getElementById('refi_summary');
if (isNaN(currentPay) || isNaN(newPay) || isNaN(costs) || currentPay <= 0 || newPay <= 0 || costs <= 0) {
resultDiv.style.display = 'block';
summaryDiv.innerHTML = 'Error: Please enter valid positive numbers for payments and closing costs.';
return;
}
var monthlySavings = currentPay – newPay;
if (monthlySavings <= 0) {
resultDiv.style.display = 'block';
summaryDiv.innerHTML = 'Warning: Your new payment is higher than or equal to your current payment. You will not reach a breakeven point through monthly savings alone.';
return;
}
var monthsToBreakeven = costs / monthlySavings;
var yearsToBreakeven = monthsToBreakeven / 12;
var html = 'Your Monthly Savings: $' + monthlySavings.toFixed(2) + '';
html += 'Time to Breakeven: ' + Math.ceil(monthsToBreakeven) + ' Months (' + yearsToBreakeven.toFixed(1) + ' years)';
if (!isNaN(yearsStay)) {
var totalSavingsOverStay = (monthlySavings * (yearsStay * 12)) – costs;
if (yearsStay > yearsToBreakeven) {
html += 'Good Move! You will save $' + totalSavingsOverStay.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ' over the ' + yearsStay + ' years you plan to stay.';
} else {
html += 'Caution: You plan to move before the breakeven point. You may lose $' + Math.abs(totalSavingsOverStay).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ' if you refinance now.';
}
}
summaryDiv.innerHTML = html;
resultDiv.style.display = 'block';
}