DOCUMENTATION
Unzip docs
How to use the Unzip extension, what it can and cannot do, and what the privacy boundaries actually mean.
Using Unzip
Unzip is a browser extension. Open its page by clicking the toolbar icon, or pin the extension and click it. No additional setup is needed.
Extracting a ZIP file
- Open the Unzip extension page.
- Drop a ZIP file onto the drop zone, or click the zone (or press Enter/Space when it has keyboard focus) to open a file picker.
- The extension validates the archive and shows a file tree with names and sizes. Nothing is extracted to disk yet.
- Click Download next to any entry to save that file, or click Download all to save every entry at once.
Download all and folder paths
"Download all" preserves the original folder structure. Because multi-file downloads
with paths require the downloads browser permission, the extension asks
for that permission the first time you use this action. You can decline and still
download individual files one at a time; no permission is needed for single-file
downloads.
Cancelling an extraction
Click Cancel during extraction to stop immediately. The worker is terminated, any partially extracted data is discarded, and the drop zone resets to idle.
Supported formats
The current release supports standard ZIP archives (deflate, store, and deflate64 methods). Files compressed with methods outside this set (including bzip2 and LZMA) will report an unsupported method error. RAR, 7z, TAR, and other formats are out of scope for the current release.
Local processing and privacy boundaries
The precise capability contract for this extension is:
Local processing, no upload; zero install-time permissions for the core; optional
downloads permission requested only for tree-preserving extract-all.
This is the designed capability contract. In the current release, the manifest
declares no permissions at all. Both single-file downloads and "Download all" (which
builds a fresh ZIP inside the page) save through the browser's standard download from an
in-page blob. The optional downloads permission is planned, not yet shipped,
and would be requested only when a future tree-preserving "Extract all to folders"
feature is first used, never at install.
All ZIP parsing and extraction runs in a Web Worker inside the extension's sandboxed
page. The archive bytes never leave your device. This holds first because the extension
declares zero permissions and its source makes no network calls (no fetch,
XMLHttpRequest, WebSocket, or telemetry). The extension page's
Content Security Policy (connect-src 'none') is defense in depth, blocking
network connections from the page even if a bug were introduced. A Content Security
Policy does not restrict top-level navigation, so it is not relied on alone; source
review confirms the extension opens no external pages (the only tab it opens is its own
bundled app page).
The extension is offline-capable: it has no server dependency, no telemetry, no analytics, and no login. "Offline" and "no network" refer to the extension's file-processing behavior. The public Pages site you are reading is a regular HTTPS web page; visiting it uses your network normally.
Verifying the contract
Zero manifest permissions do not prove privacy on their own; the permission list shows what the browser would allow, not what the code does. To verify the contract:
- Review the extension source at github.com/animeshkundu/file-tools.
-
Inspect the built manifests in
.output/chrome-mv3/and.output/firefox-mv3/for declared permissions and CSP directives. - Load the unpacked extension in your browser's developer tools and observe network requests during an extraction: none should be made.
Permissions
| Permission | When requested | Why |
|---|---|---|
| None | Install time | No install-time permissions are declared. |
downloads |
Planned (not shipped) | Not declared in the current release. It is reserved for a future tree-preserving "Extract all to folders" feature and, when added, would be requested only on first use of that feature, never at install. Today's "Download all" builds a fresh ZIP and saves it with a standard browser download, requesting no permission. |
ZIP standard scope and safety limits
The extension handles standard ZIP archives within the following boundaries. Limits exist to prevent out-of-memory and denial-of-service conditions from adversarially constructed archives.
- Input size: enforced before the worker starts.
- Entry count: capped per archive.
- Aggregate extracted bytes: checked before accepting each decoded chunk.
- Path depth: entries exceeding the maximum nesting depth are rejected.
- Wall time: a timeout terminates extraction that runs too long.
Path safety
Before an entry is accepted, its decoded path is checked for path traversal sequences
(..), absolute paths, drive-letter prefixes, backslashes, UNC paths, NUL
bytes, control characters, and Windows reserved device names. Any entry failing a
check is skipped and reported.
What the ZIP scope covers
Standard ZIP using deflate, store, and deflate64 compression, including archives with Zip64 extensions for entries larger than 4 GiB. The ZIP central directory is authoritative; local headers are treated as potentially unreliable and cross-checked.
What is out of scope
Nested archive extraction (ZIP-in-ZIP), TAR, GZ, bzip2, xz, LZMA, RAR, and 7z are not supported in the current release. RAR and 7z additionally carry license considerations that require a separate review.
Browser support
Unzip is a standard MV3 browser extension and ships to Chrome and Firefox from a
single codebase using the browser.* namespace for cross-browser
compatibility.
Minimum browser versions and a full OS compatibility matrix will be declared and recorded in CI before the first tagged release. Until then, the extension is not a versioned release and the minimum supported versions are not formally committed.
Support and source
- Source code: github.com/animeshkundu/file-tools
- Issues and feature requests: GitHub Issues
- Third-party notices: THIRD-PARTY.md