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

  1. Open the Unzip extension page.
  2. 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.
  3. The extension validates the archive and shows a file tree with names and sizes. Nothing is extracted to disk yet.
  4. 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