Compare your current mortgage with a new loan to see how much you could save.
Current Loan Details
New Loan Details
Current Monthly Payment:$0.00
New Monthly Payment:$0.00
Monthly Savings:$0.00
Total Interest Saved (Lifetime):$0.00
Break-Even Point:0 months
How a Mortgage Refinance Calculator Works
A mortgage refinance calculator helps homeowners determine if replacing their current mortgage with a new one makes financial sense. By inputting your current loan balance, interest rate, and the terms of a potential new loan, the tool calculates the difference in monthly payments and the long-term interest costs.
Key Factors to Consider Before Refinancing
Interest Rate Differential: Traditionally, a drop of 0.75% to 1% in interest rates makes refinancing worth investigating.
Closing Costs: Refinancing isn't free. You will typically pay 2% to 5% of the loan amount in taxes, appraisal fees, and lender charges.
The Break-Even Point: This is the most critical metric. It represents how many months you need to stay in the home to recoup the closing costs through your monthly savings.
Loan Term: If you switch from a 30-year loan with 20 years left back to a new 30-year loan, you might lower your payment but pay more interest over the long run.
Example Calculation
Imagine you have a $300,000 balance on a loan at 7% interest with 25 years remaining. Your monthly principal and interest payment is approximately $2,120.
If you refinance into a new 30-year loan at 5.5% with $6,000 in closing costs:
Your new payment would be roughly $1,703.
You save $417 per month.
Your break-even point is 14.4 months ($6,000 / $417).
If you plan to stay in the home for more than 15 months, this refinance would likely be a smart financial move.
When is Refinancing a Bad Idea?
Refinancing might not be ideal if you plan to sell the home in a year or two, as you won't have time to recover the closing costs. Additionally, if your credit score has dropped significantly since you first bought the home, you might not qualify for the best rates, potentially negating the benefits of refinancing.
function calculateRefinance() {
var balance = parseFloat(document.getElementById('refi_balance').value);
var costs = parseFloat(document.getElementById('refi_closing_costs').value) || 0;
var currRate = parseFloat(document.getElementById('refi_curr_rate').value) / 100 / 12;
var currTerm = parseFloat(document.getElementById('refi_curr_term').value) * 12;
var newRate = parseFloat(document.getElementById('refi_new_rate').value) / 100 / 12;
var newTerm = parseFloat(document.getElementById('refi_new_term').value) * 12;
if (!balance || !currRate || !currTerm || !newRate || !newTerm) {
alert("Please fill in all fields with valid numbers.");
return;
}
// Monthly Payment Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
// Current Payment
var currMonthly = balance * (currRate * Math.pow(1 + currRate, currTerm)) / (Math.pow(1 + currRate, currTerm) – 1);
var currTotalInterest = (currMonthly * currTerm) – balance;
// New Payment
var newMonthly = balance * (newRate * Math.pow(1 + newRate, newTerm)) / (Math.pow(1 + newRate, newTerm) – 1);
var newTotalInterest = (newMonthly * newTerm) – balance;
// Savings
var monthlySavings = currMonthly – newMonthly;
var lifetimeSavings = currTotalInterest – newTotalInterest – costs;
// Break Even
var breakEvenMonths = 0;
if (monthlySavings > 0) {
breakEvenMonths = costs / monthlySavings;
}
// Display results
document.getElementById('refi_results_box').style.display = 'block';
document.getElementById('res_curr_monthly').innerText = '$' + currMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_new_monthly').innerText = '$' + newMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings > 0) {
document.getElementById('res_monthly_savings').innerText = '$' + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('res_monthly_savings').style.color = '#27ae60';
} else {
document.getElementById('res_monthly_savings').innerText = '$' + monthlySavings.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}) + ' (No Savings)';
document.getElementById('res_monthly_savings').style.color = '#e74c3c';
}
document.getElementById('res_total_interest_saved').innerText = '$' + (currTotalInterest – newTotalInterest).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (monthlySavings > 0) {
document.getElementById('res_break_even').innerText = Math.ceil(breakEvenMonths) + " months";
} else {
document.getElementById('res_break_even').innerText = "Never";
}
// Scroll to results
document.getElementById('refi_results_box').scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}