hledger-web
Web interface for hledger plain-text accounting
hledger-web is the web interface for hledger, a robust plain-text, double-entry accounting tool. It allows browsing, adding, and reporting on transactions stored in plain-text journal files.
Key features
- Plain-text journal files
- Add and edit transactions in browser
- Balance and register reports
- Fast Haskell core
Pros & cons
Strengths
- No database needed
- Data is plain text and portable
Trade-offs
- CLI knowledge helps
- Minimal UI
hledger-web replaces
Last reviewed Sep 13, 2026 · 781 words
The first thing to know about hledger-web is that it has no login. It is a web page over a text file, and by default it will let anyone who can reach it add transactions to your books. That is fine on localhost, which is the default bind, and reckless on a public port, so the whole "should I self-host this" question collapses into one rule: put it behind a VPN or a reverse proxy with authentication, or do not expose it at all. Get that right and hledger-web is the most durable finance setup on this site, because your data is a text file you will still be able to read in 2046.
Plain text is the feature, not a compromise
hledger is double-entry accounting where the ledger is a journal file you can open in any editor:
2026-09-10 * Grocery run
expenses:food 48.20 EUR
assets:bank:checking
hledger-web is the browser front-end to that file: a journal view, a register per account, balance reports, and a form to add transactions with autocompletion of account names. It does not replace the command line. hledger balance, hledger import with CSV rules files, and hledger check are where the real work happens. The web UI is for the 30 seconds of entering a receipt from your phone and for the moment you want to click through a balance sheet rather than read it in a terminal. The honest caveat is that CLI knowledge helps, and I would put it more strongly: if you would rather never see a terminal, Firefly III is the tool for you, and there is no shame in that.
Installing is easier than the Haskell label suggests
You never touch a Haskell toolchain unless you want to. Static binaries for Linux, macOS and Windows sit on the GitHub releases page, Debian and Ubuntu ship hledger-web as a package (often a version or two behind), and Homebrew and Nix track upstream closely. A 128 MB VM or a corner of a shared box is plenty; the process is a single binary that reads the journal at startup and watches it for changes.
Run it to serve rather than to pop open a browser:
hledger-web -f ~/finance/2026.journal --serve --host 127.0.0.1 --port 5000 --allow=add
--allow is the permission switch: view for read-only, add to allow the add form, edit to allow editing the raw journal in the browser. I leave it at add. Editing in a browser text area against a file you also edit in an editor is how you get a merge conflict with yourself.
The login you must add yourself
Because there is none, borrow one. Two patterns work well. The cheap one is Tailscale: bind to the tailnet address and never open a port. The other is a reverse proxy with basic auth in front; Caddy's basic_auth directive is 4 lines, and you get TLS for free. If you go the proxy route, set --base-url https://books.example.com so hledger-web generates correct links.
Then back the file up. It is text, so it belongs in git: commit after every session, push to your forge, and you have both a backup and a full audit trail of every edit at no cost. That is a property no database-backed finance app can match, and it is the reason the plain-text crowd is so hard to move.
Beancount and Fava are the sibling to weigh
The other plain-text accounting stack is Beancount with Fava as the web UI. Fava is prettier and more interactive than hledger-web, with charts and a query editor; hledger has the friendlier journal syntax, better CSV import rules, and a faster, more forgiving command line. People who live in the terminal tend to end up on hledger; people who want the web UI to be the main interface tend to end up on Fava. Both are single-user by design, and both are a full tier less approachable than Firefly III or Actual Budget, which is what the finance category page will steer a first-timer toward.
What I'd do
Keep the journal in a git repository, import bank CSVs monthly with a rules file, and run hledger-web with --allow=add on a Tailscale address for phone entry. No public exposure, no reverse proxy needed, no database to back up. If you are not already comfortable with the hledger CLI, spend two weeks with it first; hledger-web is the reward for that, not a shortcut around it.
Compare hledger-web
12 head-to-head comparisons.
Similar budgeting & finance apps
Maybe
Budgeting & FinanceOpen-source personal finance and wealth app
Replaces Mint, Personal Capital
HyperSwitch
Budgeting & FinancePayment switch to make payments fast, reliable and affordable
Actual Budget
Budgeting & FinanceLocal-first envelope budgeting app
Replaces YNAB, Mint
Firefly III
Budgeting & FinanceSelf-hosted personal finance manager
Replaces Mint, YNAB
Lago
Budgeting & FinanceOpen-source billing and metering API
Replaces Stripe Billing, Chargebee
Akaunting
Budgeting & FinanceFree open-source accounting software online
Replaces QuickBooks, Xero