Disclosure up front: I wrote Ziplark. It is MIT, free, and I will list its weak spots at the bottom so you can judge for yourself.
The Windows installer is 3.2 MB. Not because of any clever trick — the desktop app uses the OS webview instead of bundling a browser, and there is no account system, no store, no telemetry to ship.
One engine, three shells
Everything lives in ziplark-core. The GUI, the CLI and the MCP server are thin wrappers over it, so whatever the CLI does, the desktop app does identically.
ziplark list movie.rar # or: l
ziplark extract photos.zip -o ./out # or: x
ziplark create backup.tar.zst ./src --level best # or: c
ziplark test download.7z # or: t
ziplark info mystery.bin # format from magic bytes, not the extension
Options are few: -p/--password, -o, --overwrite, --include <PAT> to pull only matching entries, --level store|fast|default|best, and --json on every command.
That last one is the point. ziplark l big.7z --json gives you a structured entry list — path, size, compressed size, encrypted flag, CRC32 — so piping into jq just works.
The part you are probably here for: MCP
Ziplark ships an MCP server, ziplark-mcp, speaking JSON-RPC over stdio. Register it like anything else:
{"mcpServers":{"ziplark":{"command":"/path/to/ziplark-mcp","args":["--allow-write"]}}}
Now your agent can answer "is there a .env in this 7z?" or "extract this into tmp" or "is this download corrupt?" without you unpacking anything first.
Reads and writes are separated, and not the way you might expect. Three read-only tools — ziplark_info, ziplark_list, ziplark_test — are always available. The two that touch your disk, ziplark_extract and ziplark_create, do not appear in tools/list at all unless you pass --allow-write. It is not a runtime refusal; the model simply never sees them. Default is read-only.
Extraction is a security problem, so it gets one guard
The paths inside an archive are chosen by whoever made the archive. An entry can be named ../../../../etc/passwd. It can be a symlink pointing at a system directory. An extractor that takes them at face value lets one archive overwrite arbitrary files — the class of bug known as zip slip.
Every format in Ziplark extracts through the same guard, and it checks both ends:
- the entry name —
../, absolute paths - what is actually on disk at the destination — is that a symlink?
The second check is the one that gets skipped elsewhere. That symlink may have been planted by an earlier entry in the same archive, or it may already be sitting in the target directory. There is a test named rejects_zip_slip that builds a hand-crafted escaping zip and throws it at the extractor.
Fifteen formats share that one guard because they share one engine.
Formats
Read and write: ZIP (AES-256), 7z (AES-256), tar, tar.gz/.bz2/.xz/.zst/.lz4, and gz / bz2 / xz / zst / lz4 single streams.
Read only: RAR and RAR5 (encrypted ones included) — the UnRAR licence forbids using that code to build a compressor, so no open-source tool can write RAR. Also ISO 9660 / Joliet, through a dependency-free parser.
Permissions, mtimes and symlinks survive the round trip, so an extracted binary still runs.
Right-click integration
ziplark shell-integration install # status | uninstall
Adds Extract here and Compress to ZIP. On Windows it writes to HKCU, so no admin prompt. On macOS it installs two Automator Quick Actions; on Linux, KDE service menus and Nautilus scripts. All three just shell out to the same ziplark binary, so moving the binary moves the menu with it.
Name collisions never clobber: an existing folder gets (2), (3) appended.
How it compares
7-Zip is the solid one here — version 26.03, mostly LGPL, and it reads thirty-odd formats including ARJ, CAB, CHM, DMG and VHD. But its GUI is Windows-only; on Linux and macOS the official build is a console version.
WinRAR 7.23 is the only one that can create RAR. Its licence says plainly: "anyone may use the software during a test period of a maximum of 40 days at no charge", then "the user must purchase a license to continue using the software." A single-machine licence is $29 at checkout today.
Bandizip's free tier is funded by ads — that is their own product page wording, Advertising-supported software. Pro is $30 perpetual for up to 5 machines.
Three things it is not
It is barely used. 1 star on GitHub; the v0.2.2 Windows installer has 11 downloads. You would be an early user, and you would probably be filing your own issues.
It reads fewer formats than 7-Zip. Fifteen versus thirty-plus. No ARJ, CAB, CHM, DMG, MSI, VHD or SquashFS. Keep 7-Zip for the long tail.
No RAR creation and no split archives. RAR is a licence wall nobody can climb. Split volumes are just not built yet — there is no such option in the CLI and no such concept in the engine. If you need a file cut into five 200 MB parts, WinRAR or 7-Zip.
The desktop UI is also plain. No image preview inside archives, which Bandizip Pro has.
Install
Windows .exe 3.2 MB or .msi 4.3 MB. macOS is a 7.0 MB universal dmg. Linux has a 2.1 MB deb and a 73.3 MB AppImage — the gap is real: the deb uses your system libraries, the AppImage carries its own.
# macOS
brew install --cask zhitongblog/tap/ziplark # desktop
brew install zhitongblog/tap/ziplark # CLI + MCP
# Windowsscoopbucketaddziplarkhttps://github.com/zhitongblog/scoop-bucketscoopinstallziplark
Source and builds: https://github.com/zhitongblog/ziplark
One closing thought about RAR. It is one of the most widely circulated archive formats on earth, and to this day no open-source tool can produce one, because the UnRAR licence explicitly forbids using that code to reconstruct the compression algorithm. A format that ubiquitous, and creating it still means buying one company's software.