Skip to playground

Beancount, rewritten in Rust

Drop in Rust replacement
for Beancount

Accounting in plain text, under your control, forever.

$ cargo install rustledger

Requires Rust toolchain. Or use cargo binstall rustledger for prebuilt binaries.

$ brew install rustledger/rustledger/rustledger

For macOS and Linux via Homebrew.

$ nix run github:rustledger/rustledger

Available in nixpkgs. Also works with nix run nixpkgs#rustledger.

$ yay -S rustledger-bin

For Arch Linux via the AUR. Use your preferred AUR helper.

$ sudo apt install rustledger

For Ubuntu/Debian. First run sudo add-apt-repository ppa:robcohen/rustledger.

$ sudo dnf install rustledger

For Fedora/RHEL. First run sudo dnf copr enable rustledger/rustledger.

> scoop install rustledger

For Windows via Scoop. First run scoop bucket add rustledger ....

$ docker run -v $PWD:/data ghcr.io/rustledger/rustledger

Mounts current directory. Works on any platform with Docker.

$ npm install @rustledger/wasm

WASM bindings for Node.js and browser usage.

$ curl -sSfL rustledger.github.io/i | sh
Linux
x86_64
Download
macOS
Apple Silicon
Download
Windows
x86_64
Download

See all binaries on GitHub Releases.

Star on GitHub ...

Try it in your browser

Powered by WebAssembly

Ready
Loading...

What is plain text accounting?

Your finances in simple text files you control forever.

Your data, your files

Simple .beancount files work with any text editor. No vendor lock-in, no subscriptions, no cloud required.

Git-friendly

Track every change with version control. See exactly what changed and when. Collaborate with diffs.

Future-proof

Text files from 1990 still work today. Your financial history will outlive any app or company.

25x
Faster
20
Built-in plugins
7
Booking methods
100%
Plain text

How does rustledger compare?

Plain text accounting tools at a glance

Ledger hledger Beancount rustledger
Language C++ Haskell Python Rust
Syntax Ledger Ledger Beancount Beancount
Validation Optional Optional Strict Strict
Speed (10k txns) ? ? ~900ms ~35ms
Dependencies None GHC runtime Python + pip None
Booking methods Manual Manual 7 7
Plugins No No Python 20 + Python
WebAssembly No No No Yes

Your existing .beancount files work without changes

Same commands you know

$ bean-check ledger.beancount
$ bean-format --in-place ledger.beancount
$ bean-query ledger.beancount
$ bean-report ledger.beancount balances

Full BQL support

beancount> SELECT account, SUM(position)
...> WHERE account ~ "Expenses"
...> GROUP BY account
...> ORDER BY SUM(position) DESC

Everything you need

Full syntax support
All 12 directive types, cost specs, price annotations, arithmetic
Zero dependencies
Single binary, no Python or runtime required
20 built-in plugins
implicit_prices, auto_accounts, pedantic, and more
WASM plugins
Extend with WebAssembly for sandboxed custom logic
7 booking methods
STRICT, FIFO, LIFO, HIFO, AVERAGE, and more
30 error codes
Comprehensive validation with clear messages

Ready to switch?

One command. No configuration.

$ curl -sSfL rustledger.github.io/i | sh
or cargo install rustledger