How to multi-format archive extractor online for free
- Step 1Open the extractor — Load the Multi-Format Extractor page. Everything runs client-side, so once the page is open you can disconnect from the network and it still works.
- Step 2Drop or pick your archive — Drag a single archive onto the drop zone, or click to browse. The picker accepts
.zip,.tar,.tar.gz,.tgz,.gz,.bz2,.tar.bz2,.xz,.tar.xz,.7z,.rar, and.iso. This tool takes one archive at a time — it is not a batch tool. - Step 3Enter a password if the ZIP is encrypted — Leave the Password (optional) field blank for normal archives. Fill it only when the ZIP entries are encrypted — the password is used by @zip.js/zip.js to decrypt AES-256 / ZipCrypto entries. Encrypted 7Z and RAR cannot be decrypted here (libarchive runs read-only without a passphrase); see the edge-cases section.
- Step 4Run the extraction — Click extract. The tool reads the bytes, detects the format, and dispatches to fflate, zip.js, or libarchive WASM. The first 7Z/RAR/BZ2/XZ/ISO extraction in a session loads the WASM module once, so it takes a moment longer than later runs.
- Step 5Review the metrics — The result panel shows the detected
formatand the number ofEntriesextracted. Confirm the entry count matches what you expected before you download — a count of zero usually means the archive was empty or a nested archive that needs a second pass. - Step 6Download the repackaged ZIP — Download
<archive>-extracted.zip. Open it with your OS's built-in unzip (every desktop OS reads plain ZIP) to get your files under the<archive>/folder.
Formats and the engine that reads them
Format is detected from the first 8 bytes (magic bytes), not the file extension. The extractor READS all of these; it always WRITES a single plain ZIP as output.
| Input format | Detected as | Engine | Password support | Notes |
|---|---|---|---|---|
| ZIP (.zip) | zip | fflate (plain) / @zip.js/zip.js (encrypted) | Yes — AES-256 + ZipCrypto | Central directory is probed first; encrypted entries route to zip.js automatically |
| GZIP (.gz) | gz | fflate | No | Single-member gunzip; the inner filename is read from the GZIP header if present |
| TAR (.tar) | tar | fflate + built-in TAR parser | No | Detected via the ustar magic at byte offset 257 |
| TAR.GZ / .tgz | gz | fflate | No | Gunzips to the inner .tar; if the result is still a TAR you re-run the extractor on it |
| 7Z (.7z) | 7z | libarchive WASM | Read-only (no passphrase) | Encrypted 7Z surfaces a passphrase error — cannot decrypt here |
| RAR (.rar) | rar | libarchive WASM | Read-only (no passphrase) | Reading only; this tool never creates RAR |
| BZ2 / TAR.BZ2 | bz2 | libarchive WASM | No | TAR.BZ2 is expanded transparently by libarchive into all member files |
| XZ / TAR.XZ | xz | libarchive WASM | No | TAR.XZ is expanded transparently by libarchive into all member files |
| ISO (.iso) | unknown then libarchive | libarchive WASM | No | ISO9660 disc images are read entry-by-entry |
Free vs paid tier limits
Real limits from the archive tool family. The extractor enforces the per-file SIZE cap at run time; the entry count is the documented per-archive ceiling.
| Tier | Max archive size | Max entries per archive | Files per job |
|---|---|---|---|
| Free | 50 MB | 500 | 1 |
| Pro | 500 MB | 50,000 | 20 |
| Pro-media | 2 GB | 500,000 | 100 |
| Developer | 2 GB | 500,000 | Unlimited |
Cookbook
Real archives people drop on this tool, with the engine path each one takes and what comes out.
Open a vendor 7z without installing 7-Zip
A driver pack arrives as drivers.7z. No 7-Zip on the locked-down work laptop. Drop it on the extractor: magic bytes 37 7A BC AF 27 1C identify 7Z, libarchive WASM reads it, and you get a ZIP anyone's built-in unzip can open.
Input: drivers.7z (12 MB, 84 entries)
Detected format: 7z → libarchive WASM
Result panel:
format: 7z
Entries: 84
Download: drivers-extracted.zip
drivers/
chipset/inf/...
audio/...
→ open with Windows Explorer's built-in unzipExtract a Linux release tarball (tar.xz)
A release ships as app-2.4.tar.xz. The XZ magic bytes are detected, libarchive expands the TAR.XZ transparently, and every member file lands in the output ZIP.
Input: app-2.4.tar.xz (8 MB) Detected format: xz → libarchive WASM (expands TAR.XZ) Result: format: xz Entries: 312 Download: app-2.4-extracted.zip app-2.4.tar/ ← all 312 members nested here
Two-pass extraction of a tar.gz
GZIP is a single-member format. A .tar.gz detects as gz, so the first pass gunzips it to the inner .tar. If you need the individual files, run the extractor a second time on that .tar (which detects via the ustar magic).
Pass 1:
Input: logs.tar.gz → detected: gz
Output: logs-extracted.zip contains logs.tar
Pass 2:
Input: logs.tar → detected: tar
Output: logs-extracted.zip contains
logs/access.log
logs/error.logExtract a password-protected ZIP
An encrypted payroll.zip (AES-256). Type the password into the optional field and the extractor probes the central directory, sees encrypted entries, and routes to @zip.js/zip.js for decryption.
Input: payroll.zip (encrypted, AES-256) Password field: ******** Engine: @zip.js/zip.js (encrypted entries detected) Result: format: zip Entries: 5 Download: payroll-extracted.zip
Recover files from a file with no extension
A download saved as download with no extension. Magic-byte detection means the extension is irrelevant — the first 8 bytes reveal it is really a 7Z.
Input: download (no extension) First 8 bytes: 37 7A BC AF 27 1C 00 04 Detected format: 7z → libarchive WASM Result: format: 7z Entries: 23 Download: download-extracted.zip
Edge cases and what actually happens
Encrypted ZIP, no password entered
RejectedIf any ZIP entry is encrypted and the password field is empty, extraction stops with Archive contains encrypted entries (e.g. "<name>"). Provide a password to extract. Type the password and re-run.
Wrong ZIP password
Decryption failedIf the password is incorrect, zip.js fails to decrypt and you get Failed to decrypt "<name>". The password may be incorrect. Re-check the password — it is case-sensitive — and try again.
Encrypted 7Z or RAR
UnsupportedThe password field only feeds the ZIP path (zip.js). Encrypted 7Z / RAR go through libarchive, which is opened read-only with no passphrase, so they surface a passphrase/encryption error. Decrypt those with the native 7-Zip / WinRAR first, or re-pack as an encrypted ZIP.
File over the tier size cap
Limit exceededA file larger than your tier's per-job cap (Free 50 MB, Pro 500 MB, Pro-media / Developer 2 GB) is refused before processing with File "<name>" exceeds the <tier> tier per-job limit. Upgrade or split the archive.
Unrecognised / corrupt header
Unknown formatIf the magic bytes match nothing known, the extractor makes a last-ditch attempt to read it as a ZIP. If that also fails you get Could not detect or extract archive format for <name> — the file is likely truncated, not actually an archive, or a format this tool does not read.
tar.gz returns one .tar file
By designGZIP holds a single member, so a .tar.gz first yields the inner .tar. Run the extractor again on that .tar to get the individual files. This is expected, not an error.
Nested archive inside the archive
Single levelThis tool extracts one level. A ZIP that contains another ZIP gives you the inner ZIP as a file. For automatic recursion use the nested-archive-extractor sibling at /archive-tools/nested-archive-extractor.
WASM blocked by a browser extension
Engine load failed7Z/RAR/BZ2/XZ/ISO need WebAssembly. A strict content-security extension can block the libarchive WASM load. Disable it for the page or use a clean browser profile; ZIP/GZIP/TAR still work since they use pure-JS fflate.
Empty archive
ExpectedA valid but empty archive extracts to a ZIP with Entries: 0. Nothing is wrong — there was simply nothing inside.
Directory-only entries
PreservedFolder entries (paths ending in /) are skipped from the file map on the ZIP fast path; only real files are repackaged. Empty folders therefore do not appear in the output ZIP.
Frequently asked questions
Is it really free?
Yes. No account, no signup, no payment for archives within the Free tier (50 MB and 500 entries per archive). Larger archives need a paid tier purely for the higher size and entry limits, not to unlock the formats.
Do my files get uploaded?
No. The archive is read with FileReader and decoded entirely in your browser via fflate, @zip.js/zip.js, and libarchive WASM. There is no server-side extraction path. Once the page is loaded you can even go offline.
Which formats can it open?
ZIP, GZIP, TAR, TAR.GZ, BZ2 / TAR.BZ2, XZ / TAR.XZ, 7Z, RAR (read-only), and ISO. ZIP and GZIP use the fast fflate path; everything else uses libarchive WASM.
Can it open password-protected archives?
Password-protected ZIPs, yes — fill the optional password field and AES-256 / ZipCrypto entries are decrypted via @zip.js/zip.js. Encrypted 7Z and RAR are not supported because libarchive opens read-only with no passphrase.
Why is my .7z extraction slower the first time?
The libarchive WASM module loads once per session. The first 7Z/RAR/BZ2/XZ/ISO extraction includes that one-time load; subsequent ones in the same tab are faster. ZIP/GZIP/TAR do not need it.
Why did my tar.gz come out as a single .tar file?
GZIP is a single-stream format, so the gz pass produces the inner .tar. Run the extractor again on that .tar to get the individual files — TAR is detected by its ustar magic bytes.
What does the output look like?
Always a single ZIP named <archive>-extracted.zip, with every extracted file nested under a <archive>/ folder so it cannot collide with existing files in your Downloads. The ZIP opens in any OS's built-in unzip.
Can I extract several archives at once?
Not with this tool — it processes one archive per run. For folder/batch extraction across many archives, use the batch-extraction-manager sibling at /archive-tools/batch-extraction-manager.
Can I extract just some files instead of all of them?
Yes, with a different tool: the selective-extractor at /archive-tools/selective-extractor takes a glob pattern (e.g. *.log, src/**/*.ts) and extracts only the matching entries.
How do I see what's inside before extracting?
Use the archive-previewer at /archive-tools/archive-previewer to list entries, sizes, and timestamps without unpacking. The auto-format-detector at /archive-tools/auto-format-detector confirms the format from the magic bytes.
What's the maximum archive size?
Free 50 MB, Pro 500 MB, Pro-media and Developer 2 GB. There is also a per-archive entry-count ceiling: 500 (Free), 50,000 (Pro), 500,000 (Pro-media / Developer).
Does it work on a phone or tablet?
Yes — it is browser-based, so any modern mobile browser with WebAssembly works. Very large archives may exhaust mobile memory; for those use a desktop browser.
Privacy first
Every JAD Archive tool runs entirely in your browser using fflate, @zip.js/zip.js, and the libarchive WASM bridge. Your archives never leave your device — verified by zero outbound network requests during processing.