# hledger: double-entry accounting in a file your editor already understands

> hledger is a GPL-3.0 plain text accounting tool written in Haskell, offering double-entry tracking of money, time, inventory and more through CLI, terminal and web interfaces, with a journal format that lives under version control. The engine analyzes 25 thousand transactions per second on a MacBook Air M1, is accurate to 255 decimal places, and 2026 brought a branch split between stable 1.x and a new 2.x line.

**hledgerorg/hledger** — Robust, fast, intuitive plain text accounting tool with CLI, TUI and web interfaces.

- Repository: https://github.com/hledgerorg/hledger
- Website: https://hledger.org
- Stars: 4,737 · Forks: 415
- Language: Haskell
- License: GPL-3.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/hledgerorg-hledger

## The journal file is the database

Everything in hledger begins with a journal, a plain text file of dated transactions with indented postings:

```journal
2022-01-01 opening balances as of this date
    assets:bank:checking                $1000
    assets:bank:savings                 $2000
    assets:cash                          $100
    liabilities:creditcard               $-50
    equity:opening/closing balances

2022-01-15 market
    expenses:food             $50
    assets:cash              $-50

2022-02-01 GOODWORKS CORP
    assets:bank:checking           $1000
    income:salary                 $-1000
```

The format is the product's core promise, a safe, future-proof plain text data format with full version control and privacy, diffable in any review tool, greppable in any shell, and outliving any application. It tracks money, investments, cryptocurrencies, invoices, time, inventory and more in the same structure, and using it is described as an excellent way to learn double-entry accounting, since every transaction's postings must balance by construction.

## bs and is: reports with zero configuration

Reports are single commands over the journal. hledger bs prints a balance sheet as of the latest date, a formatted table with assets and liabilities and their totals:

```cli
$ hledger bs
Balance Sheet 2022-02-15

                        || 2022-02-15
========================++============
 Assets                 ||
------------------------++------------
 assets:bank:checking   ||      $2000
 assets:bank:savings    ||      $2000
 assets:cash            ||        $50
------------------------++------------
                        ||      $4050
========================++============
 Liabilities            ||
------------------------++------------
 liabilities:creditcard ||        $50
------------------------++------------

```

hledger is prints the income statement, with flags like --monthly pivoting it over time periods. Though the UIs are basic, the tool models any accounting situation and provides precise, clear reports, and the maintainer's own usage list shows the range, tracking income and spending with budgets, time reports by day, week, month and project, reimbursables and invoices, cashflow prediction, accurate numbers for tax filing, and researching past events.

## Command line, terminal UI, web UI, and beyond

The repository is a multi-package project whose shape reveals the interface strategy, hledger-lib holds the engine, hledger the command line tool, hledger-ui the full terminal interface, and hledger-web the web application, which the Docker image exposes on ports 5000 and 5001. Beyond those three first party UIs, the feature list names mobile interfaces and editor or IDE integrations as part of the multiple UI story, with hledger scriptable by CLI, HTTP or API and plenty of examples provided. The positioning is deliberate, lightweight, cross platform, multi-currency software aiming to help both computer experts and regular folks gain clarity in their finances and time management, with the interface chosen to fit the person rather than the other way around.

## 25 thousand transactions per second, 255 decimal places

The engine's published numbers are specific enough to check, fast, analysing 25k transactions per second on a MacBook Air M1, and accurate to 255 decimal places, the second figure mattering for cryptocurrencies and multi-currency arithmetic where rounding errors compound. The accounting engine is described as general and well-specified, multi-currency by design, and flexible about your preferred account names, currencies and number formats. Data exchange is a first class concern, good at importing and exporting CSV, and able to output text, HTML, JSON and SQL, which covers feeding other tools and publishing reports. Compared to other plain text accounting apps, the project claims its differentiators plainly, actively maintained, with regular releases, and a strong focus on being easy to use and practical for everyday accounting.

## Ledger's descendant, Beancount's neighbor

hledger's lineage is stated precisely, inspired by and partly compatible with Ledger CLI, the original plain text accounting tool, and interconvertible with Beancount, the Python based sibling. That positions it in the middle of the Plain Text Accounting ecosystem at plaintextaccounting.org, which the README calls highly supportive, a community maintaining format converters, editor modes, shared scripts and comparisons between the tools. The compatibility claims have practical weight, a Ledger journal can often be read directly, and Beancount data can be converted when consolidating or migrating, so choosing hledger does not wall the data off from the rest of the movement. The ecosystem site also carries the comparison list of PTA apps the README links to when making its case.

