paq is a fast command-line utility for hashing individual files or complete directory trees. It uses the BLAKE3 cryptographic hash function and is designed to produce deterministic hashes from filesystem content, making it useful for checking integrity, detecting changes, comparing directory states, and incorporating content hashes into automated workflows.
Directories are processed recursively through a parallel pipeline. paq hashes discovered content, sorts the resulting hashes to keep output deterministic, and then hashes that ordered set to produce the final value. The tool deliberately concentrates on content rather than filesystem metadata, so ownership, permissions, timestamps, ACLs, extended attributes, and hard-link information do not contribute to the resulting hash. Symbolic links are handled by hashing their target paths rather than following and hashing the target contents.
paq can be used as a standalone executable or as a Rust crate. The command-line tool writes its result to a .paq file as valid JSON, while the crate exposes hashing functionality for Rust applications. Hidden files and directories can optionally be ignored.
This is free and open source software.
Key Features
- Hashes individual files or directory trees recursively with BLAKE3.
- Uses parallel processing to accelerate traversal and hashing.
- Produces deterministic results by sorting intermediate hashes before finalisation.
- Can optionally ignore hidden files and directories.
- Does not incorporate ownership, permissions, timestamps, ACLs, or extended attributes into content hashes.
- Hashes symbolic-link target paths without following the links.
- Provides both a command-line executable and reusable Rust crate.
- Writes command-line results to a .paq file using valid JSON.
Website: github.com/gregl83/paq
Support:
Developer: Gregory Langlais
License: MIT License

paq is written in Rust. Learn Rust with our recommended free books and free tutorials.
Related Software
| CLI Data Hashing Tools | |
|---|---|
| xxHash | Non-cryptographic hash algorithm |
| b3sum | Implementation of the BLAKE3 hash function |
| RHash | Calculate and verify magnet links and various message digests |
| md5sum | Compute and check MD5 message digest; part of GNU Coreutils |
| cfv | Test and create checksum files |
| Jacksum | Work with checksums, CRCs, and message digests |
| md5 | Generate / check MD5 message digest |
| digup | Update md5sum or shasum digest files |
| cksum | Compute and verify file checksums |
| Hashrat | Hash-generation utility |
| Directory Checksum | Recursively calculate checksums for directory contents |
| paq | Fast BLAKE3 hashing tool for files and directories |
| ddgst | Hashing and checksum utility |
| QCalcFileHash | Hash calculator |
| hashdir | Checksum directories and files |
| Hash Calculator | Calculates around 50 cryptographic hashes of strings and files |
| dano | Hashdeep/md5tree for media files |
| sha3sum | Keccak, SHA-3, SHAKE, and RawSHAKE checksum utilities |
| luha | Simple file checksum tool |
| filepack | File hashing and verification |
| bitrat | Fast file checksum tool supporting multiple hash algorithms |
| b2sum | Calculate BLAKE2 checksums |
| Additional tools: | |
| hashit | Generate file hashes quickly |
| hashdeep | Generate and verify file hashes |
| cksfv | Create and check sfv listings using CRC32 checksums |
| cksfv.rs | Reimplements the classic cksfv tool |
Read our verdict in the software roundup.
LinuxLinks helps you discover the best free and open source software for Linux. Explore our extensive collection of recommended applications, including alternatives to popular proprietary software.We also publish software reviews, Linux tutorials, hardware reviews, free programming books and articles covering the wider open source community. Browse our Linux resources to discover more. Know a useful free and open source Linux application we haven't covered? Suggest a program for inclusion. Has your software been featured on LinuxLinks? Display one of our Featured on LinuxLinks badges on your website or GitHub README. |


Please read our Comment Policy before commenting.
Thank you for featuring paq (I’m the author)! Version 2 was released a couple of weeks after this article was published. It adds optional symlink following (off by default) and improves performance, hashing the entire Go repository in 74ms, down from 78ms. In my benchmarks it was up to 25x faster than some of the other directory hashers I tested.