Debt Repayment Timeline
{{ summaryHeadline }}
{{ summaryDetailLine }}
Paid $ {{ formatCurrency(totals.totalPaid) }} Interest $ {{ formatCurrency(totals.totalInterest) }} First out {{ selectedStrategyScenario.firstPayoffDebt }} Saved {{ readableMonths(totals.monthsSaved) }} Interest saved $ {{ formatCurrency(totals.interestSaved) }} Min payments $ {{ formatCurrency(totalMinimum) }}
Debt Repayment Inputs
Debts
Name Balance ($) APR (%) Minimum ($) Remove
$
%
$
{{ strategyHint }}
$
Minimum payments add up to $ {{ formatCurrency(totalMinimum) }}
% / yr:
$
$
$
rows
Current plan
$ {{ formatCurrency(totalMinimum + extraPaymentValue) }} / mo attack budget
Debt-free: {{ totals.debtFreeDate || '—' }}
Interest: $ {{ formatCurrency(totals.totalInterest) }}
First payoff: {{ selectedStrategyScenario.firstPayoffDebt }} by {{ selectedStrategyScenario.firstPayoffLabel }}
Minimums only
$ {{ formatCurrency(totalMinimum) }} / mo required
Debt-free: {{ baselineFinishDate || '—' }}
Interest: $ {{ formatCurrency(totals.baselineInterest) }}
{{ totals.monthsSaved > 0 ? `${readableMonths(totals.monthsSaved)} faster` : 'Same payoff pace as current plan' }}
Save {{ readableMonths(totals.monthsSaved) }} Save $ {{ formatCurrency(totals.interestSaved) }} interest Release $ {{ formatCurrency(selectedStrategyScenario.firstPaymentRelease) }} / mo at first payoff {{ strategyShortLabel }} order
Metric Value Copy
{{ row.label }} {{ row.display }}
Strategy Targets first First debt out Debt-free Months Interest ($) Vs current Notes
{{ row.shortLabel }} {{ row.initialTarget || '—' }} {{ row.firstPayoffDebt }} ({{ row.firstPayoffLabel }}) — {{ row.debtFreeDate || '—' }} {{ row.months }} $ {{ formatCurrency(row.totalInterest) }} Current selection -{{ row.monthsFasterThanCurrent }} mo · -$ {{ formatCurrency(row.interestBetterThanCurrent) }} Slower or costlier {{ row.note }}
Extra ($) Attack budget ($) Debt-free Months Interest ($) Vs current Vs minimums Notes
$ {{ formatCurrency(row.extraPayment) }} $ {{ formatCurrency(row.startingAttackBudget) }} {{ row.debtFreeDate || '—' }} {{ row.months }} $ {{ formatCurrency(row.totalInterest) }} Current plan -{{ row.monthsSavedVsCurrent }} mo · -$ {{ formatCurrency(row.interestSavedVsCurrent) }} No gain -{{ row.monthsSavedVsMinimum }} mo · -$ {{ formatCurrency(row.interestSavedVsMinimum) }} Baseline {{ row.note || '—' }}
Month Payment ($) Principal ($) Interest ($) Balance ($) Copy
{{ row.label }} $ {{ formatCurrency(row.payment) }} $ {{ formatCurrency(row.principal) }} $ {{ formatCurrency(row.interest) }} $ {{ formatCurrency(row.remaining) }}
Debt Paid off Months Interest ($) Copy
{{ mile.name }} {{ mile.label }} {{ readableMonths(mile.months) }} $ {{ formatCurrency(mile.interestPaid) }}
{{ formattedJSON }}
:

Introduction:

Debt repayment is the work of deciding which balance gets scarce extra cash after the required payments are covered. That choice changes how long balances stay open, how much interest accumulates before the last payment, and how quickly your monthly budget stops being dominated by old obligations.

This calculator turns that tradeoff into a month-by-month payoff plan for several debts at once. You enter balances, APRs, minimum payments, a start month, and any steady extra payment, then compare four ordering rules: highest APR first, smallest balance first, highest balance first, or highest minimum payment first.

The page gives more than a single finish date. It reports payoff timing, total paid, principal repaid, total interest, months saved versus minimums only, and interest saved versus minimums only. The schedule, milestone table, and charts then show how the plan evolves over time and when each debt falls away.

It is still a planning model, not a lender statement. The calculations assume fixed rates, fixed minimums, and the same monthly behavior unless you add annual raises, annual lump sums, or rounding rules. The math stays in the browser, but the debt list is serialized into the page URL, so shared links can reveal balances, rates, and minimums even though nothing is sent to a private server helper.

