Expense Tracker
Log what you earn and spend, set budgets, and see where the money goes — all inside your browser.
Month by month
Where it went
0 entriesNothing recorded this month yet.
Budgets
No budgets yet. Set a limit to see how much is left.
Everything you enter stays in this browser and is sent nowhere.
How it works
This is a ledger that runs entirely in your browser. Each entry carries an amount, a category, a date and a note. Categories nest one level deep — a parent such as "Food & drink", with children such as "Coffee" inside it — so a month can be read at either level: totals by group, or every line on its own.
The "same span last month" comparison cuts both months at the same day. The 5th of this month is compared with the 1st to the 5th of last month, not with the whole of it; comparing a month in progress against a finished one would report a triumphant 90% saving every time, and that number means nothing. When the previous month is shorter, the span is clamped to its last day.
Budgets are monthly, set per category or across all spending. A budget on a parent covers its children too. The "running close" state appears once four fifths of the limit is gone, or once the pace so far projects past the limit by month end — a warning that only arrives after the limit is blown arrives too late to act on.
Recurring entries are described once and written into the book as each one falls due. The rule does not stand in for its entries: when one comes due, an ordinary transaction is created, so you can edit or delete it and it will not reappear on the next visit. Each occurrence is measured from the start date, so a rule set on the 31st still lands on the 31st in long months and falls back to the last day in short ones.
The whole book lives in this one browser’s localStorage. No account, no server, no sync to another device — and no one else can read it. The trade is that clearing site data clears the book, so the Settings tab has a JSON export you can back up and re-import, and a CSV export for spreadsheets.
Worked example
A typical month
- Spending to the 5th, this month
- 1,000,000 ₫
- Spending on the 1st–5th, last month
- 3,000,000 ₫
- Same-span difference
- down 2,000,000 ₫
- Food budget
- 2,000,000 ₫ a month
- Spent on food so far
- 700,000 ₫
- Pace projected to month end
- 4,200,000 ₫
The month is cheaper than the same span last month, but food alone is 35% of its limit after five days — which projects to more than double the budget, so the card reads "running close" now rather than waiting until the limit is gone.
Frequently asked questions
Is my data sent to a server?
No. Every transaction, category and budget is written to your own browser’s localStorage. The site has no accounts and no storage server, and nothing you enter is sent anywhere.
What happens when I switch devices or browsers?
The book does not follow you, because there is no account to sync it. Open the Settings tab, press "Export a backup (JSON)", take the file to the new device and press "Import a backup". Every transaction, category, budget and recurring rule comes back.
Does clearing my browsing history erase the book?
Clearing "site data" or "cookies and site data" does erase it, and it cannot be recovered. Clearing browsing history alone usually does not. If the book matters to you, export a backup from time to time.
If I delete a category, do its old entries go too?
No. Deleting one makes you pick another category for its entries to move to. Any subcategories move up a level rather than being deleted with it. Only a budget or a recurring rule set on that category is removed, because both measured something that no longer exists.
Why does a budget say "running close" when I have spent half of it?
Because the card reads the pace, not just the total. Half the limit gone on the 5th means that pace ends the month well past the limit. A warning that only appears once the budget is blown cannot help you change anything.
Where does a recurring entry set on the 31st land in February?
On the last day of the month — the 28th, or the 29th in a leap year. More importantly, it returns to the 31st the following month, because each occurrence is measured from the start date rather than stepped from the previous one. Stepping would walk a rent payment backwards through the year.
Can I import a bank statement?
Not yet — the importer only reads JSON backups this tool exported. The other direction works: you can export every transaction as CSV and open it in Excel or Google Sheets.