Calculate your potential monthly savings and break-even point for a mortgage refinance.
New Monthly Payment (P&I):$0.00
Monthly Savings:$0.00
Total Interest Paid (New Loan):$0.00
Break-Even Point:0 months
How a Mortgage Refinance Calculator Works
A mortgage refinance calculator helps homeowners determine if replacing their existing mortgage with a new one makes financial sense. The primary goal of refinancing is usually to secure a lower interest rate, reduce monthly payments, or change the loan term length.
Key Metrics Explained
Monthly Savings: This is the difference between your current Principal & Interest (P&I) payment and your projected new payment. Keep in mind this does not include taxes or insurance, which usually stay the same.
Closing Costs: Refinancing isn't free. You typically pay 2% to 5% of the loan amount in appraisal fees, origination fees, and title insurance.
Break-Even Point: This is the most critical number. It represents the number of months it takes for your monthly savings to "pay back" the upfront closing costs. If you plan to move before hitting this point, refinancing may actually lose you money.
Example Calculation
Imagine you have a $350,000 balance at a 7.5% interest rate. Your monthly payment is roughly $2,447. If you refinance into a new 30-year loan at 6.5%, your new payment becomes $2,212. That is a monthly savings of $235. If the closing costs are $5,000, your break-even point is $5,000 divided by $235, which equals approximately 21 months.
When Should You Refinance?
Generally, experts suggest refinancing is worth it if you can lower your interest rate by at least 0.75% to 1% and plan to stay in the home longer than your break-even period. Other reasons include switching from an Adjustable-Rate Mortgage (ARM) to a Fixed-Rate Mortgage for stability, or performing a cash-out refinance to consolidate high-interest debt.
function calculateRefi() {
var balance = parseFloat(document.getElementById('currentBalance').value);
var currentPayment = parseFloat(document.getElementById('currentPayment').value);
var newRateInput = parseFloat(document.getElementById('newRate').value);
var newTermYears = parseFloat(document.getElementById('newTerm').value);
var costs = parseFloat(document.getElementById('closingCosts').value);
if (isNaN(balance) || isNaN(currentPayment) || isNaN(newRateInput) || isNaN(newTermYears) || isNaN(costs)) {
alert("Please enter valid numbers in all fields.");
return;
}
// Monthly interest rate
var monthlyRate = (newRateInput / 100) / 12;
// Total number of payments
var totalPayments = newTermYears * 12;
// Amortization Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
var newPayment = 0;
if (monthlyRate === 0) {
newPayment = balance / totalPayments;
} else {
newPayment = balance * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
}
var monthlySavings = currentPayment – newPayment;
var totalInterest = (newPayment * totalPayments) – balance;
var breakEvenMonths = 0;
if (monthlySavings > 0) {
breakEvenMonths = costs / monthlySavings;
}
// Display Results
document.getElementById('newMonthlyPaymentDisplay').innerText = "$" + newPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings > 0) {
document.getElementById('monthlySavingsDisplay').innerText = "$" + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('monthlySavingsDisplay').style.color = "#28a745″;
document.getElementById('breakEvenDisplay').innerText = Math.ceil(breakEvenMonths) + " months (" + (breakEvenMonths / 12).toFixed(1) + " years)";
} else {
document.getElementById('monthlySavingsDisplay').innerText = "No Savings (New payment is higher)";
document.getElementById('monthlySavingsDisplay').style.color = "#dc3545";
document.getElementById('breakEvenDisplay').innerText = "Never (Costs will not be recovered)";
}
document.getElementById('totalInterestDisplay').innerText = "$" + totalInterest.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('refiResults').style.display = 'block';
}