Skip to main content
Beancount vs hledger

Two great plain-text ledgers — pick your ecosystem

Beancount and hledger share the same philosophy: your books live in plain text you can read, diff, and version with Git — no lock-in, ever. The real question is fit: Beancount's strict model and web ecosystem, or hledger's fast, batteries-included command line.

  • Free & open source — both
  • Plain text + Git
  • No lock-in, ever
beancount.io ledger dashboard showing a net worth trend chart and account balances
Beancount mobile app home screen with net worth chart and recent transactions
100%
Open source — both projects
Plain text
A ledger you can still read in 30 years
Strict
Beancount enforces balance at parse time
Anywhere
beancount.io adds hosting, sync & AI

Same philosophy, different ecosystems

Both are plain-text, double-entry ledgers you can version with Git. The difference is fit: strict modeling with a web ecosystem, or a fast, self-contained command line.

Beancount

The strict teacher

Accounts are declared explicitly, every transaction must balance, and lots and cost basis are first-class. Errors surface at parse time — before they reach your reports.

hledger

The forgiving friend

hledger's Ledger-compatible format creates accounts on the fly and can even infer balancing entries. Quicker to start, with discipline left to you.

Beancount

Fava, a full web UI

Explore your books in Fava's polished dashboards — interactive charts, statements, holdings, and a BQL query console — with bean-check validating every edit.

hledger

A command-line powerhouse

Rich built-in terminal reports, the hledger-ui TUI, and hledger-web for lightweight browsing and entry — no extra services required.

Beancount

Python, plugins & BQL

Write importers and plugins in Python, and query entries with SQL-like BQL. Automation lives in reviewable, testable code.

hledger

Rules & shell pipelines

Declarative CSV import rules and composable CLI commands slot straight into Unix pipelines — fast automation, no Python required.

Beancount

Rigorous lots & cost basis

Every currency or security carries units, cost, and price in the open — precise capital-gains and multi-currency tracking, auditable line by line.

hledger

Simpler commodity handling

hledger covers everyday multi-currency and straightforward investment tracking with a gentler model — enough for many personal portfolios.

Beancount

Your books, anywhere

Self-host Fava, or let beancount.io handle hosting with bank sync, native mobile apps, and an AI assistant that helps categorize and draft entries.

hledger

One binary, fully local

Install a single pre-built binary and your ledger stays on your machine. hledger-web covers mobile browsers; nothing depends on a cloud account.

Beancount

Free core, optional hosting

Beancount and Fava cost nothing, forever. Optional beancount.io plans add hosting, sync, mobile, and AI — the ledger stays portable either way.

hledger

Free, full stop

Every hledger feature — reports, TUI, web UI, CSV import — ships free in a single tool. No paid tier exists; none is needed.

Where hledger still wins

Same family, honest comparison: hledger is the better fit when you want a fast, self-contained tool that does everything from one binary.

Reports out of the box

Balance sheet, income statement, cash flow, and multi-period comparisons are built-in commands — no web server, no query language, no setup.

Seriously fast

Written in Haskell, hledger starts instantly and stays fast on huge journals — tens of thousands of transactions per second, with modest memory use.

Built-in CSV import

Declarative rules files turn bank CSV exports into clean journal entries — no Python importer to write or maintain.

Nothing extra to run

No database, no server, no account. One binary plus your text file is the whole stack — trivial to back up, sync, and move.

The full comparison

Feature by feature, no marketing spin.

Data model

Beancount
Strict and explicit — declared accounts, enforced balance, lots and cost basis
hledger
Flexible and forgiving — Ledger-compatible, accounts on the fly

Main interface

Beancount
Fava web UI, CLI validation, editor tooling
hledger
Built-in CLI reports, hledger-ui TUI, hledger-web

Performance

Beancount
Python-based; v3 adds a C++ core for speed
hledger
Haskell — very fast, even on very large journals

Reporting

