How to batch archive extraction manager online for free
- Step 1Open the Batch Extractor — Go to batch-extraction-manager. Nothing loads to a server — the page ships the
fflateandlibarchiveWASM code to your browser and runs everything locally. - Step 2Drop multiple archives at once — Select or drag several archives together — ZIP, 7z, RAR, TAR, and GZ can be mixed freely in one batch. The tool detects each format from its magic bytes, not its file extension, so a mislabelled
.zipthat is really a 7z is still read correctly. - Step 3Let each archive map to its own subfolder — Internally the tool takes each file's stem (filename minus the last extension via
getStemName) and prefixes every extracted entry withstem/. So2026-logs.zipbecomes2026-logs/app.log,2026-logs/error.log, and so on. There is no toggle for this — it is the fixed behaviour. - Step 4Wait for the consolidated ZIP to build — After extracting every input, the tool re-zips the merged file map with
fflate.zipSyncat DEFLATE level 6. Larger or numerous archives take longer because all uncompressed bytes are held in browser memory at once before zipping. - Step 5Download batch-extracted-N-archives.zip — The output filename encodes how many archives were processed, e.g.
batch-extracted-12-archives.zip. The result panel reportsInput archivesandTotal entriesso you can sanity-check the count before downloading. - Step 6Verify the entry count matches your expectation — If
Total entriesis lower than the sum of entries you dropped in, the usual cause is two source archives sharing a stem — the later one overwrote the earlier one's entries. Rename one source and re-run. For deeper recursion, send the output to nested-archive-extractor.
What the Batch Extractor can and cannot read
Read support is per source archive. ZIP/GZIP/TAR use fflate; the libarchive WASM bridge covers the rest. There are no write-format choices — output is always a single ZIP.
| Input format | Read engine | Unpacked in this tool? | Notes |
|---|---|---|---|
ZIP (.zip) | fflate (unencrypted entries only) | Yes — every entry | Detected by the PK magic bytes. Encrypted entries are not supported here (no password input) |
7z (.7z) | libarchive WASM | Yes — every entry | Read-only via WASM; the tool never writes 7z |
RAR (.rar) | libarchive WASM | Yes — every entry | Read-only; useful for legacy downloads |
TAR (.tar) | fflate + built-in TAR parser | Yes — every regular file entry | Detected by the ustar magic at offset 257 |
GZIP (.gz) | fflate | Partly — yields one inner file | GZIP holds a single stream. A .tar.gz is read as gz and produces the inner .tar as one entry, not its contents |
| bz2 / xz / ISO | libarchive WASM | Yes (bz2/xz: one stream; ISO: every file) | Routed through WASM via requiresLibarchive |
Tier limits for the archive family
Limits apply per run. The per-archive entry limit (entryLimit) bites independently of file size — a small archive with too many entries is still rejected. minTier for this tool is Pro, so the Free tier's single-file cap means it cannot truly batch.
| Tier | Max file size | Max entries / archive | Max files / batch |
|---|---|---|---|
| Free | 50 MB | 500 | 1 (cannot batch) |
| Pro | 500 MB | 50,000 | 20 |
| Pro-media | 2 GB | 500,000 | 100 |
| Developer | 2 GB | 500,000 | unlimited |
Cookbook
Concrete drops and what comes out the other side. Each example shows the input archives and the resulting layout inside batch-extracted-N-archives.zip.
Three ZIPs into one tidy output
The everyday case: several plain ZIPs unpacked side by side, each in its own folder so nothing collides.
Drop: q1-report.zip (summary.pdf, data.csv) q2-report.zip (summary.pdf, data.csv) q3-report.zip (summary.pdf, data.csv) Download batch-extracted-3-archives.zip: q1-report/summary.pdf q1-report/data.csv q2-report/summary.pdf q2-report/data.csv q3-report/summary.pdf q3-report/data.csv Result panel: Input archives 3 · Total entries 6
Mixed formats in a single batch
ZIP, 7z, and RAR can be dropped together. fflate reads the ZIP; the libarchive WASM bridge reads the 7z and RAR. Detection is by magic bytes, so the file extension does not have to be correct.
Drop: assets.zip (logo.svg) backup.7z (db.sql) legacy.rar (old.txt) Download batch-extracted-3-archives.zip: assets/logo.svg backup/db.sql legacy/old.txt
A .tar.gz comes out as a .tar, not its contents
GZIP only holds a single stream. The tool detects the gz magic, gunzips it, and stops — so the inner tarball is written as one .tar file rather than being unpacked. This is the most common surprise.
Drop: release.tar.gz (gz wrapping a tar of 40 files) Download batch-extracted-1-archives.zip: release/release.tar <-- ONE entry, still packed To finish the job, run the output through /archive-tools/nested-archive-extractor
Duplicate stems overwrite each other
The subfolder name is the filename stem only — there is no uniqueness counter. Two archives both named logs.zip (from different folders) map to the same logs/ prefix; the second clobbers the first.
Drop: /jan/logs.zip (jan.log) /feb/logs.zip (feb.log) Download batch-extracted-2-archives.zip: logs/feb.log <-- jan.log was overwritten Result panel: Total entries 1 (not 2) Fix: rename one source -> logs-jan.zip, logs-feb.zip
Where Free tier stops
minTier is Pro and the Free archive batch cap is 1 file, so a Free account simply cannot batch. Upgrade to Pro for 20 files per run, or use the single-file extractor.
Free account, drop 5 archives:
-> only 1 file accepted; batch is blocked at the tier gate.
Options:
- Upgrade to Pro (20 files / batch, 500 MB, 50,000 entries)
- For one archive at a time, use
/archive-tools/multi-format-extractorEdge cases and what actually happens
Encrypted (password-protected) ZIP entry
RejectedThe Batch Extractor has no password field — batchExtract calls the extractor with no password. A ZIP whose central directory marks any entry as encrypted throws an error about encrypted entries needing a password. Decrypt first elsewhere, then batch the cleartext output.
.tar.gz / .tgz dropped expecting full unpack
By designDetected as gz, gunzipped once, and emitted as a single inner .tar. The tool stops at one level, so the tarball's contents are not unpacked here. Send the result to nested-archive-extractor to finish.
Two source archives share a filename stem
OverwriteSubfolders are named by stem only (getStemName) with no de-duplication, so report.zip and report.7z, or two logs.zip from different folders, both write under the same prefix and the later one wins. Rename one source before batching.
Nested archive inside an input archive
Not recursedExtraction is exactly one level deep. An inner .zip inside one of your sources is written out as a .zip file, not unpacked. Use nested-archive-extractor for recursion.
File larger than the tier size cap
RejectedEach source must fit the tier's fileBytes ceiling (Free 50 MB, Pro 500 MB, Pro-media / Developer 2 GB). Over that and the file is refused before extraction.
Archive with more than the entry limit
RejectedThe per-archive entryLimit is enforced independently of size: Free 500, Pro 50,000, Pro-media / Developer 500,000 entries. A small archive packed with too many tiny files can hit this even though its bytes are small.
Unknown or unsupported format dropped
InvalidIf magic-byte detection fails, the tool makes one last attempt to read the file as a ZIP; if that also fails it throws Could not detect or extract archive format. Confirm the file is a real archive and not, say, a renamed document.
Output ZIP exceeds available browser memory
Out of memoryAll uncompressed bytes are held in memory, then re-zipped in one pass. A batch of large archives can exhaust the tab's heap on a low-RAM device. Split the batch into smaller groups or move to a Pro-media / Developer tier on a machine with more RAM.
Directory entries in the source
PreservedFolder structure inside each archive is preserved under the stem prefix. Pure directory entries (names ending in /) are dropped from ZIP reads; the files within them are kept with their full relative paths.
Frequently asked questions
Is the Batch Extractor really free and is anything uploaded?
Extraction logic is free to use and runs entirely in your browser — there is no upload endpoint for archive tools (execution.browserOnly is true for the whole family). Your archives never reach a server. Note that batching multiple files at once requires a Pro tier, because the Free archive tier caps a batch at a single file.
Which formats can it read?
ZIP, GZIP, and TAR via fflate, plus 7z, RAR, bz2, xz, and ISO via a libarchive WASM bridge. Detection is by magic bytes, so an archive with the wrong extension is still read correctly.
What does it output?
Always a single ZIP named batch-extracted-N-archives.zip, built with fflate at DEFLATE level 6. There is no option to choose a different output format in this tool.
Why did my .tar.gz come out as a .tar?
GZIP holds one stream. The tool detects the gz magic, gunzips once, and emits the inner .tar as a single entry rather than unpacking it. Run that output through nested-archive-extractor to extract the tarball's files.
Does it support password-protected archives?
No. This tool has no password field and passes no password to the extractor, so encrypted entries are rejected. Handle the password elsewhere first, then batch the cleartext result. To probe a password, see archive-password-tester.
How many archives can I drop at once?
Free 1 (so it can't truly batch), Pro 20, Pro-media 100, Developer unlimited. The combined uncompressed size still has to fit in browser memory.
Does it recurse into nested archives?
No — exactly one level. An archive inside one of your sources is written out as a packed file. Use nested-archive-extractor for recursion.
Why are two archives' files mixed in one folder?
Subfolders are named by filename stem with no uniqueness counter, so two sources with the same stem (e.g. logs.zip and logs.7z) share a prefix and the later one overwrites the earlier. Rename one source to keep them apart.
What's the entry-count limit and why does it matter?
Each archive is capped at Free 500 / Pro 50,000 / Pro-media / Developer 500,000 entries, enforced separately from size. An archive full of many tiny files can hit the entry cap while still being small in bytes.
Can I run it from the command line or an API?
There is no public HTTP API for archive tools — they are browser-only (apiAvailable: false). On Pro+ tiers the @jadapps/runner executes them in a short-lived headless Chromium session, but there is no server endpoint that accepts your files.
How do I extract just some files instead of everything?
This tool unpacks everything. To pull only matching paths, use selective-extractor, which takes a glob pattern.
I only have one archive — is this the right tool?
Not really. For a single archive use multi-format-extractor. The Batch Extractor's whole point is consolidating many sources into one output ZIP.
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.