HatchZip
Extract huge archives without needing double the disk space.
HatchZip is a free, open-source archive extractor for Windows, macOS and Linux that extracts ZIP, 7z, RAR and tar archives in place. It removes each part of the archive once the files in it are safely on disk, so it needs free space for the extracted files only, not for the files and the archive together. It comes as a desktop app and a command line tool.
A 180 GB archive that unpacks to 200 GB needs 380 GB of disk with WinRAR, 7-Zip or unzip, because the archive and the extracted files have to exist at the same time. HatchZip needs a little over 200 GB: it extracts from the end of the archive and cuts each finished part off the archive file, so the space comes back as it goes.
Download
Windows 10 and 11, 64-bit. The macOS download is for Macs with Apple Silicon (M1 and later); for an older Intel Mac, get the Intel version. The Linux download is an AppImage that runs on most distributions; .deb and .rpm packages are below.
How to use it
- Install it. HatchZip is not code-signed yet, so Windows may show "Windows protected your PC": choose More info, then Run anyway. On a Mac, open the app once, then allow it in System Settings, Privacy & Security.
- Right-click the archive, choose HatchZip, then Extract here (Windows and Linux). On Windows 11 the menu is under Show more options.
- Or open the HatchZip app, open the archive or drag it onto the window, and choose Extract.
HatchZip shows whether the files will fit before it changes anything. The archive is used up as the files come out, so when it finishes, only the extracted files are left.
All downloads
| Platform | File | Type |
|---|---|---|
| Windows x64 | hatchzip-x86_64-windows.zip | zip |
| macOS Apple Silicon | hatchzip-aarch64-macos.tar.gz | tar.gz |
| macOS Intel | hatchzip-x86_64-macos.tar.gz | tar.gz |
| Linux x64 | hatchzip-x86_64-linux.tar.gz | tar.gz |
| Linux ARM64 | hatchzip-aarch64-linux.tar.gz | tar.gz |
| Platform | File | Type |
|---|---|---|
| Windows x64 | HatchZip-x64-setup.exe | Installer |
| Windows x64 | HatchZip-x64.msi | MSI installer |
| macOS Apple Silicon | HatchZip-aarch64.dmg | Disk image |
| macOS Intel | HatchZip-x86_64.dmg | Disk image |
| Linux x64 | hatchzip_amd64.deb | deb package |
| Linux x64 | hatchzip-x86_64.rpm | rpm package |
| Linux x64 | HatchZip-x86_64.AppImage | AppImage |
The MSI installs the same app as the setup, for deployment tools; install one or the other. The Windows installers and the macOS apps are not code-signed yet. On Windows choose More info, then Run anyway. On macOS, open the app once, then allow it in System Settings, Privacy & Security.
HatchZip does not use the network. To check that a download is genuine, compare its SHA-256 checksum or verify its signed build provenance: Verify your download.
Or install from a terminal. Linux and macOS:
curl -fsSL https://raw.githubusercontent.com/xevrion/hatchzip/main/install.sh | sh
Windows, in PowerShell:
irm https://raw.githubusercontent.com/xevrion/hatchzip/main/install.ps1 | iex
Or, with Rust installed: cargo install hatchzip
Then run hatchzip check game.zip to see whether it fits, and hatchzip extract game.zip to extract it. hz works as a short name, and man hatchzip has the full manual.
What it does
- Extracts ZIP (including ZIP64 and self-extracting
.exefiles), 7z, plain tar,.tar.gzand.tgz, and split archives (.001,.002, ...) of ZIP or 7z. - Extracts RAR 5 and RAR 4, single files and volume sets (
.part1.rar, ... or.rar,.r00, ...), freeing the archive file by file and deleting each volume once it is empty, including archives made with "Encrypt file names". A solid RAR can only be extracted while keeping the archive. RAR support is in the downloads from this site and the releases page, not incargo install hatchzip. - A
.tar.gzis read once from start to end before anything changes, so a damaged one is refused untouched. It then gives its space back as it extracts on NTFS (Windows), APFS (macOS), ext4, XFS, btrfs and other filesystems that can free part of a file. On FAT32 and exFAT it still extracts and resumes, but needs room for the archive and the files at once. - Checks that the extraction will fit before it changes anything.
- Can also extract normally and keep the archive, when there is room for both:
--keep-archive, an option in the app, or Extract here (keep archive) in the right-click menu. If keeping it does not fit, it says how much extracting in place needs instead. - Extracts several archives one after another, checking the space for each just before it starts. The first one that does not complete stops the run, with a list of what was extracted and what was not.
- Keeps 2 GB of free space by default, so the disk never fills to zero. Change it with
--keep-free. - Can be stopped with Ctrl+C, or crash, at any moment. Run the same command again and it picks up where it left off.
- Checks each file's CRC-32 as it extracts. A damaged file stops the run, and it stays in the archive.
- Never overwrites a file that is already there, so "extract here" is safe.
- Opens password-protected ZIP, 7z and RAR archives. It checks the password before anything is deleted, and never saves it.
- Works on any filesystem that can shrink a file: ext4, btrfs, XFS, NTFS, APFS, and exFAT and FAT32 USB drives.
Measured results
The same 200 MB of game data (21 files), packed by the real tools, extracted on a 220 MiB disk with about 50 MB free:
| Archive | unzip / 7-Zip | HatchZip |
|---|---|---|
| ZIP, 180 MB | unzip ran out of space at file 6 of 21 | Finished, every file byte-identical |
7z from 7-Zip 25.01, -ms=20m (10 solid blocks) | Needs 380 MB | Finished in 0.64 s, every file byte-identical |
| 7z split into 5 volumes of 40 MB | Needs 380 MB | Finished; volumes deleted one at a time, peak 210 MB used |
| tar from GNU tar, 200 MB | Needs 400 MB | Finished in 0.12 s, every file byte-identical |
| 7z from 7-Zip with default settings (1 solid block) | Needs 380 MB | Refused before touching anything: one solid block can't be freed until all of it is out, so it needs 200 MB free |
ZIP extraction of the same data took 0.25 to 0.35 s, against 1.48 to 1.50 s for unzip 6.00, including an fsync unzip skips. For crash safety, the process was killed at both unsafe moments of a batch at many points of each format's run; every resume finished with identical output.
Measured on Fedora 43, Intel Core i7-14700HX, SK Hynix NVMe SSD, warm page cache; the disk-space runs used a 220 MiB tmpfs to stand in for a full laptop disk, the speed runs ext4. Speed comes from decompressing files in parallel, so an archive holding one giant file extracts at the speed of a single core.
Limits
- A 7z made with 7-Zip's default settings can be one solid block. HatchZip can only free it once all of it is out, so it needs free space for the whole block.
hatchzip checktells you before anything changes. .tar.zstand.tar.xzare not supported yet. They are refused before extraction.- A solid RAR decodes front to back in one pass, so it can't be freed as it goes; it is extracted only while keeping the archive. RAR archives with links are refused before extraction, and one with encrypted file names cannot be restored after a partial extraction, only completed.
- The archive is used up as it extracts. If the download itself is damaged, the files before the damage come out and the archive is partly gone. Use
--verify-firstwhen you can't download it again.
Questions
Is HatchZip safe?
HatchZip checks that the extraction fits before it changes anything. A file is written and flushed to disk before the part of the archive holding it is cut off, so a crash leaves each file either extracted or still in the archive. Every file's CRC-32 is checked, and a damaged file stops the run. To check a download is genuine, see Verify your download.
Does HatchZip need internet access?
No. HatchZip has no networking code and no networking library, no telemetry, no accounts and no update checks. It reads the archive on your disk and writes the files next to it. Its CI fails if an HTTP, TLS or socket library enters the dependencies. The one link in the desktop app, to the source code, opens in your web browser.
Which archive formats does HatchZip extract?
HatchZip extracts ZIP (including ZIP64 and self-extracting .exe files), 7z, RAR 5 and RAR 4, plain tar, .tar.gz and .tgz, split .001 archives of ZIP or 7z, and RAR volume sets. It opens password-protected ZIP, 7z and RAR archives. A solid RAR is extracted only while keeping the archive. .tar.xz and .tar.zst are not supported yet.
How much free space does HatchZip need?
HatchZip needs about the size of the extracted files, plus the largest part it can free at once: one file for ZIP, tar and RAR, one solid block for 7z. A 180 GB archive that unpacks to 200 GB needs a little over 200 GB, not 380 GB. It also keeps 2 GB free by default. hatchzip check shows the exact figure and changes nothing.
What happens if HatchZip crashes or is stopped?
HatchZip saves its progress in two small files next to the archive. After a crash, a power cut or Ctrl+C, open the same archive in the app or run the same command again, and it continues where it stopped. To give up instead, hatchzip restore turns what is left into a normal archive holding the files not yet extracted.
Does HatchZip work on FAT32 and exFAT drives?
Yes. ZIP, 7z, tar and RAR archives are freed by shortening the archive file, which works on every filesystem, including FAT32 and exFAT USB drives. A .tar.gz frees space as it goes only where the filesystem can free part of a file, such as NTFS, APFS, ext4, XFS and btrfs. On FAT32 and exFAT it still extracts, but needs room for the archive and the files at once.
Guides
- Not enough disk space to extract a ZIP, RAR or 7z: why it happens and each fix, with a measured test.
- WinRAR says not enough space on disk when there is: the temporary folder, FAT32 and other causes.
- 7-Zip says there is not enough space on the disk: drag and drop, FAT32, and archives that don't fit.