Everyday Use & Decision Guide:

Start by entering the debts as they exist now, not as you hope they will look later. If the question is purely about reducing interest cost, hold everything constant and compare strategies with the same debt list, start month, and extra payment. If the question is about earlier visible wins or getting rid of the largest required payment sooner, compare snowball or highest-minimum ordering against avalanche.

The most important input is usually the steady extra payment. The calculator always covers every minimum first, then directs the remaining pool according to the selected strategy. As debts are paid off, their former minimum payments are rolled into later months automatically, so the plan can accelerate even if your own extra payment never increases.

The advanced controls should reflect real behavior rather than wishful settings. Annual raise on extra increases the extra pool once every 12 months. Annual lump sum adds a one-time yearly booster in a chosen month. Round extra payment to pushes the extra payment up to the next increment, which is useful when you prefer round transfer amounts instead of irregular ones.

Read the result tabs in order of decision value. Summary answers the headline question. Schedule is the exact month-by-month trail. Milestones shows when each balance disappears and how much interest that debt accumulated before payoff. The charts are best for pattern recognition, not for replacing the tables.

Technical Details:

Validation happens before any schedule is built. The start month must be in YYYY-MM format. Debts with nonpositive balances are ignored, but every remaining debt must have a minimum payment above zero. If a debt's minimum does not exceed its first month's interest charge, the page stops and shows an error because that balance would not amortize under the entered assumptions.

The monthly engine is straightforward and intentionally deterministic. For each open debt, the calculator computes monthly interest from the APR, adds that interest to the current balance, applies the minimum payment, and then directs any extra pool toward the debt that ranks highest under the selected strategy. If the scheduled payment would overshoot the remaining balance, the surplus is returned to the extra pool and can be applied elsewhere in the same month.

When a debt reaches zero, it is marked as closed and its former minimum payment is added to the carried extra starting with the next month. That detail matters because the tool models the familiar snowballing effect without assuming that a released minimum becomes available before the current month is finished. It also records the interest paid while each debt was active so the milestone table can show both payoff timing and cumulative interest by debt.

The comparison metrics are produced by a second run of the same debt list with the extra payment set to zero and the advanced boosters disabled. That minimum-only baseline provides the numbers used for Months saved versus minimums and Interest saved versus minimums. Those fields are therefore comparisons inside one fixed model, not promises about how a real lender will bill you in the future.

Guardrails are strict on purpose. If monthly payments fail to cover accrued interest, the calculator returns Payments did not cover accrued interest. Increase the minimum or extra amount. If the payoff path would extend beyond 600 months, it stops with Payoff exceeds 50 years. Increase extra payments or minimums. That keeps negative amortization and unrealistic timelines visible instead of hiding them behind a misleading finish date.

Formula core

monthly interest = balance * APR 12 principal paid = payment - interest paid new balance = old balance + monthly interest - payment

Strategy ordering in the current package

Debt ordering strategies used by the repayment calculator
Strategy Primary sort Typical reason to use it
Debt avalanche Highest APR first Reducing interest cost as aggressively as the model allows
Debt snowball Smallest balance first Getting earlier payoffs and visible momentum
Highest balance first Largest balance first Concentrating effort on the biggest outstanding amount
Highest minimum payment first Largest required minimum first Reducing the largest fixed monthly obligation sooner

What each result surface shows

Result surfaces for the debt repayment calculator
Surface Built from Best use
Summary Plan totals plus the minimum-only baseline comparison Choosing between scenarios quickly
Schedule Monthly payment, principal, interest, and remaining balance rows Inspecting the exact repayment path
Milestones Per-debt payoff month and cumulative interest by debt Seeing when each balance disappears
Balance Chart Remaining balance over time Judging how quickly the total burden falls
Payment Mix Chart Monthly principal and interest amounts Seeing when payments shift away from interest
JSON export Inputs, summary, schedule, and milestones Archiving or comparing exact runs

Step-by-Step Guide:

  1. Enter each debt's name, balance, APR, and minimum payment. Remove any sample rows that do not belong in your scenario and add new rows for debts that do.
  2. Choose the start month that matches your next payment cycle so the timeline labels line up with reality.
  3. Select a payoff strategy, then read the short hint below the selector so you know what ordering rule the page will apply after minimums are covered.
  4. Enter the monthly extra payment you can make consistently beyond all minimums.
  5. Add an annual raise, an annual lump sum month and amount, or a rounding increment only if those behaviors are realistic for your plan.
  6. Read the summary badges and summary table first, because they show the payoff date, total interest, and the gap versus paying minimums only.
  7. Open Schedule for month-by-month detail, Milestones for the payoff order by debt, and the charts for trend review.
  8. If the page returns a validation or amortization error, fix the debt row or increase the entered payment amounts before comparing strategies again.

