hash-cli
A fast command-line utility for computing file hashes using multiple algorithms simultaneously.
Features
- Multi-algorithm support – Calculate checksums using various hashing algorithms in a single pass
- Batch processing – Hash multiple files and directories in one command
- Recursive support – Use the
-r flag to traverse directories recursively
- Progress indicator – Visual progress bar for large files (>100 MB)
- Efficient – Uses parallel multi-writer approach to compute multiple hashes without re-reading the file
Supported Algorithms
| Algorithm |
Flag |
| Blake3 |
--blake3 |
| CRC32 |
--crc32 |
| MD5 |
--md5 |
| SHA-256 |
--sha256 |
| SHA-3 (224-bit) |
--sha3-224 |
| SHA-3 (256-bit) |
--sha3-256 |
| SHA-3 (384-bit) |
--sha3-384 |
| SHA-3 (512-bit) |
--sha3-512 |
| XXHash |
--xxhash |
Note: MD5 and CRC32 are included for compatibility and fast checksums only — do not use them for cryptographic security.
Installation
Prerequisites:
- Go 1.25 or newer
- A supported OS (Windows, macOS, Linux)
Option 1 — Build from source (recommended during development):
git clone https://github.com/marinewater/hash-cli
cd hash-cli
go build -o hash-cli .
Option 2 — Install into your $GOBIN from the project folder:
cd hash-cli
go install ./...
This will place the hash-cli binary into your $GOBIN (usually $GOPATH/bin), which should be on your PATH.
Usage
hash-cli [flags] FILE [FILE ...]
Flags:
--blake3 Compute BLAKE3
--crc32 Compute CRC32
--md5 Compute MD5
--sha256 Compute SHA-256
--sha3-224 Compute SHA3-224
--sha3-256 Compute SHA3-256
--sha3-384 Compute SHA3-384
--sha3-512 Compute SHA3-512
--xxhash Compute XXHash
-r, --recursive Recursive directory traversal
-U, --uppercase Print hashes in uppercase hex
Notes:
- You can pass multiple files or directories; each is processed in turn.
- A progress bar is shown for files larger than 100 MiB.
- Use the
-r flag to process directories recursively.
Examples
- Compute BLAKE3 and SHA-256 for a single file:
hash-cli --blake3 --sha256 ./test.txt
- Compute multiple algorithms for multiple files, uppercase output:
hash-cli --md5 --sha3-256 --xxhash -U file1.bin file2.iso
- Compute multiple algorithms for all files in a directory:
hash-cli --md5 --sha3-256 --xxhash -r ./data
- Compute SHA256 from Stdin:
cat file1.bin | hash-cli --sha256
For each file, the tool prints a header with the file name and size, followed by a table of hash names and values (hex):
Hashes for test.txt (12.0 KiB):
Name Hash
Blake3 9a03a7...
md5 098f6b...
sha256 a9489b...
When -U/--uppercase is used, the hex values are printed in uppercase.
Internally, hash-cli fans out the file stream to multiple hashers via a multi-writer, so the file data is read only once while multiple digests are computed in parallel. This significantly reduces I/O overhead when you need several algorithms at once.
Exit codes
0 on success
- Non-zero if a file cannot be opened or an error occurs during hashing
Development
go test ./...