hledger can provide clarity and insight into your personal or business finances, time logs, or other dated quantitative data, with relatively little effort on your part. You need only provide a list of transactions, as a plain text file in a simple human-readable format. (Or a CSV file plus some conversion rules.) From this hledger can generate a variety of useful reports and interactive views. See Features.
hledger is a Plain Text Accounting system, which means:
Data is stored in simple plain text files, which can be easily read by humans, tracked with version control software such as Git, and maintained with text processing tools. This facilitates auditing, portability, and longevity of your valuable accounting data.
The data format is flexible and easy to write or generate, but hledger can check it and prevent many kinds of error. This, plus the transparency and version control, provides confidence in your data and reports.
Data and software is kept on your local computer, keeping your financial data private and under your control. But if you should want to collaborate, version control makes that easy.
You can edit data with your favourite text editor or IDE, or a data entry UI, or convert and import data from other formats (eg CSV from your banks).
There is a fast command-line interface, which makes the tool easy to script, automate, and integrate into custom workflows.
The model of operation is simple: put a log of transactions in, get reports out.
It is fast, lightweight, non-distracting, and great for learning more of double-entry bookkeeping and accounting.
- list your transactions, payees, currencies/commodities, accounts, statistics
- show the hierarchy of accounts and subaccounts
- show the transactions affecting any account, and calculate its running balance
- make a balance sheet, showing your asset and liability account balances
- make a cashflow report, showing changes in your cash assets
- make an income statement, showing your revenues and expenses
- show simple bar charts by period
- show purchase costs/selling prices
- show market values in any currency at any valuation date
- calculate the rate of return of a savings account or investment
- make reports from timeclock or timedot time logs
- make reports from any CSV/SSV/TSV file
- make reports from any data which you have converted to a hledger-readable format
It can slice, dice, and present your data in different ways:
- filter out just the items or time period you're interested in
- show multiple periods side by side
- summarise accounts to a certain depth to give the big picture
- rewrite or pivot account names to transform reports
- output reports as plain text, HTML, CSV, TSV, JSON, SQL...
- run as a live-updating terminal UI, for fast interactive exploration
- run as a web app, allowing remote/multi-user browsing and data entry
- run as a JSON web API, for integrating with custom apps
If you add a few directives to the file, hledger can:
- combine multiple files / data sets
- generate recurring transactions by rule
- generate extra postings (splits) on transactions by rule
- show a forecast of future activity, eg to help with planning
- make a budget report, showing your budget goals and performance by account and period
Also, it can:
- generate interest transactions by rule
- help you enter new transactions with prompts or a terminal UI
- help you convert and import new transactions from external sources, eg banks
- be used as a library in a quick Haskell script or compiled program
hledger comes with multiple user interfaces that just work:
A command-line tool (CLI). Transactions are stored in a journal file which you can edit with a text editor. From this hledger produces various reports, without changing your data.
A live-updating terminal interface (TUI), that lets you review account balances and transactions quickly. (screencast)
A zero-setup web interface (WUI), allowing terminal-free, point-and-click usage. Run it privately on your local machine, or on a server to collaborate with others. (demo).
A haskell library. You can write scripts, add-on commands, or financial applications as powerful as hledger itself.
Within its scope - a Plain Text Accounting tool, which is by nature slightly technical - hledger aims to be intuitive, learnable and highly usable, learning from other PTA tools and taking PTA to a higher level of usability and utility. Here are some things it provides out of the box:
- Easy multi-currency double-entry accounting using only a plain text file
- Easy assisted data entry or CSV import
- Easy zero-setup command line, terminal, and web user interfaces
- Easy multi-period balance sheet, income statement, and cashflow reports
- Easy summarising of account balances to a desired depth
- Easy output to text, HTML, CSV, JSON or SQL
- Easy import/export/co-usage with Ledger CLI or Beancount
- Easy to download or build on all major platforms
hledger strives to be comfortable to use, to be absolutely dependable, to provide real-world value, and to never waste your time. It provides:
Robust installation: multiple options are provided for binary and source installation. Building from source is reliable and consistent across platforms.
Robust execution: hledger is written in Haskell, a modern, highly-regarded programming language. Runtime failures are minimised by Haskell's memory management and strong compile-time type checking. Failures caused by user input are reported clearly and promptly.
Robust features: built-in commands and options combine well with one another, and are expected to do something sensible in all cases, with all kinds of input.
Robust parsing: dated items, such as balance assertions and balance assignments, are processed in date order. Assertions/assignments with the same date are processed in parse order. Multiple assertions/assignments within a single transaction work as you would expect.
Robust calculation: results are expected to always perfectly match what you would calculate on paper, up to 255 decimal places.
Robust reporting: reports are deterministic and not affected by the order of input files or data items except where that is part of their spec.
Robust testing: The software is continually tested by more than a thousand automated tests.
Robust documentation: all functionality is documented precisely, with a mnemonic permalink. User manuals for your hledger version are available online, and also built in for offline viewing. General and command-specific command line help is provided. We favour documentation-driven development.
- Reports normally take a fraction of a second.
hledger-ui --watchnormally updates instantly as you edit.
- On a 2021 macbook air m1, hledger processes about 15k-25k transactions per second (depending on version).
hledger is a rewrite of the pioneering Ledger CLI, aiming to build out the same core features to a higher level of quality, and to add new ones making it useful to more people. Ledger users will find the file formats and commands familiar, and with a little care can run both tools on the same data files. (You can read more about the origins and differences.)
Many tools exist for importing from other applications. Data can be exported as CSV, JSON or basic SQL.
hledger is Free Software, with no purchase price or monthly fees. It is licensed under GNU GPLv3+, providing the strongest guarantee that you will always have the right to run, inspect, modify, or share it. It is actively maintained, with regular releases and a large chat room and other support resources.
- ... easy for completely non-technical people to install and use (without a little help)
- ... easy to use on a phone
- ... equipped with mature, polished GUIs
- ... or easy charts
- ... able to download directly from banks and financial institutions
- ... with as many investing-savvy users as Beancount
- ... simple, clear and obvious for all needs, or masterable in a day (or a week).
Double Entry Bookkeeping, Plain Text Accounting, and Accounting in general are deep and rich topics; as a newcomer you might feel there's too both much and not enough to read, too much flexibility and not enough structure or guidance. You may need to pace yourself, ask the chat for tips, and learn through practice.