explaingit

simonmichael/hledger

4,490HaskellAudience · generalComplexity · 2/5LicenseSetup · moderate

TLDR

hledger is a plain-text personal finance tracker that stores all your transactions in a simple text file on your own computer, letting you run reports to see balances, income, and spending without any app or cloud account.

Mindmap

mindmap
  root((hledger))
    What it does
      Plain text accounting
      Double-entry bookkeeping
    What you can track
      Money and expenses
      Investments and crypto
      Time and invoices
    Interfaces
      Command line
      Terminal UI
      Web UI
    Data
      Plain text journal
      CSV import export
      Local only no cloud
    Audience
      Individuals
      Freelancers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Track all personal income and spending in a plain text file and generate monthly balance sheets from the command line.

USE CASE 2

Import a CSV bank statement, categorize transactions, and produce a report of where money went last month.

USE CASE 3

Track time spent on client projects in the same journal file alongside money, then report hours billed versus budgeted.

USE CASE 4

Manage a multi-currency portfolio of investments by recording trades in a plain text journal file you control.

Tech stack

Haskell

Getting it running

Difficulty · moderate Time to first run · 30min

Written in Haskell, install via system package manager or prebuilt binaries linked at hledger.org.

GPL v3, free to use, modify, and share, but any modified versions you distribute must also be open source under the same license.

In plain English

hledger is a personal finance tracking tool that stores all your financial data in plain text files on your own computer. The core idea, called plain text accounting, is that instead of using a proprietary app or a bank's web dashboard, you write transactions in a simple human-readable file called a journal, then run commands to produce reports. It has been actively maintained since 2007 and runs on Windows, Mac, and Linux. The accounting method it uses is double-entry bookkeeping, the same system professional accountants use. Each transaction records where money came from and where it went, so every amount always has two sides. This catches errors and keeps the numbers precise. The README shows a sample journal with opening balances, a grocery purchase, and a paycheck, then shows the balance sheet and income statement those three entries produce. You can track money, investments, cryptocurrency, time spent on projects, invoices, and inventory, all in the same file format. Reports can be exported as plain text, HTML, JSON, or SQL. The tool imports and exports CSV files, so you can paste in a bank statement and process it. It processes 25,000 transactions per second and handles multiple currencies and up to 255 decimal places. Several interfaces are available: a command-line tool, a terminal UI, a local web UI accessible in a browser, and compatibility with common text editors. All data stays local, there is no cloud sync or account required, and the files are just text so they work with version control tools like git. hledger is free and open-source under the GPL v3 license. The README mentions it is part of a broader community called Plain Text Accounting and is partly compatible with another tool called Ledger CLI. Documentation includes a full built-in manual, beginner videos, and tutorials. The README is a brief introduction, the full documentation lives at hledger.org.

Copy-paste prompts

Prompt 1
I want to start tracking my personal finances with hledger. Show me a minimal journal file with an opening bank balance, one grocery purchase paid by debit, and one paycheck deposit, then show me the commands to print a balance sheet and income statement.
Prompt 2
I have a CSV export from my bank. Walk me through importing it into hledger using a CSV rules file so transactions are automatically categorized by payee.
Prompt 3
Show me how to use hledger to track billable hours for freelance work alongside money, so I can report both time and income for a client in the same command.
Open on GitHub → Explain another repo

← simonmichael on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.