Beancount
Interactive Fava charts plus SQL-like BQL queries
hledger
Rich built-in terminal reports and multi-period views

Imports

Beancount
Python importer ecosystem; hosted bank sync on beancount.io
hledger
Built-in CSV import with declarative rules files

Investments

Beancount
Rigorous lots, cost basis, and multi-currency
hledger
Simpler commodity handling for everyday portfolios

Setup

Beancount
Requires Python; explicit account declarations
hledger
Single pre-built binary; forgiving parser

Mobile

Beancount
Native beancount.io apps; Fava's responsive web UI
hledger
hledger-web in a mobile browser; third-party apps

See your whole financial picture

Web dashboards, BQL queries, and native mobile apps — one plain-text ledger behind all of it.

Net worth dashboard
Net worth dashboard
Income statement
Income statement
Journal — every entry, in plain text
Journal — every entry, in plain text
BQL query console
BQL query console
Home — net worth at a glance
Home — net worth at a glance
Accounts
Accounts
Transactions
Transactions
Reports — income, expenses, profit
Reports — income, expenses, profit
Add a transaction in seconds
Add a transaction in seconds
Receipt capture
Receipt capture

Both $0 — pick your ecosystem

Neither project charges for the software, and both keep your books in plain text. The choice is workflow, not wallet.

Beancount

Free
open source, forever
  • Beancount + Fava: $0, self-hosted
  • Optional beancount.io plans for hosting, bank sync, mobile, and AI
  • Your plain-text ledger keeps working no matter what you cancel

hledger

Free
open source, forever
  • The complete toolkit — CLI, TUI, and web UI: $0
  • Reports and CSV import built in, nothing extra to add
  • One binary and a text file — no account, no server

Try both — switching is cheap

Both ledgers are plain text, so your data is never trapped. Sample each with the same transactions, then commit — or keep both.

  1. 1

    Start with one real month

    Enter the same recent transactions in both tools: import a statement, reconcile it, and produce your most important report in each.

  2. 2

    Convert when you commit

    Simple journals adapt easily, and hledger can export to Beancount format. Advanced cost, metadata, and directive features deserve a careful review pass.

  3. 3

    Or run both, side by side

    Many people do: hledger for quick entry and daily command-line checks, Beancount plus Fava for deeper visual analysis. Plain text makes the split easy.

Which should you choose?

Choose Beancount if…

…you want Fava's interactive web dashboard, rigorous lot and cost-basis tracking for investments, Python-based importers and custom analysis, and a strict system that enforces correctness — with optional hosted sync, mobile apps, and AI on beancount.io.

Choose hledger if…

…you live in the command line and want fast, built-in textual reports, a forgiving format that is quick to start with, single-binary installs, and strong multi-period reporting — backed by steady, regular releases.

Both are excellent, mature, actively maintained open-source projects, and both keep your data portable in plain text. The fairest test is a small sample of your own transactions in each — the workflow that resonates is the right choice.

Frequently Asked Questions

Is Beancount stricter than hledger?

Yes. Beancount requires explicit account declarations and applies a more formal data model, while hledger deliberately accepts a more flexible Ledger-style journal format and can infer some missing information.

Which has the better user interface, Beancount or hledger?

Beancount paired with Fava offers the richer graphical analysis experience. hledger is stronger for fast terminal reports and also includes hledger-ui and hledger-web for people who prefer text or lightweight web interfaces.

Can hledger and Beancount use the same journal?

Their formats overlap but are not identical. Simple journals can often be adapted or exported, while advanced cost, metadata, and directive features usually require conversion and review.

Which tool is better for automation?

Beancount is attractive for Python-based importers and plugins; hledger is attractive for shell pipelines, CSV rules, and fast command-line reporting. The better choice depends on the language and workflow you want to maintain.

Ready to own your books in plain text?

Start free in minutes — no credit card, no lock-in, and your plain-text ledger is always yours to keep.