Unzip at 657 MB/s
A command-line archive tool for Windows that decompresses every file in an
archive at the same time, one per CPU core. No installer, no graphical
interface — a single 2.8 MB executable you drive from
cmd or PowerShell.
-t changed.
Get started
Three commands cover almost everything
Fzip has no window and no menus. You type a command; it does the work and
prints what happened. Double-clicking fzip.exe shows the help
screen and waits — that is expected, not an error.
1 · Unpack an archive
> fzip x archive.zip
Creates a folder named after the archive, right next to it. Works the same
for .rar, .7z, .tar.gz and the rest.
2 · Look inside first
> fzip l archive.zip
Lists every entry with its size, compression method and whether it is encrypted — without writing anything.
3 · Make an encrypted zip
> fzip a backup.zip MyFolder -p
A bare -p prompts for the password without echoing it, so it
never lands in shell history. You get real AES-256.
Opening a terminal where your archive is
- Open the folder containing the archive in File Explorer.
- Click the address bar, type
cmd, press Enter. - A terminal opens already pointed at that folder. Type your command.
To call it as fzip from anywhere, put fzip.exe in a
folder such as C:\Tools and add that folder to your PATH.
You can also just drag an archive onto fzip.exe in Explorer.
Reference
Every command and option
The complete surface of the tool. Also available as plain Markdown for scripts and assistants.
| Command | What it does | Example |
|---|---|---|
| x | Extract an archive. Output goes to a folder named after the archive, created beside it. | fzip x data.zip |
| l | List the contents: size, compression method, encryption, name. Writes nothing. | fzip l data.zip |
| t | Test integrity. Decompresses and verifies every CRC in memory, writing nothing to disk. | fzip t data.zip |
| a | Create a zip from files and folders. Add -p for AES-256. | fzip a out.zip src docs |
| (none) | Passing just an archive is the same as x. This is what drag-and-drop uses. | fzip data.zip |
| Option | Meaning |
|---|---|
| -o <dir> | Write output to this folder instead of the default. |
| -p [pass] | Password. Give the value inline, or leave it off and Fzip prompts without echoing — which keeps it out of shell history. |
| -t <n> | Number of worker threads. Defaults to every core. |
| -i <glob> | Include only entries matching the pattern. Repeatable. |
| -x <glob> | Exclude entries matching the pattern. Repeatable. |
| -e | Flatten: ignore folder structure and put every file in one place. |
| -y | Assume yes. Needed to overwrite an existing archive when creating one. |
| --overwrite <mode> | all (default), skip, rename or newer — how to treat files that already exist. |
| -mx<0-9> | Compression level for a. 0 stores without compressing, 9 is smallest. |
| --max-memory <n> | RAM ceiling, e.g. 512M or 2G. Default 1G. |
| --no-crc | Skip CRC verification. |
| --progress | Force the progress bar even when output is redirected to a file. |
| -q / -v | Quiet (errors only) / verbose (name every file). |
| -V / -h | Version / help. |
Worked examples
# unpack somewhere specific fzip x data.zip -o D:\output # pull only the images out of a big archive fzip x photos.rar -i "*.jpg" -i "*.png" # unpack again without touching existing files fzip x update.zip -o D:\app --overwrite skip # smallest possible encrypted backup fzip a backup.zip D:\work -mx9 -p # check a download before trusting it fzip t installer.zip
Exit codes, for scripts
| Code | Meaning |
|---|---|
| 0 | Success. |
| 1 | Warning — something was skipped, the rest succeeded. |
| 2 | Error — corrupt archive, wrong password, or could not write. |
| 7 | Bad command line, or the file was not found. |
@echo off fzip x "%~1" -q if errorlevel 2 (echo Extraction failed) else (echo Done)
Why it is fast
One archive, split across every core
A ZIP archive stores each file as an independent compressed block. That means they can all be decompressed at once, rather than queued behind one another. Below is the same 183 MB archive and the same binary, with only the worker count changed.
Decompression throughput by worker count
Three times the throughput of a single worker, levelling off around twelve
because the archive only holds so much independent work. Measured with
fzip t, which decompresses and verifies without writing to disk.
What you actually see on disk
Extracting the same archive to an SSD takes 0.80 seconds —
about 229 MB/s end to end. Past four workers the drive, not the CPU, sets
the pace. Fzip is fastest where decompression is the bottleneck: many files,
fast storage, or fzip t where nothing is written at all.
Formats
What it opens, and what it writes
Reads eight formats
zip rar 7z tar gz bz2 xz zst — plus combinations like .tar.gz and .tgz, unwrapped in a single step instead of two.
Writes zip, encrypted
Parallel deflate with genuine AES-256. Fzip refuses to create legacy ZipCrypto, so a password always means real encryption.
Ignores the extension
Format is read from the magic bytes at the start of the file, so an archive with the wrong name still opens correctly.
Memory stays flat
Entries above 32 MB stream straight to disk. A 200 MB file peaks at 9 MB of RAM; a 50 GB one does the same.
Safety
An archiver opens files it did not create
Two audits were run against Fzip: one behavioural, one line-by-line against the PKWARE specification. Thirteen real defects were found and fixed, including two that could kill the process from a 98-byte file. Each has a regression test.
- Path traversal blocked. Entries with
.., drive letters or absolute roots cannot write outside the destination, and each one is reported by name. - Zip bombs refused. A 451-byte archive that expands to 400 MB is stopped at its declared size instead of eating half a gigabyte.
- Device names renamed. An entry called
CONorNULbecomes_CON— files named after a device are nearly impossible to delete. - Long paths work. Past 260 characters Fzip writes through the extended form, and never reports success for a file it failed to create.
- Encrypt-then-MAC. AES entries are authenticated before decryption, so tampered data is rejected instead of decoding into garbage.
- CRC on every entry by default, using SIMD so it costs almost nothing.
- Hardened binary. ASLR, DEP, high-entropy address space and Control Flow Guard, with a full application manifest. Never packed or obfuscated.
- Not yet code-signed. The honest gap. An unsigned binary with no download history can draw a machine-learning false positive; the cause is documented rather than hidden.
Download
One file. Nothing to install.
No runtime, no DLLs, no registry entries. Put it anywhere and run it.
fzip.exe · version 1.0.0
Windows 10 and 11, 64-bit. 2,865,664 bytes. Reads all eight formats, creates encrypted zip.
Check it before you run it
PS> Get-FileHash fzip.exe -Algorithm SHA256
That hash identifies this published binary. Compiling the source yourself gives a
functionally identical executable with a different hash, because Rust builds are
not bit-for-bit reproducible — expected, not tampering. Building it yourself
is the strongest check available without a code signature, and every dependency
is pinned in Cargo.lock.
Limits
What Fzip will not do
Said up front, so nothing surprises you later.
- Creates zip only. No 7z, tar or RAR authoring. RAR compression is proprietary and cannot legally be reimplemented.
- Solid archives cannot be parallelised. A solid
.7zor.raris one continuous stream, so extracting those is single-threaded and slower than zip. - No graphical interface, no shell integration, no self-extracting archives. It is a command-line tool, by design.
- Two zip methods unsupported: LZMA-in-zip and Deflate64 are reported clearly rather than mis-extracted.