High-performance archiver and backup for mission-critical data.
Like 7z or RAR on steroids, with deduplicated snapshots (versions) in a single file:
far more efficient and versatile than Time Machine or ZFS snapshots.
Built for speed on multi-core CPUs and modern SSD/NVMe drives: 1 GB/s and more, up to 3x faster than 7-Zip.
| program | time | archive |
|---|---|---|
| zpaqfranz (current) | 6.5 s | 5.44 GB |
| zpaqfranz (older) | 15.4 s | 5.64 GB |
tar | zstd -1 |
8.1 s | 6.22 GB |
7-Zip -mx1 |
21.9 s | 5.74 GB |
WinRAR -m1 |
40.4 s | 6.01 GB |
Quick-and-dirty comparison against popular archivers: Windows 11, Ryzen 9 7950X3D, RAM disk, a Debian virtual machine of 11.7 GB as test set. 7-Zip 26.03, RAR 7.23, zstd 1.5.7, each in its fastest mode; median of three runs. Full details in the release notes of 65.3 and 65.5.
And that is only the first run. On the second one 7-Zip, RAR and tar rewrite everything; zpaqfranz stores only what changed.
🖥️ catpaq - Official GUI, open source, ready to use on many platforms.
📥 Direct downloads (latest versions):
Key features
- Deduplicated, incremental and versioned backups
- Anti-ransomware integrity checks and deep validation
- Multi-hash support: SHA-2, SHA-3, BLAKE3, XXH3 and more
- Strong encryption: AES-256 (
-key) as standard, optional ChaCha20-based Franzen (-franzen), or even both! - Low bandwidth for cloud, NAS and USB: only the new data travel
- Full deduplicated disk imaging
- Read-only mount of archives as a drive or a folder
- GUI for Windows, Linux and macOS: catpaq
Cross-platform and lightweight: Windows (XP included), Linux, macOS, FreeBSD, OpenBSD, TrueNAS, Synology, QNAP, ARM and ESXi. Without Franzen encryption, every archive can still be extracted by the original zpaq 7.15.
15+ years of active development • 100% FOSS • Forever free
Projects made by others around zpaqfranz and the zpaq format.
They are independent and I have not developed or tested them, so give them a try with a bit of care:
Доверяй, но проверяй (doveryai, no proveryai: trust, but check)
| Project | Type | Description |
|---|---|---|
| rizpaq | Windows | ZPAQ power without the console. Desktop archiver for Windows: versioned ZPAQ backups, PAR2 protection, ZIP/7z/RAR support. GUI for zpaqfranz. |
| ZpaqTreeView | Python | Allows browsing and extraction of a zpaqfranz archive in a tree/hierarchical file structure view. |
The default of a (add) is now faster on every side: zstd compression (-m8), a multithreaded deduplicator (-turbo),
a cached list of the files (-fast: l in a fraction of a second).
The archive is still a normal zpaq archive: zpaq 7.15 extracts it too.
Smarter and faster
- Checking a backup against the disk (
t backup.zpaq c:\data -ssd): nothing is decompressed, the files are read in parallel. 116,725 files (6.5 GB) checked in 2.0 s (warm cache, 32 threads). - Windows, whole NTFS drives: the file list is read straight from the
$MFT, 7 times faster on aC:than the standard FindFirstFile/FindNextFile (12 times with a shadow copy). - Millions of files with little RAM: 3.5 million files added with only 8 GB of RAM.
zpaqfranz a z:\c.zpaq c: -image
One switch, and it chooses by itself: on NTFS the used clusters, from a shadow copy (VSS), without pagefile and hiberfil;
FAT, FAT32 and exFAT by their used clusters too; anything else byte by byte (-raw for that, always).
Deduplicated like everything else: the second image of the same C: stores only what changed.
- About 800 MB/s for the image of
C:on my workstation (2026, NVMe, 16 cores) - Thin images: the free clusters become zeros in the image.
- Back out as a virtual disk:
image z:\c.zpaq c: -to d:\c.vhd(or.vhdx,.vmdkfor VMware, VirtualBox, QEMU/Proxmox, or a raw file), any older version with-until, over 2 TB too - Back on a partition:
image z:\c.zpaq c: -to g: -image - The whole disk of Windows, for a restore that boots (beta):
ac z:\pc.zpaqtakesC:plus the hidden partitions and the partition table;xc z:\pc.zpaq -to 2: -forceputs it back (or-to x.vmdk/x.vhdx). There is a WinPE ISO to restore from.
On Linux, the BSDs and macOS a /dev/sdb -image takes the device byte by byte, and image gives it back as a raw file.
zpaqfranz mount z:\backup.zpaq (Windows: the first free drive letter, Explorer opens on it)
zpaqfranz mount z:\backup.zpaq Z: -all (every version, one folder each)
zpaqfranz mount /backup/nas.zpaq /mnt/zpaq (Linux, FreeBSD, OpenBSD, macOS)
The archive becomes a read-only drive or folder: open, copy, search, play, diff any file, with no temporary folder.
-all: one folder per version, each a full snapshot. "What did this file look like in June?" is acopy; "what changed between two backups?" is adiff -rbetween two folders-range 5:9: only what versions 5 to 9 added or changed- encrypted, Franzen and multipart archives too;
-testmounts, reads every file through the mountpoint and checks it - Images too:
mount d:\c.vhdattaches a.vhd,.vhdxor.isoread-only, and you look into yesterday'sC:
Windows needs WinFsp (mount offers to download and install it; zpaqfranz-full.exe carries it inside);
Linux and the BSDs FUSE, macOS FUSE-T or macFUSE. The mount of .vhd/.iso needs no WinFsp, only the administrator (it asks).
proxvzdump / zfsproxbackup for every guest of Proxmox, with their restores ·
mysqldump / mysqlrestore ·
repack to keep only some versions (7d4w12my) ·
reports by e-mail (-mailfull, -mailprivacy) ·
x -recover on damaged archives ·
cloud upload in append ·
f -test surface test of a disk or a USB stick ·
SFX on Windows ·
help in English, Italian and Russian (-it, -ru)
zpaqfranz a backup.zpaq /home/me/data # first run: everything; then only the changes
zpaqfranz i backup.zpaq # the versions
zpaqfranz l backup.zpaq # the files of the last version
zpaqfranz t backup.zpaq /home/me/data -ssd # is the backup equal to the disk?
zpaqfranz x backup.zpaq -to /tmp/restore -until 3 # restore version 3
zpaqfranz mount backup.zpaq /mnt/zpaq -all # browse every version
Windows is the same (zpaqfranz a z:\backup.zpaq c:\data).
Run zpaqfranz alone for the help, zpaqfranz h <command> for one command,
or zpaqfranz t with no archive to choose it on a screen.
The help follows the language of the system (English, Italian, Russian). To choose it, add -eng, -it or -ru
to any line: zpaqfranz -it, zpaqfranz h a -ru.
Archiving a folder 5 times, a daily run Monday to Friday, with 7z:
7Z-1.mp4
The same with zpaqfranz:
Zpaq-1.mp4
The five daily .7z take about 5 times the space of the .zpaq.
Classic archivers (tar, 7z, RAR...) are the wrong tool for repeated backups, and even more so for SQL dumps.
More videos: a real file server (recorded in 2023, with older versions, so slower than today)
Physical Xeon machine with 8 cores, 64 GB RAM and NVMe disks, plus a Solaris-based NAS, 1 Gb ethernet.
rsync update, filesystem to filesystem (real speed):
Rsync.Backup-1.mp4
rsync update to the Solaris NAS (real speed):
Rsync.Nas-1.mp4
Backup update from the file system with zpaqfranz (real speed):
Zpaq.Backup-1.mp4
Backup update via zfsbackup (real speed):
Zfs.Backup-1.mp4
Windows client, encrypted update of C: without the programs (-frugal), real speed:
vss.mp4
Every-sector encrypted update of a 256 GB C: (accelerated):
dd.mp4
Testing an archive at more than 1 GB/s (accelerated):
test.mp4
Update of a small server (300 GB) on a QNAP NAS: ~7 GB of Thunderbird mbox become ~6 MB, in ~4 minutes (real speed):
update-nas.mp4
rsync of two remote backups, the .zpaq (file level) and zfsbackup (block level), one day of work of a small server (accelerated):
download.mp4
| Variant | Download | Self-update | Notes |
|---|---|---|---|
| Windows 64 (recommended) | zpaqfranz.exe | zpaqfranz upgrade -force |
HW acceleration auto-detected (SHA-1/SHA-2) |
| Windows 64 Full | zpaqfranz-full.exe | - | Every library inside, WinFsp included: no internet needed |
| Windows 64 Open | zpaqfranz-open.exe | - | Built only from the source: no binary blobs, no network, no mount of archives |
| Windows 64 HW | zpaqfranzhw.exe | zpaqfranzhw upgrade -force |
Extra SHA-1 acceleration (AMD, ~+1.5%), with -hw |
| Windows 32 | zpaqfranz32.exe | zpaqfranz32 upgrade -force |
Limited RAM and threads: slower |
| Everything | SourceForge | All the builds, the WinPE ISO, the older versions |
upgrade checks a digitally signed (.p7m) SHA-256 before replacing the executable.
| System | Version | Install | Demo |
|---|---|---|---|
pkg_add zpaqfranz |
- | ||
pkg install zpaqfranz |
- | ||
brew install zpaqfranz |
- | ||
sudo apt install zpaqfranz |
|||
sudo apt install zpaqfranz |
- | ||
sudo zypper install zpaqfranz |
- | ||
| AUR: zpaqfranz-git | |||
| static binaries | - |
The packages of the distributions follow the releases with some delay (green: up to date, red: behind). Every distribution that has zpaqfranz: Repology.
catpaq is the official open-source GUI: direct downloads at the top of this page.
In the console there is tui too: zpaqfranz backup.zpaq opens it.
A file server of a mid-sized company, ~500,000 files and ~500 GB: 1042 versions in 817 GB.
root@f-server:/copia1/copiepaq/spaz2020 # zpaqfranz i fserver_condivisioni.zpaq
zpaqfranz v51.27-experimental snapshot archiver, compiled May 26 2021
fserver_condivisioni.zpaq:
1042 versions, 1.538.727 files, 15.716.105 fragments, 877.457.003.477 bytes (817.20 GB)
< Ver > < date > < time > < added > <removed> < bytes added >
00000001 2018-01-09 16:56:02 +00308608 -00000000 -> 229.882.913.501
00000002 2018-01-09 18:06:28 +00007039 -00000340 -> 47.356.864
00000003 2018-01-10 15:06:25 +00007731 -00000159 -> 7.314.709
(...)
00000147 2018-03-28 17:08:28 +00000422 -00000134 -> 277.237.055
(...)
00001041 2021-05-04 17:13:40 +00000605 -00000004 -> 95.909.988
00001042 2021-05-05 17:15:13 +00000579 -00000008 -> 82.487.415
The files as they were on 2018-03-28? That is version 147:
zpaqfranz x fserver_condivisioni.zpaq -to /tmp/restore -until 147
Another one, a ~200 GB server: 4904 versions from August 2017 to March 2021, in 186 GB. With tar, 7z or RAR the same 4900 copies would take 200 GB × 4900, about 980 TB. The same goes for virtual machines.
Who made ZPAQ? One of the world's leading scientists in compression. No, not me, but this guy (ZPAQ on Wikipedia), from 2009 to 2016, on encode.su, one of the best-known (and super-niche) compression forums.
Why is it not as known as 7z or RAR, if it is so much better? Because few people use it. Try it!
Who are you? A user (and a developer) who proposed and made various improvements to ZPAQ over the years. When Dr. Mahoney retired, I made this fork to get the functions I need as a data storage manager.
What if zpaqfranz is abandoned tomorrow?
Your data are not locked in. A zpaqfranz archive is a standard zpaq archive: without Franzen encryption, the original
zpaq 7.15 of 2016 extracts it, the zstd methods (-m7, -m8, -m9) too, because their decoder is stored inside the archive.
With a -715 zpaqfranz writes plain zpaq 7.15 archives, without any extension of its own. And zpaqfranz itself is one MIT source file that builds almost anywhere.
Why should I trust this? It will be one of the 1000 programs that fail silently.
As the Russians (and the Italians) say: trust, but check!
Checking is the part of the program I have worked on the most: hashes of every fragment and of every file, t against the disk,
w and tw that decompress in RAM, p for the paranoid.
In 65.15 the tests themselves were tested: 84,000 copies of archives damaged on purpose, every byte, six ways.
Result: no test said OK with a file lost or wrong.
We already have borg, restic, hashbackup, bupstash...
Great programs, often very well made. They work on a repository: a folder with many files to keep together.
zpaqfranz keeps everything in one file that only grows at the end: a copy is a copy of one file,
rsync --append sends only the new tail, and the archive of today extracts the data of eight years ago.
If it is simple, maybe it will work.
Too good to be true?
It is not magic: a block deduplicator, a compressor and an archiver, chained.
There are faster compressors, better compressors, faster archivers, more efficient deduplicators.
What I never found is the four together, dead simple and reliable, with good handling of non-Latin file names, in one executable with 7z-like commands.
No tar | srep | zstd | something pipes, no program with dozens of dependencies.
The archive is never modified, only appended
So rsync --append (over ssh, to a NAS, to the cloud) copies only the part added by the last run:
not the 700 GB of the archive, the 2 GB of yesterday. Hundreds of GB of virtual servers can be sent over a VDSL line in minutes.
For a developer: a "super git"
Put a zpaqfranz a at the top of the makefile and every version of your software is kept, libraries and SQL dumps included, forever.
Never delete anything?
You can keep every version forever. When you want fewer, repack writes a new archive with only the ones you choose
(e.g. repack old.zpaq 7d4w12my -to new.zpaq: grandfather-father-son, by days, weeks, months and years; -test shows what would be kept).
Defects? Some.
- Extraction may need many seeks (deduplicated blocks): slow on spinning disks, not on SSDs. With enough RAM
wavoids it, andxxwrites the extracted files sequentially (much faster on spinning disks, less fragmentation). - Many small files: there
tar | zstdis faster at the first run (zpaqfranz does more work per file: path, attributes, hashes for the deduplication). From the second run on, zpaqfranz stores only the changes. - It is a tool for power users and administrators, used to the command line. catpaq and
tuihelp. - It is known and used by few.
One file, zpaqfranz.cpp, no dependencies (link pthread):
g++ -O3 -Dunix zpaqfranz.cpp -o zpaqfranz -pthread (Linux)
clang++ -O3 -Dunix zpaqfranz.cpp -o zpaqfranz -pthread (FreeBSD, OpenBSD, macOS)
g++ -O3 zpaqfranz.cpp -o zpaqfranz -pthread -static -lurlmon (Windows, MinGW)
With mount: add -DZPAQMOUNT and FUSE ($(pkg-config fuse3 --cflags --libs) on Linux); the lines for every system
are in "Building with Mount Support", at the top of the source.
Every release is built and tested on Windows, Linux (Fedora, openSUSE, Arch, Oracle Linux 7), FreeBSD, OpenBSD, macOS, Solaris, ESXi and ARM NAS.
- Almost "universal" (minimal) Makefile
- Quicker and dirtier!
- DEFINEs at compile time
- Target examples
- Hidden gems
- Strange things
MIT, Copyright (c) 2021-2026 Franco Corbelli. Based on ZPAQ 7.15 by Matt Mahoney; the licenses of the built-in libraries are listed in the source.
