hledger
FreeYour ledger is a plain text file — Git-friendly and still readable in twenty years
A plain text double-entry accounting tool — the ledger is a human-readable text file, and hledger checks it and produces reports. It comes with a command line, a terminal UI (hledger-ui) and a web UI (hledger-web), produces balance sheets, income statements and cash flow reports, and imports CSV with rule files that categorize transactions. The file format is compatible with Ledger.
Why we picked it
GPL-3.0-or-later, 4,700 stars, maintained by Simon Michael since 2007. The current stable release is 1.52.4 from September 2026, with 2.0 previews in testing alongside.
The idea behind plain text accounting is that the ledger is not locked in any program's database. It is a text file, a few lines per transaction:
2026-09-20 Grocery store
expenses:food 86.50 USD
assets:checking
hledger reads the file, checks that every transaction balances, and produces reports on demand:
hledger bs for the balance sheet, hledger is for the income statement, hledger reg expenses:food for one account's register. Because it is text you can edit it in any editor,
version it with Git, see this month's changes with diff, and switch tools without exporting
anything.
The real time saver is CSV import rules. Write a .rules file for your bank's statement that
names the date and amount columns and maps keywords to accounts (anything mentioning "transit" goes
to transport), and from then on a monthly hledger import brings in new transactions categorized
and de-duplicated. An hour up front, a few minutes each month after.
If you would rather not read reports on the command line, hledger-ui is an interactive terminal
interface and hledger-web offers viewing and entry in a browser.
To be clear about:
- There is no graphical installer wizard and no point-and-click entry screen. You record by
editing text or answering
hledger addprompts; it suits people willing to write a few lines of configuration. - The barrier, as with GnuCash, is double-entry concepts, plus a text format to learn. The documentation is thorough.
- There is no direct bank connection; every number comes from what you record or import. Good for privacy, less good for convenience.