# Download
There are several ways to install hledger:
a. [Download the binary or system package for your platform](#a) (quick install, often out of date)
b. [Build the latest release with hledger-install](#b)
or [with stack](#b2)
or [with cabal](#b3) (slow install, up to date)
c. [Build the development version with stack or cabal](#c) (slow install, cutting edge)
## a. Download a binary or system package for your platform
Binaries or system packages are quickest to install, but they can be outdated or incomplete.
**Available binaries / system packages:**
(please [update this page](https://github.com/simonmichael/hledger/edit/master/site/download.md) /
report issues to packagers)
| Platform | Command/Link | Installs [version](https://repology.org/metapackage/hledger/badges)
### b1. with hledger-install
On systems with bash installed (mac, linux, unix-like windows..),
if you don't already have stack or cabal, or if you are having trouble with them,
[hledger-install](https://github.com/simonmichael/hledger/tree/master/hledger-install)
is an easy and reliable way to get the latest hledger.
It automates the install process using stack or cabal, avoiding common pitfalls:
**`curl -s https://raw.githubusercontent.com/simonmichael/hledger/master/hledger-install/hledger-install.sh > hledger-install.sh`**\
**`less hledger-install.sh`** *# satisfy yourself that the script is safe*\
**`bash hledger-install.sh`**
### b2. with stack
[`stack`](http://haskell-lang.org/get-started) is the more reliable of Haskell's two build tools, for new users.
You need stack 1.7.1 or newer; the latest release is best.
On 64-bit Windows, use the 64-bit version of stack.
The following command installs the main hledger packages;
you can save some time by omitting hledger-ui, hledger-web and/or hledger-api (optional user interfaces).
On Windows, hledger-ui is not available.
To estimate the build time, add `--dry-run`:
**`stack install --resolver=lts-13 hledger-lib-1.13.1 hledger-1.13.1 hledger-ui-1.13.1 brick-0.46 text-zipper-0.10.1 config-ini-0.2.4.0 data-clist-0.1.2.2 word-wrap-0.4.1 hledger-web-1.13 hledger-api-1.13`**\
Other [add-ons](/hledger.html#third-party-add-ons)
like
[hledger-diff](http://hackage.haskell.org/package/hledger-diff),
[hledger-iadd](http://hackage.haskell.org/package/hledger-iadd),
or [hledger-interest](http://hackage.haskell.org/package/hledger-interest)
can be installed like so:
**`stack install --resolver=lts-13 hledger-lib-1.13.1 hledger-diff-0.2.0.14 hledger-iadd-1.3.8 brick-0.46 text-zipper-0.10.1 config-ini-0.2.4.0 data-clist-0.1.2.2 word-wrap-0.4.1 hledger-interest-1.5.3`**\
### b3. with cabal
[cabal](https://www.haskell.org/cabal/) is the other Haskell build tool. If you're a cabal expert, use it in the usual way, eg:
**`cabal v2-update`**\
**`cabal v2-install hledger-1.13.1 hledger-ui-1.13.1 hledger-web-1.13 hledger-api-1.13 [hledger-diff-0.2.0.14 hledger-iadd-1.3.8 hledger-interest-1.5.3]`**\
#### Set up PATH
You will probably see a message about where the executables were installed.
After installation, make sure this install directory is configured in your shell's \$PATH
(preferably near the start of it, to preempt older hledger system packages you may have installed).
The install directory is:
| | on non-Windows systems | on Windows
|--------------------|------------------------|------------------------------------------
| If stack was used | `$HOME/.local/bin` | `%APPDATA%\local\bin` (eg `C:\Users\Joe\AppData\Roaming\local\bin`)
| If cabal was used | `$HOME/.cabal/bin` | `%APPDATA%\cabal\bin`
How to configure \$PATH is platform- and shell-specific.
If you are using bash, this should take care of it:
**`echo "export PATH=~/.local/bin:~/.cabal/bin:$PATH" >> ~/.bashrc && source ~/.bashrc`**
\
#### Test the installation
You should now be able to run the hledger tools (whichever ones you installed) and see the expected versions:
`$`**`hledger --version`**\
`hledger 1.13.1`\
`$`**`hledger-ui --version`**\
`hledger-ui 1.13.1`\
`$`**`hledger web --version`**\
`hledger-web 1.13`\
`$`**`hledger iadd --version`**\
`This is hledger-iadd version 1.3.8`\
And you can check that the unit tests pass (just for fun):
`$`**`hledger test`**\
`...`\
`✅ 188 tests passed, no failures! 👍 🎉`\