Find out if refinancing your home loan will save you money over time.
Current Monthly Payment:$0.00
New Monthly Payment:$0.00
Monthly Savings:$0.00
Total Interest Savings (Life of Loan):$0.00
Break-Even Point:0 Months
How This Mortgage Refinance Calculator Works
Deciding when to refinance your mortgage is a significant financial decision. This calculator helps you determine the "break-even point"—the moment when the monthly savings from your lower interest rate outweigh the upfront costs of the new loan.
Key Metrics to Consider
Monthly Savings: The immediate impact on your monthly budget. A lower interest rate typically results in a lower monthly principal and interest payment.
Closing Costs: Refinancing isn't free. You will likely pay for appraisals, origination fees, and title insurance, typically ranging from 2% to 5% of the loan amount.
Break-Even Point: This is the most critical number. If you plan to sell your home in 3 years but your break-even point is 5 years, refinancing may not be financially beneficial.
Example Calculation
Suppose you have a $300,000 balance at a 6.5% interest rate. Your current monthly payment (P&I) is roughly $1,896. If you refinance into a new 30-year loan at 4.5%, your new payment would be approximately $1,520. That is a monthly saving of $376. If your closing costs are $5,000, it will take you about 14 months to break even.
When Should You Refinance?
General financial wisdom suggests that refinancing is worth considering if you can reduce your interest rate by at least 0.75% to 1%. However, with the rising popularity of "no-cost" refinances (where costs are rolled into the rate or loan balance), even smaller rate drops can sometimes make sense if you plan to stay in the home long-term.
function calculateRefi() {
var balance = parseFloat(document.getElementById('currentBalance').value);
var currentRate = parseFloat(document.getElementById('currentRate').value) / 100 / 12;
var newRate = parseFloat(document.getElementById('newRate').value) / 100 / 12;
var newTermMonths = parseInt(document.getElementById('newTerm').value) * 12;
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
if (isNaN(balance) || isNaN(currentRate) || isNaN(newRate) || isNaN(newTermMonths) || isNaN(closingCosts)) {
alert("Please enter valid numeric values in all fields.");
return;
}
// Current Payment Calculation (Assuming a standard 30-year amortizing logic for comparison)
// To be most accurate for the user's specific remaining term, we use the balance and current rate
var currentPayment = (balance * currentRate) / (1 – Math.pow(1 + currentRate, -newTermMonths));
// New Payment Calculation
var newPayment = (balance * newRate) / (1 – Math.pow(1 + newRate, -newTermMonths));
var monthlySavings = currentPayment – newPayment;
// Total Interest Savings
var totalCurrentInterest = (currentPayment * newTermMonths) – balance;
var totalNewInterest = (newPayment * newTermMonths) – balance;
var totalInterestSavings = totalCurrentInterest – totalNewInterest;
// Break-Even Point
var breakEvenMonths = 0;
if (monthlySavings > 0) {
breakEvenMonths = Math.ceil(closingCosts / monthlySavings);
}
// Formatting
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('currentPaymentDisplay').innerText = formatter.format(currentPayment);
document.getElementById('newPaymentDisplay').innerText = formatter.format(newPayment);
document.getElementById('monthlySavingsDisplay').innerText = formatter.format(monthlySavings);
document.getElementById('totalInterestSavingsDisplay').innerText = formatter.format(totalInterestSavings);
if (monthlySavings <= 0) {
document.getElementById('breakEvenDisplay').innerText = "Never (New rate is higher)";
document.getElementById('breakEvenDisplay').style.color = "#e74c3c";
} else {
document.getElementById('breakEvenDisplay').innerText = breakEvenMonths + " Months";
document.getElementById('breakEvenDisplay').style.color = "#27ae60";
}
document.getElementById('refiResults').style.display = 'block';
}