This is the extra money you can commit to your debt each month.
Your Debt Freedom Plan
What is the Debt Snowball Method?
The Debt Snowball method is a debt reduction strategy where you pay off your debts in order from smallest balance to largest balance. This approach focuses on psychological momentum rather than mathematical optimization. By clearing small debts quickly, you see immediate progress, which keeps you motivated to tackle larger balances.
How the Snowball Logic Works
This calculator follows the standard snowball methodology:
List and Sort: All debts are ranked by total balance (lowest to highest).
Maintain Minimums: You continue to pay the minimum monthly amount on all your debts.
Apply the Snowball: Any extra money (the "snowball amount") is added to the minimum payment of the smallest debt.
Roll Over: Once the smallest debt is completely paid off, you take the entire monthly amount you were paying on it (its minimum + the snowball) and apply it to the next smallest debt.
Why Choose the Snowball Method?
While the "Debt Avalanche" method (paying highest interest rates first) saves more money mathematically, the Snowball Method is often more successful in practice. Behavioral science shows that the "quick wins" of eliminating small debts provide the positive reinforcement needed to stick to a long-term financial plan. For many, clearing three small bills in four months is more encouraging than chipping away at a massive high-interest loan for two years without seeing any account reach $0.
Example Calculation
Suppose you have three debts:
$500 Medical Bill (Min payment: $50)
$2,500 Credit Card (Min payment: $75)
$10,000 Auto Loan (Min payment: $250)
If you have an extra $200 per month, you apply that to the Medical Bill first ($50 min + $200 extra = $250/month). In two months, the bill is gone! Now, you take that $250 and add it to the Credit Card's $75 payment, putting $325/month toward it. This "snowball" effect accelerates your progress as each debt is eliminated.
function calculateSnowball() {
var extraBudget = parseFloat(document.getElementById('extraBudget').value) || 0;
var nameInputs = document.getElementsByClassName('d-name');
var balanceInputs = document.getElementsByClassName('d-balance');
var minInputs = document.getElementsByClassName('d-min');
var debts = [];
var totalStartingBalance = 0;
for (var i = 0; i 0) {
debts.push({
name: name,
balance: balance,
minPayment: min || 0,
monthsToPay: 0
});
totalStartingBalance += balance;
}
}
if (debts.length === 0) {
alert("Please enter at least one debt with a balance.");
return;
}
// Sort debts by balance (Smallest to Largest) – The Snowball Core Logic
debts.sort(function(a, b) {
return a.balance – b.balance;
});
var totalMonths = 0;
var resultsHTML = "
Payoff Order
Debt Name
Approx. Months
";
var simulationDebts = JSON.parse(JSON.stringify(debts));
var currentExtra = extraBudget;
var completedCount = 0;
var totalMonthlyOutlay = 0;
for(var d = 0; d < simulationDebts.length; d++) {
totalMonthlyOutlay += simulationDebts[d].minPayment;
}
totalMonthlyOutlay += extraBudget;
// Simulation loop
while (completedCount < simulationDebts.length && totalMonths < 600) { // 50 year cap safety
totalMonths++;
var monthlySnowball = extraBudget;
// Add freed up minimums to the snowball
for (var j = 0; j < simulationDebts.length; j++) {
if (simulationDebts[j].balance <= 0) {
monthlySnowball += simulationDebts[j].minPayment;
}
}
// Apply payments
for (var k = 0; k 0) {
// Determine how much to pay this debt
var paymentForThisDebt = simulationDebts[k].minPayment;
// If this is the "target" (smallest current balance), add the snowball
var isTarget = false;
for(var m=0; m 0) {
if(m === k) isTarget = true;
break;
}
}
if(isTarget) {
paymentForThisDebt += monthlySnowball;
}
simulationDebts[k].balance -= paymentForThisDebt;
if (simulationDebts[k].balance <= 0) {
simulationDebts[k].monthsToPay = totalMonths;
completedCount++;
}
}
}
}
for (var n = 0; n < simulationDebts.length; n++) {
resultsHTML += "