Skip to content
← Back to all tools

Beancount

Free

Your ledger is a text file — and it belongs in Git

Open Source No Ads No Tracking Offline No Sign-up Cross-platform

Plain-text double-entry accounting. The ledger is a human-readable text file, validated and queried by command-line tools, with the companion Fava providing a web reporting interface. The format is open and permanently readable, version-controllable with Git and scriptable in bulk.

Why we picked it

Beancount belongs to the plain-text accounting school. A ledger entry looks like this:

2026-08-14 * "Supermarket" "Groceries"
  Expenses:Food:Groceries    128.50 USD
  Assets:Bank:Checking

That is all — a date, a description, and a few account-and-amount lines. The entire ledger is one .beancount text file.

That brings a chain of advantages, especially for programmers:

  • It goes into Git. Every entry is a commit, the history of what changed and when is plainly visible, and mistakes can be reverted. No database-backed finance app offers this.
  • The format stays readable forever. In twenty years, when nothing can open some proprietary ledger format, a text file is still a text file.
  • Scripts can process it. Bulk imports, automatic categorization and custom reports are a few lines of Python away.
  • Validation is strict. It implements proper double-entry, errors out when the books do not balance, and supports assorted account-level assertions.

The companion Fava is effectively mandatory: a web interface that renders the text ledger into balance sheets, income statements, net worth curves and charts across dimensions. With it, day-to-day review no longer happens in a terminal.

To be clear about:

  • The barrier is among the highest on this site. You must be willing to keep books in a text editor, understand double-entry, and ideally know some command line and Python. It is not for everyone.
  • There is no mobile app. Jotting an expense on a phone is not something it does; the common workaround is capturing roughly elsewhere and tidying up at the computer.
  • Upstream releases are infrequent. Distribution is mainly through PyPI and the repository carries few tagged releases, with development tracked through branches instead. That is the project's long-standing style; the functionality itself is stable.

hledger and Ledger are the two older siblings in the same school — same idea, slightly different syntax — and worth comparing before you commit.