Are you burdened by a mountain of debt? Is it a constant struggle for you to be debt-free? Are you stressing over whether you will ever get out of your debt? Or perhaps, you are great at managing your debt but have a little extra money to pay towards your debt. Whatever the reason, use our debt calculator to find out how to pay down debt fast! If you can save a little extra money each month to put towards your debt, slowly and surely, you will be able to eliminate all your debt and live stress-free.
Debt Snowball or Debt Avalanche
There are two systematic ways to pay down your debt – the snowball method and the avalanche method. In either case, be sure to pay the minimum balance for each of your debts. The avalanche method pays highest interest debt first so that you pay lower interest overall. The snowball method prioritizes lowest balance debt. You will pay higher interest overall, but this method helps some people feel more motivated as they knock out smaller balances entirely. Another motivation for paying off lower balances first is to help with your credit score. Learn how to improve your credit score by clicking here.
Debt Payoff Calculator
Enter Estimates Below
List of Debts
Debt Payoff Results
Debt Payoff Summary
Debt Payoff Order
function dateset(){
todayDate = new Date();
document.getElementById("TodayDate").innerHTML = months[todayDate. getMonth()] + " 1 " + todayDate.getFullYear();
return;
}
function sortTable(k) {
var table, table2, rows, rows2, switching, i, x, y, shouldSwitch, pmt, pv, rate, totInt, payoff_date, prin, extra, todayDate, period, HighInterest, LowInterest, Earlypaydt, Latepaydt;
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
table = document.getElementById("myTable");
table2 = document.getElementById("myTable2");
rows = table.rows;
var total_rows=rows.length;
extra = Number(document.getElementById("Extra").value) || 0;
switching = true;
/*Make a loop that will continue until
no switching has been done:*/
while (switching) {
//start by saying: no switching is done:
switching = false;
/*Loop through all table rows (except the
first, which contains table headers):*/
for (i = 1; i < (total_rows-1); i++) {
/*for (i = 1; i < 2; i++) {*/
//start by saying there should be no switching:
shouldSwitch = false;
/*Get the two elements you want to compare,
one from current row and one from the next:*/
x = Number((rows[i].getElementsByTagName("input")[k]).value) || 0;
y = Number((rows[i + 1].getElementsByTagName("input")[k]).value) || 0;
//check if the two rows should switch place:
if (k==1){
if (x < y) {
//if so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
else if (k==0) {
if (x > y && y!=0) {
//if so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
}
if (shouldSwitch) {
/*If a switch has been marked, make the switch
and mark that a switch has been done:*/
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
}
}
for (var m=0; m<=1; m++){
//m= 0 is for no extra payment
//m=1 is for a chosen method - Avalanche or Snowball
var extra_in_period, payment_made, end_bal, extra_remaining, entries;
var beg_bal = [];
var rate = [];
var min_pmt = [];
var interest = [];
var payoff_date = [];
// var beg_bal = new array(8);
// var rate = new array(8);
// var min_pmt = new array(8);
// var interest = new array(8);
// var payoff_date = new array(8);
var data_rows = 0;
var debt_paid_date = new Date();
entries = 0;
for (i = 1; i < (total_rows); i++) {
beg_bal[i-1] = Number((rows[i].getElementsByTagName("input")[0]).value) || 0;
rate[i-1] = Number((rows[i].getElementsByTagName("input")[1]).value) || 0;
min_pmt[i-1] = Number((rows[i].getElementsByTagName("input")[2]).value) || 0;
if (min_pmt[i-1]>beg_bal[i-1]){
window.alert("Enter minimum payment less than the beginning balance!");
return;
}
if (beg_bal[i-1]*rate[i-1]/1200 > min_pmt[i-1]){
window.alert("Minimum payment is not enough to cover monthly interest. Please try a different amount.");
return;
}
if (beg_bal[i-1]>0){
entries++;
}
interest[i-1] = 0;
}
if (entries==0){
return;
}
var paid_off = false;
period=0;
if (m==1){
extra1= extra;
}
else {
extra1 = 0;
}
while (paid_off == false){
var extra_remaining = extra1;
tot_prin = 0;
for (i=0; i
pmt_this_period = beg_bal[i]+int_period_row;
if (beg_bal[i]==0) {
if (m==1) {
extra_remaining += min_pmt_period_row;
}
continue;
}
prin = beg_bal[i];
beg_bal[i] = 0;
d = todayDate;
d.setMonth(d.getMonth() + period);
if (d > debt_paid_date){
debt_paid_date = d;
}
month = d.getMonth() % 12;
payoff_date[i] = months[month] + " " + d.getFullYear();
data_rows++;
}
else {
pmt_this_period = min_pmt_period_row + extra_remaining;
prin = pmt_this_period - int_period_row;
beg_bal[i] = beg_bal[i] - prin;
}
if (m==1){
extra_remaining = min_pmt_period_row + extra_remaining - pmt_this_period;
}
else {
extra_remaining = 0;
}
tot_prin += beg_bal[i];
}
period += 1;
if (tot_prin==0){
paid_off = true;
}
}
var total_interest = 0;
for (i = 1; i <= (data_rows); i++) { if (m==1) { //dt = months[month] + " " + d.getFullYear(); if ( interest[i-1] != 0){ (rows[i].getElementsByTagName("div")[0]).innerHTML = (interest[i-1].toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); //toLocaleString('en'); } if (payoff_date[i-1]!=""){ (rows[i].getElementsByTagName("div")[1]).innerHTML = (payoff_date[i-1]).toLocaleString(); } } total_interest += interest[i-1]; } if (m==0){ HighInterest = total_interest; Latepaydt = debt_paid_date - new Date(); } else { LowInterest = total_interest; Earlypaydt = debt_paid_date - new Date(); } rows2 = table2.rows; (rows2[2].getElementsByTagName("div")[1]).innerHTML = (total_interest.toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); (rows2[2].getElementsByTagName("div")[2]).innerHTML = (months[debt_paid_date.getMonth()] + " " + debt_paid_date.getFullYear()).toLocaleString(); if (m==0){ (rows2[1].getElementsByTagName("div")[1]).innerHTML = (total_interest.toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); (rows2[1].getElementsByTagName("div")[2]).innerHTML = (months[debt_paid_date.getMonth()] + " " + debt_paid_date.getFullYear()).toLocaleString(); (rows2[1].getElementsByTagName("div")[0]).innerHTML = "Pay Only Minimum balance".toLocaleString(); } else{ (rows2[2].getElementsByTagName("div")[1]).innerHTML = (total_interest.toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); (rows2[2].getElementsByTagName("div")[2]).innerHTML = (months[debt_paid_date.getMonth()] + " " + debt_paid_date.getFullYear()).toLocaleString(); if (k==1){ //AValanche method (rows2[2].getElementsByTagName("div")[0]).innerHTML = ("Avalanche pay-down (Pay off highest interest rate debt first)").toLocaleString(); } else { //Snowball method (rows2[2].getElementsByTagName("div")[0]).innerHTML = ("Snowball pay-down (Pay off lowest balance debt first)").toLocaleString(); } } } if ((HighInterest.toFixed(0)-LowInterest.toFixed(0)) != 0){ var method; if (k==1){ method = "Avalanche"; (rows2[4].getElementsByTagName("div")[0]).innerHTML = "Debt Avalanche".toLocaleString(); } else { method = "Snoball"; (rows2[4].getElementsByTagName("div")[0]).innerHTML = "Debt Snowball".toLocaleString(); } (rows2[3].getElementsByTagName("div")[0]).innerHTML = "Interest Savings".toLocaleString(); (rows2[3].getElementsByTagName("div")[1]).innerHTML = "Extra days of being debt-free".toLocaleString(); (rows2[4].getElementsByTagName("div")[1]).innerHTML = ((HighInterest-LowInterest).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); (rows2[4].getElementsByTagName("div")[2]).innerHTML = (((Latepaydt-Earlypaydt)/(1000 * 60 * 60 * 24)).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); var out_string1 = method + " debt paydown will save you "; var out_string2 = ("$"+((HighInterest-LowInterest).toFixed(0))).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); var out_string3 = " in interest & be debt-free " ; var out_string4 = (((Latepaydt-Earlypaydt)/(1000 * 60 * 60 * 24)).toFixed(0)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); var out_string5 = " days sooner!"; document.getElementById("out_string1").innerHTML = out_string1.toLocaleString(); document.getElementById("out_string2").innerHTML = out_string2.toLocaleString(); document.getElementById("out_string3").innerHTML = out_string3.toLocaleString(); document.getElementById("out_string4").innerHTML = out_string4.toLocaleString(); document.getElementById("out_string5").innerHTML = out_string5.toLocaleString(); } }
How to use the calculator
List all your debt in the first table. You can enter up to 10 different debts. Fill in all the required fields for each entry: Beginning balance, annual interest rate expressed as a percentage, and the minimum payment. Click on either snowball method or avalanche method to see how much you'd pay in interest over the lifetime of your loan and your debt-free date. The table is automatically sorted in order of interest rate (highest rate first) if you choose the avalanche method. On the other hand, if you choose the snowball method, the table will be sorted based on the debt balance (lowest balance first). Make sure the minimum payment is higher than the monthly interest. Finally, set up a payment plan and stick to it.
Assumptions used in the debt calculator
To make the calculation simple, the debt calculator makes the following assumptions:
- Payments are due monthly.
- This month's payment has been made.
- There is no pre-payment penalty. If there is one, adjust the interest rate to the higher rate to get a better sense.
- The calculator only works for fixed interest rates.
- In both snowball and avalanche methods, once a debt is paid off, the minimum payment from that debt is applied to the next debt in order.
- The second table shows two scenarios. The first entry shows what happens if you only pay minimums towards your debts each month. Also, when any debt is paid off, you don't apply the minimum payment from that debt to the next debt. The second entry shows you the total interest for one of the methods you chose and the date you become debt-free.
Other debt payoff considerations
Please use the calculator only as a guide. Your individual circumstances may be different from what the calculator assumes. For example, your debt may have pre-payment penalties, your debt may not have fixed interest rate, etc. In such cases, the outcome from the calculator may be different from what is actually realized.
You will soon realize that by saving a little extra each month and putting it towards your debt, your repayment period will reduce significantly. However, there are a few instances when I wouldn't put extra toward debt paydown. Firstly, if there is going to be a need for liquidity in the immediate future, you may want to keep cash on hand. Secondly, if there is an opportunity to make a higher return by investing the available cash, you may not want to use that cash towards your debt.
Like our debt calculator? Learn how to avoid making financial mistakes by clicking here.
Happy debt paydown!