If you use the result to make real payments, confirm how your lender or servicer applies extra money. The calculator assumes the extra pool is directed exactly according to the selected payoff rule, while real accounts can apply excess payments differently unless you give explicit instructions.

Interpreting Results:

The summary badge line is the quickest way to compare two scenarios. Paid is total cash outflow across the whole plan. Interest is the financing cost embedded in that total. Saved and Interest saved appear only when the selected plan beats the minimum-only baseline.

How to read the main outputs of the debt repayment calculator
Metric What it means in this package What to watch
Payoff date The calendar label of the final modeled payment month Useful for timeline planning, but still dependent on fixed-rate assumptions
Total interest The sum of monthly interest charges actually paid inside the modeled path Best field for comparing strategies when balances and extras stay the same
Months saved versus minimums The difference between the selected plan and the zero-extra baseline Only a baseline comparison, not a comparison between strategies unless you run both
Interest saved versus minimums The reduction in total interest relative to the zero-extra baseline Most informative when you are asking whether the extra payment is large enough to matter
Milestones Per-debt payoff month and cumulative interest while that debt was active Shows which strategy gives earlier visible closures

The two charts answer different questions. Balance Chart shows whether the total burden drops steadily or stays flat for too long. Payment Mix Chart shows how much of each month's payment is still being absorbed by interest instead of principal. When a strategy or larger extra payment works well, the interest bars shrink sooner and the remaining-balance line bends downward more sharply.

Slow early progress is often the point, not a bug. If a debt's minimum barely beats the first month's interest, the schedule will show very small principal reductions at the start. That is the model exposing weak amortization. The correct response is usually to raise the payment or compare whether a larger steady extra changes the picture enough to matter.

Worked Examples:

High-rate card beside slower installment debt

Suppose the debt list contains a high-APR credit card, an auto loan, and a lower-rate student loan. Under avalanche, the extra pool is pushed toward the card first, so the summary usually shows the lowest total interest. Under snowball, the card may still go first if it is also the smallest balance, but if the smallest balance belongs to another debt, the milestone order changes even when the total monthly outflow stays the same.

Choosing visible momentum over pure interest savings

A user may care more about seeing one balance disappear quickly than about shaving every possible dollar from financing cost. In that case, compare avalanche with snowball or highest-minimum ordering. The summary table may show more total interest under the motivation-focused strategy, but the milestone table can still justify the choice if an earlier payoff meaningfully simplifies the monthly budget.

Why the schedule stops before it starts

If one debt's minimum payment is less than or equal to its first month's interest, the page refuses to build the plan and tells you exactly which row failed. That is not a software limitation. It is the package making negative amortization visible. Until the minimum or extra payment is increased enough to reduce principal, there is no honest payoff schedule to compare.

FAQ:

Does this send my balances to a server?

No server-side helper is present in the tool bundle. The schedule, milestone math, baseline comparison, and charts are computed in the browser. The privacy caveat is the URL, because the debt list is serialized there for shareable state.

Why did one debt disappear from the results?

Rows with balances that are zero or below are ignored during preparation. The model only carries debts that still have a positive balance and a valid minimum payment.

Why am I seeing "minimum must exceed the first month's interest"?

The calculator previews the first month's interest for each debt. If the minimum payment does not beat that amount, the balance would not shrink under the entered assumptions, so the page stops rather than presenting a misleading payoff date.

Why do two strategies sometimes produce the same result?

That can happen when there is only one active debt, when the extra payment is zero, or when the balances and rates line up in a way that keeps the same debt at the top of more than one ordering rule.

What are months saved and interest saved compared against?

They are compared against the package's minimum-only baseline. To compare one strategy against another, run both scenarios separately and read the two summary tables side by side.

Glossary:

APR
Annual percentage rate, the yearly rate from which the package derives monthly interest.
Minimum payment
The required monthly payment that must be covered before any extra money is allocated by strategy.
Avalanche
A payoff rule that pushes extra payments toward the highest APR first.
Snowball
A payoff rule that pushes extra payments toward the smallest balance first.
Negative amortization
A situation where payments do not cover interest, so the balance fails to shrink.
Milestone
The package's per-debt payoff event, recorded with month label and cumulative interest for that debt.

References: