๐Ÿ’ช Debt Crusher

DEBT-FREE
โ€“
Surplus builds your buffer until this month, then it starts attacking debt.

Where every krona goes

The kill list

    Total debt โ€” the road to zero

    Senaste rรถrelser

    GroupItemAmount (kr)TypeBetaldatum
    Update balances here after payments land โ€” the projections follow automatically.
    LenderBalance (kr)Rate (%)Min paymentFee/mo

    What if I attack withโ€ฆ

    10 500 kr/month

    Your plan vs. this scenario

    Milestones in this scenario

      Your full budget & debt history, in one file โ€” a backup that lives outside the database.

      Buffer goal

      DateAmount

      The mountain

      You vs. the plan

      Dots are your real saved balances โ€” the line is the plan. Under the line means you're ahead.

      Net worth (Avanza portfolio โˆ’ debt)

      Only plots from the month you started tracking your portfolio value on the Debts tab.

      Budget by month

      Watch the blue Needs bar collapse in October when Nykvarn kicks in.

      Cash cushion

      MonthIncomeExpensesSurplusRunning total

      The running total of every tracked month's real surplus โ€” climbing means each month is earning its keep, dropping means you're eating into what's already saved, even if the account still looks fine. The table shows exactly how it built up, month by month.

      Starting an AB takes 25 000 kr aktiekapital + ~1 900 kr Bolagsverket registration โ€” the rest of the target is margin.

      Road to the AB

      Savings history

      DateAmount

      No entries yet โ€” type what you've set aside and hit Save entry. This fund is fully manual: it never guesses from your budget.

      How this app works

      A straight-from-the-code reference for what everything means, what's assumed, and what'll bite you if you forget it โ€” so you don't have to ask.

      The tabs

      ๐Ÿ“Š Dashboard
      Total debt, this month's money split (living costs / debt minimums / attack), the projection to zero vs. paying only minimums, and the kill list โ€” which debt dies when.
      ๐Ÿ’ฐ Budget
      One month at a time. Add/edit line items, set that month's net income, hit Save. Also where reconciled items like Groceries and Ute mat keep their real bank-statement breakdown.
      ๐Ÿ’€ Debts
      The single source of truth for every loan's live balance, rate, minimum payment and fee โ€” update this after payments land. Also where you enter your Avanza portfolio value.
      ๐Ÿงฎ Simulator
      Drag the slider to see what a different monthly attack amount would do to the debt-free date and total interest, compared side-by-side with the real committed plan.
      ๐Ÿ“ˆ Progress
      The buffer goal, net worth over time, budget composition by month, the cash cushion running total, and a full data export.
      ๐Ÿข Company
      Fully separate, fully manual savings tracker for the AB startkapital fund. Never reads anything from the budget.

      Key terms

      Avalanche order
      Every month, whichever unpaid debt currently has the highest interest rate gets 100% of the extra attack money on top of its own minimum. Everyone else only gets their minimum. Re-sorted every month โ€” a new debt with a higher rate jumps the queue immediately.
      Attack start
      The month (set on Dashboard) the "floor" starts hitting debt. Before it, monthly surplus builds the buffer instead of attacking debt.
      Floor
      The monthly attack amount used for projections. There's deliberately no separate number to edit: any month with a saved budget uses that month's real surplus (income โˆ’ everything budgeted, floored at 0 so an overspent month pauses the attack instead of subtracting from it). Unbudgeted future months fall back to a flat default.
      Buffer
      The emergency-fund target (Progress tab). Only grows from surplus in months before Attack start โ€” once the floor starts sweeping to debt, the buffer stops growing on its own.
      Portfolio
      Your Avanza account value, entered by hand on the Debts tab. It only feeds the Net worth chart โ€” it isn't fetched from anywhere automatically.
      Net worth
      Avanza portfolio โˆ’ total debt. Nothing else counts as an asset (see Gotchas).
      Cushion / running total
      The running sum of every month's real surplus (Progress tab). Different from net worth or buffer โ€” it's purely "did income beat expenses," month over month.
      Breakdown (๐Ÿ”Ž)
      For most items, a manually kept list of the real bank-statement lines behind that month's total. "Loan minimums + CSN" is the one exception โ€” its ๐Ÿ”Ž is a live, un-stored comparison against the Debts tab, not a saved ledger.
      Delta badge
      The little colored pill next to a value, e.g. +3 or โˆ’195. For budget items and debt balances: red = went up (worse), green = went down (better). For net income it's flipped on purpose โ€” green = went up (better), red = went down (worse) โ€” because more income is good.

      Assumptions baked into the math

      • Extra attack money only ever goes to one debt โ€” whichever currently has the highest rate. It's never split across several at once.
      • When a debt hits zero, its minimum payment doesn't disappear โ€” it rolls straight into next month's attack pool, so payoff naturally accelerates.
      • CSN and anything else lumped into "Loan minimums + CSN" that isn't on the Debts tab never gets killed off or freed up โ€” it's treated as a permanent minimum, forever, by design.
      • A month's attack amount is that month's actual saved surplus, not a fixed number โ€” an expensive month automatically slows the attack instead of eating into savings, and a cheap month speeds it up.
      • Each budget month has its own income field rather than one fixed salary รท 12, because real pay isn't constant (semester days, raises, side income like Sellpy).
      • Net worth is intentionally not offset by anything outside Avanza + the Debts tab โ€” no land, no other assets. A deliberate call to keep the number pessimistic and motivating rather than comfortable.

      Gotchas โ€” things that'll bite you

      Nothing saves until you hit the Save button

      Editing rows on Budget or Debts โ€” even deleting one โ€” is only a browser-side draft until "Save month" / "Save debts" is clicked. Refresh without saving and it's like it never happened. Handy if you make a mistake and want to bail out, risky if you meant to keep the change.

      Breakdown totals don't auto-recompute

      Add a new bank-statement line to an item's breakdown and the item's own Amount field does not update itself โ€” the breakdown and the total have to be kept in sync by hand.

      Renaming a budget item drops its breakdown

      Breakdown arrays carry forward between saves by matching the item's name exactly โ€” there's no direct UI field for it. Rename an item and its whole history vanishes on the next save.

      Two different meanings of "last month"

      Budget item deltas compare against the most recently saved month before this one โ€” which could be more than one calendar month back if a month got skipped. Debt balance deltas compare specifically against last calendar month's snapshot โ€” if nothing was saved then, that badge just shows nothing.

      Betaldatum is just a note to yourself

      The date field on a budget row is stored but never read by any calculation โ€” projections, deltas and totals all ignore it completely.

      "Copy nearest budget" can copy from a later month, not just an earlier one

      It picks whichever existing month is closest on the calendar, either direction.

      History snapshots are one per calendar day

      Save the Debts tab twice in one day and the second save overwrites the first day's snapshot instead of adding a second one.

      Small things worth knowing

      • The ๐Ÿ”Ž on "Loan minimums + CSN" is a live cross-check against the Debts tab, not a stored ledger โ€” if the two numbers disagree, that's a signal it needs reconciling, not a bug.
      • The Company fund and the Buffer goal are both 100% manual entries โ€” the app never infers or projects either one from the budget, on purpose.
      • A budget item that doesn't match any name from the previous saved month just shows a blue "new" badge instead of a (meaningless) number.
      • The date/month input fields use a smaller font on mobile specifically because iOS Safari doesn't shrink long localized dates to fit โ€” that's on purpose, not a leftover bug.