Purrchiver reads 30+ formats (counting variants) and writes 20+. The complete matrix is below, grouped by category.
If you’re searching for a specific format and it’s not listed here, see What’s not supported at the bottom — it may be an intentional skip with a documented reason.
How Purrchiver does it
Purrchiver uses three engines, picked per format:
- libarchive (BSD-2 license) — the primary engine, handles most formats.
- UnRAR (RarLab freeware, read-only permitted) — handles encrypted RAR.
- AppleArchive (Apple system framework) — handles AAR (Apple Archive).
There are no shelled-out CLI tools, no 7zz / unar subprocess. Everything
is a vendored library inside the app bundle. The app is self-contained.
See the architecture decision record for the full rationale.
Common formats
| Format | Read | Write | Notes |
|---|---|---|---|
| ZIP | ✓ | ✓ | The default for most use. Cross-platform safe. |
| ZIP + AES-256 | ✓ | ✓ | Modern, secure ZIP encryption. The default when encrypting ZIPs. |
| ZipCrypto ZIP | ✓ | — | Legacy ZIP encryption — Purrchiver reads these but won’t write them (see why). |
| ZIP64 | ✓ | ✓ | ZIP extension allowing archives > 4 GB. |
| RAR4 | ✓ | — | Older RAR. RAR can’t be written by third-party tools per RarLab’s license. |
| RAR5 | ✓ | — | Modern RAR. Same restriction on writing. |
| Multi-part RAR | ✓ | — | Both .partN.rar and legacy .r00/.r01/… schemes. See Multi-part archives. |
| Encrypted RAR | ✓ | — | Both content-encrypted and header-encrypted. |
| 7z | ✓ | ✓ | Best compression. Good for personal archives. |
| 7z + AES-256 | ✓ | ✓ | Modern, secure 7z encryption. Header-encrypted variant supported. |
| tar | ✓ | ✓ | POSIX, ustar, pax, GNU variants all readable; ustar + pax written. |
| .tar.gz | ✓ | ✓ | Standard Unix gzipped tar. |
| .tar.bz2 | ✓ | ✓ | bzip2-compressed tar. |
| .tar.xz | ✓ | ✓ | xz-compressed tar. |
| .tar.zst | ✓ | ✓ | Zstandard-compressed tar. Modern, fast. |
| .tar.lz | ✓ | ✓ | lzip-compressed tar. |
gzip (.gz) | ✓ | ✓ | Single-stream. |
bzip2 (.bz2) | ✓ | ✓ | Single-stream. |
| xz | ✓ | ✓ | Single-stream. |
Zstandard (.zst) | ✓ | ✓ | Single-stream. Modern, fast. |
Brotli (.br) | ✓ | ✓ | Web tooling (nginx, Cloudflare, npm). Via Apple’s Compression framework. |
LZMA (.lzma) | ✓ | ✓ | Predecessor to xz; still in some legacy Linux tarballs. |
| ISO 9660 | ✓ | ✓ | Includes Joliet + Rock Ridge extensions. Data ISOs only (bootable ISOs on the v1.1 list). |
Apple ecosystem
| Format | Read | Write | Notes |
|---|---|---|---|
| AAR (Apple Archive) | ✓ | ✓ | Apple’s native format. LZFSE / LZMA / ZLIB compression options. macOS 11+. |
| XIP | ✓ | — | Apple Signed Archive. Extracts contents without verifying Apple’s signature (use Apple’s installer for signature-trust workflows). |
| PKG | ✓ | — | Apple flat-package installer. Read-only inspection — Apple’s pkgbuild / productbuild own creation. |
| MPKG | ✓ | — | Apple meta-package (multi-pkg installer). Same as PKG above. |
| IPA | ✓ | — | iOS app bundle. Detected and surfaced as “iOS app bundle”; extracted as the underlying ZIP. |
| XAR | ✓ | — | The container used by PKG/MPKG. Standalone read supported. |
| CPIO | ✓ | ✓ | POSIX + SVR4 variants. Same engine that drives XIP. |
Unix & Linux
| Format | Read | Write | Notes |
|---|---|---|---|
.deb | ✓ | — | Debian package via ar. Read-only peek-inside for Mac devs working with Linux containers. |
.rpm | ✓ | — | Red Hat package peek-inside. |
.lz (lzip) | ✓ | ✓ | GNU archival / scientific use. |
.lz4 | ✓ | ✓ | LZ4 frame-format streams. |
Legacy & archival
| Format | Read | Write | Notes |
|---|---|---|---|
| LHA / LZH | ✓ | — | Japanese / retro-Mac legacy. |
| CAB | ✓ | — | Microsoft Cabinet. Older Windows install media. |
| WARC | ✓ | — | Web Archive (Internet Archive crawl format). |
.Z (compress) | ✓ | — | Legacy Unix .Z archives — read-only restoration. |
What’s not supported
These are intentional skips. The reason is given for each. The Legacy & niche formats page goes deeper on the “detected but not extracted” formats and tells you what to use instead.
| Format | Why not |
|---|---|
| RAR (write) | RarLab’s UnRAR source license forbids creating RAR encoders from the UnRAR sources. A clean-room reimplementation would be legally permissible but goes against RarLab’s stated wishes — we honor both. Read-only is explicitly permitted and fully supported. |
StuffIt (.sit, .sitx) | Dead format, abandoned by Smith Micro. Detected; friendly error. See StuffIt files. |
| ACE | Proprietary, no clean OSS reader, documented malware-vector history. Detected; friendly error. See Legacy & niche formats. |
| ARJ | Long-tail DOS-era legacy. Not in libarchive. Not worth a bespoke reader. |
BinHex (.hqx) / MacBinary (.macbin) | 1990s Mac transport encodings. Detected; friendly error pointing to The Unarchiver. See Legacy & niche formats. |
| LZO / LRZIP / grzip | Niche Linux compressors with GPL-2 libraries that bring MAS-distribution friction not worth it for the user count. Detected; friendly error pointing to CLI tools. See Legacy & niche formats. |
.dmg | Disk image, not an archive. macOS mounts these natively via double-click. See Disk images. |
.exe self-extractors | Windows installers, not archives. Detected; friendly error. |
Deferred to v1.1 and later
These are on the roadmap. Not in v1.0 because they’re nice-to-haves rather than essentials.
- PKG / MPKG write — Apple’s
pkgbuild/productbuildare the correct tools for this; out of scope unless real user demand surfaces. - DMG read — possible via
hdiutilsubprocess; deferred to v1.1 scoping. .warcwrite — niche; web-crawler tooling owns this.- Snappy (Google) — Keka writes it; requires linking a separate Snappy library, not a libarchive freebie. Add if user demand surfaces.
- lzop / lrzip / grzip filters — libarchive has the filter sources
gated on GPL-2 dependencies that require MAS compliance work. v1.0
detects and shows a friendly error pointing users at the
lzop/lrzip/grzipCLI, or Keka for.lrz. Proper bundled support deferred until user demand justifies the GPL-2-in-MAS workstream. - Split-volume ZIP write — split read is in v1.0; write arrives in a later v1.0.x.
How counts are calculated
When the homepage and marketing materials say “30+ read, 20+ write”, they count each variant in the chip list above as one format. That comes out to ~39 read, ~21 write including encryption + multi-part variants.
If you’re searching by extension, you’ll find it in the chip list above under the appropriate category.