## 1.x frozen, 2.x beginning, AI on the boundary

2026 split the project in two, the master branch was renamed to hledger1 and work began on hledger 2.x in the main branch. The 2.x goals read like a considered wishlist, continue and improve 1.x's reliability, provide excellent lot tracking and capital gains calculation, explore ethical use of AI as a dev tool, more cleanup and simplification of code, docs, process, finance, more speed, more interoperability, more use of jj for version management, and easier contribution. The 1.x commitments are narrower, continued stability and installability, bugfix releases for newly discovered regressions if any, and a striking one, preserve the non-AI-assisted codebase and try to keep it that way. The two branches draw a line around AI assistance in the stable line while the new line experiments, documented at hledger.org's AI page and discussed in issue 2547, a governance decision few projects have made explicit.

## Stack files for four GHC versions and a Sandstorm remnant

The build surface shows a mature Haskell project, a clean codebase continually improved since 2007, per its own feature list. Stack configuration exists for multiple GHC versions, stack96, stack98, stack910 and stack912 alongside the main stack.yaml, and the Dockerfile builds on haskell:9.12.2, pre-caching dependencies before compiling, then trimming to a debian stable-slim runtime with just libtinfo6 and libgmp10, a /data volume holding the journal, and a start script. Build orchestration moved from Make to a Justfile plus a Shake.hs file, with the old Makefile reduced to printing a pointer message. Curiosities survive in the tree, a docker-arm32v7 directory for 32-bit ARM, and .sandstorm, a remnant of the Sandstorm platform packaging era.

## A sponsor wall, 140 contributors, and D&D journals

The project is brought to you by Simon Michael, 140-plus contributors credited in doc/CREDITS.md, and a sponsor wall generated by a script, listing individuals and companies including finance-adjacent names like FinMasters and an accounting firm, with sponsorship details at hledger.org. The examples directory doubles as documentation of scope, sample journals for budgeting, business accounting, borrowing, bitcoin splits, Chinese text, aliases and multi-column balances, CSV import cases, and a dungeons-and-dragons directory, bookkeeping for a fantasy campaign being the memorable proof that the format models anything countable. Releases continue on both lines, 1.52.4 and 1.99.4 landing a day apart in September 2026 plus a test arm64 CIFS build, with the last push on 2026-09-27 under GPLv3 or later.

## Conclusion

Choose hledger when financial or time data should live in plain text under version control, when precise double-entry modeling matters more than a polished GUI, and when CSV import plus text, HTML, JSON or SQL output covers the reporting needs, since its strengths are the engine and the ecosystem rather than visual polish. Choose a graphical finance app when double-entry itself is unwanted friction. Before adopting, read the hledger 1.x and 2.x section, the project is mid-transition with 1.x frozen for stability and 2.x carrying new work including lot tracking and capital gains, and decide which line fits, then start from the examples directory and the beginner documentation on hledger.org.

## FAQ

### what is hledger?

hledger is lightweight, cross platform, multi-currency, double-entry accounting software using a plain text journal format, available with command-line, terminal and web interfaces. Written in Haskell and GPL-3.0 licensed, it tracks money, investments, cryptocurrencies, invoices, time and inventory in a format suited to version control.

### how to use hledger?

Record transactions in a plain text journal file with dated entries and indented postings that balance, then run report commands like hledger bs for a balance sheet or hledger is --monthly for a monthly income statement. More examples, tutorials and screenshots are linked from hledger.org.

### how to install hledger?

hledger installs easily on unix, mac or windows, with packages tracked across distributions as its Repology badges show, and a Docker image available that exposes the web UI on ports 5000 and 5001 with a /data volume for the journal. Complete built-in documentation, beginner videos and tutorials come with it.

### is hledger open source?

Yes, hledger is free software licensed under the GNU General Public License v3.0 or later, with a clean Haskell codebase continually improved since 2007 and more than 140 contributors credited.

### How does hledger relate to Ledger?

hledger is inspired by and partly compatible with Ledger CLI, so Ledger journals can often be used directly. It is also interconvertible with Beancount, and all three are part of the Plain Text Accounting ecosystem at plaintextaccounting.org.

## Sources

- [hledgerorg/hledger on GitHub](https://github.com/hledgerorg/hledger)
- [License: GPL-3.0](https://github.com/hledgerorg/hledger/blob/main/LICENSE)
- [Project website](https://hledger.org)
- [README](https://github.com/hledgerorg/hledger/blob/main/README.md)
- [Releases](https://github.com/hledgerorg/hledger/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/hledgerorg-hledger
