How to selective file extractor online for free
- Step 1Open the tool — Go to /archive-tools/selective-extractor. No account is needed to start on the free tier.
- Step 2Drop one archive onto the dropzone — Selective Extractor reads a single archive per run (it is not a batch tool). Accepted inputs include
.zip,.7z,.rar,.tar,.tar.gz/.tgz,.gz,.bz2,.tar.bz2,.xz,.tar.xzand.iso. The tool checks the file against your tier size cap before any work begins. - Step 3Type a glob pattern — Enter a pattern such as
*.log,**/*.json, orsrc/**/*.ts. The default*(and**) matches every entry, which turns the tool into a plain repackager. Leave the pattern at*only if you actually want all entries. - Step 4Add a password if the ZIP is encrypted — If the input is a password-protected ZIP, type the password in the optional password field — it routes extraction through @zip.js/zip.js, which handles AES-256 and legacy ZipCrypto. The password field does not unlock encrypted 7Z or RAR archives (those are read by libarchive, which the tool calls without a password).
- Step 5Click Process — The tool extracts the archive, tests every entry path against the glob, and zips the matches with fflate at compression level 6. The result panel reports the Pattern, Matched entries, and Total entries so you can confirm the filter caught what you expected.
- Step 6Download the filtered ZIP — Press Download to save
<archive>-filtered.zip. It is a standard ZIP — open it with unzip, 7-Zip, macOS Archive Utility, or any consumer; there is no JAD-specific wrapper.
What the two options do
Selective Extractor exposes exactly two controls. There are no presets, no drag-to-reorder, and no output-format selector — the output is always a ZIP.
| Option | Type | Default | What it does |
|---|---|---|---|
globPattern | Text | * | Only entries whose path matches the pattern are kept. Supports * (within a segment), ** (any depth), and ? (one non-slash char). A pattern with no / also matches basenames anywhere. |
password | Text (secret) | (empty) | Decrypts an encrypted ZIP via @zip.js/zip.js (AES-256 or ZipCrypto). Has no effect on encrypted 7Z/RAR, which the libarchive reader opens without a password. |
Formats this tool can read, and what it writes
Detection is by magic bytes, not file extension. Whatever the input format, the matched entries are always repackaged as a ZIP.
| Input format | Read engine | Output |
|---|---|---|
ZIP (.zip) | fflate (unencrypted) / zip.js (encrypted) | ZIP of matches |
GZIP (.gz) | fflate (single stream → one inner file) | ZIP of matches |
TAR (.tar) | fflate TAR parser | ZIP of matches |
7-Zip (.7z) | libarchive WASM (read-only) | ZIP of matches |
RAR (.rar) | libarchive WASM (read-only) | ZIP of matches |
| BZ2 / XZ / TAR.BZ2 / TAR.XZ | libarchive WASM (read-only) | ZIP of matches |
ISO (.iso) | libarchive WASM (read-only) | ZIP of matches |
Free vs paid tier ceilings (archive family)
The size cap is enforced before processing. Selective Extractor reads one archive per run on every tier — batch input is not part of this tool.
| Tier | Max archive size | Documented entry ceiling | Files per run |
|---|---|---|---|
| Free | 50 MB | 500 | 1 |
| Pro | 500 MB | 50,000 | 1 (this tool reads one archive) |
| Pro-media | 2 GB | 500,000 | 1 |
| Developer | 2 GB | 500,000 | 1 |
Cookbook
Common free-tier jobs, with the exact pattern to type and what the result panel reports back.
Pull every log out of a ZIP
A slash-free pattern matches basenames at any depth, so *.log finds logs no matter how deeply they are nested.
Input: release.zip (1,204 entries) Pattern: *.log Result panel: Pattern: *.log Matched entries: 37 Total entries: 1204 Download: release-filtered.zip (37 entries)
Extract one folder subtree from a 7z
The tool reads 7Z via libarchive, filters, and writes a plain ZIP. Use ** to capture an entire subtree.
Input: vendor-dump.7z (read via libarchive WASM) Pattern: config/** Download: vendor-dump-filtered.zip config/app.yml config/db/prod.yml config/db/staging.yml
Grab just the TypeScript sources
Path-anchored patterns require the / in the path to line up. src/**/*.ts keeps the full internal path of each match.
Input: build-artifact.zip Pattern: src/**/*.ts Download entries (paths preserved): src/index.ts src/api/db.ts src/api/routes/user.ts
Open a password-protected ZIP
Type the password to route extraction through zip.js. Without it, an encrypted ZIP fails to read.
Input: secure-backup.zip (AES-256 encrypted entries) Pattern: *.pdf Password: •••••••• Download: secure-backup-filtered.zip (matched PDFs, decrypted)
Repackage everything (no filtering)
Leaving the pattern at the default * matches all entries — the tool becomes a re-zipper that normalizes any input format into a clean ZIP.
Input: data.tar.gz Pattern: * (default — matches all) Result panel: Matched entries: 512 Total entries: 512 Download: data-filtered.zip (everything, now as ZIP)
Edge cases and what actually happens
Pattern matches nothing
Error: no matchIf zero entries match, the tool throws No entries matched pattern "<your pattern>" and produces no download. Usually the cause is a missing ** (e.g. *.ts works on basenames, but src/*.ts only matches files directly in src/, not in subfolders). Add ** for depth: src/**/*.ts.
Glob is case-sensitive
By designPatterns are compiled to a case-sensitive regular expression. *.JPG will not match photo.jpg. If an archive mixes cases, run the tool twice (once per case) or use * and filter afterwards.
Archive exceeds the tier size cap
Error: tier limit exceededA 120 MB archive on the free tier is rejected before processing with File "…" exceeds the free tier per-job limit (50 MB). Upgrade for larger files. Upgrade, or split the source first.
File extension lies about the format
HandledDetection reads magic bytes, not the name. A .zip that is really a .rar is detected as RAR and read via libarchive. If the bytes match no known archive, you get Could not detect or extract archive format for <name>.
Encrypted 7Z or RAR with a password typed in
Not supportedThe password field only feeds the ZIP reader. The libarchive bridge that reads 7Z/RAR is called without a password, so an encrypted 7Z/RAR cannot be opened here. Decrypt it with a desktop tool first, or re-archive as an encrypted ZIP.
GZIP input has only one inner file
ExpectedA .gz is a single compressed stream, not a multi-file container. The tool exposes one inner file (named from the GZIP header or the stripped filename). A pattern that matches it returns a one-entry ZIP; a pattern that doesn't returns the no-match error.
Directory entries are not output
By designOnly file entries are extracted and re-zipped; directory placeholder entries are dropped. The matched files still carry their full paths, so folder structure is reconstructed when the output ZIP is opened.
Output is always a ZIP, never the source format
By designEven if you feed in a TAR.GZ or 7Z, the matches come back as a ZIP (<archive>-filtered.zip). If you need TAR.GZ output, run the result through Archive Format Converter.
Frequently asked questions
Does the Selective Extractor upload my files?
No. Reading, glob filtering, and re-zipping all happen in WebAssembly and JavaScript inside your browser tab. Open DevTools to the Network panel during a run — you will see no outbound request carrying the archive bytes.
What's the maximum archive size for free?
Free: 50 MB per archive. Pro: 500 MB. Pro-media: 2 GB. Developer: 2 GB. Enterprise: unlimited. The size is checked before processing starts, so an oversized file is rejected immediately rather than partway through.
Which input formats can it read?
ZIP, GZIP, TAR, 7Z, RAR, BZ2, XZ, TAR.BZ2, TAR.XZ and ISO. ZIP/GZIP/TAR are read with fflate; 7Z/RAR/BZ2/XZ/ISO go through a libarchive WASM bridge. Formats are detected by magic bytes, so a wrong extension does not break detection.
What format is the output?
Always a standard ZIP, named <archive>-filtered.zip, regardless of the input format. It is a plain ZIP with no JAD-specific metadata — open it anywhere.
What glob syntax is supported?
* matches any run of characters except /; ** matches across directory boundaries (any depth); ? matches one non-slash character. A pattern without a / (like *.png) also matches the basename of entries anywhere in the tree.
Can I use more than one pattern at once?
No — one pattern per run. For multiple unrelated patterns, run the tool once per pattern and combine the outputs with Archive Merger.
Why did my pattern match nothing?
The most common reason is depth: src/*.ts only matches files directly inside src/. To reach subfolders, use src/**/*.ts. Case matters too — patterns are case-sensitive.
Are the original folder paths preserved?
Yes. The output ZIP keeps each matched entry's full internal path, so the directory structure is reconstructed when you open it. Paths are not flattened.
Can it open password-protected archives?
Encrypted ZIPs, yes — type the password to route through @zip.js/zip.js (AES-256 or ZipCrypto). Encrypted 7Z/RAR are not supported because the libarchive reader is called without a password.
Does it work offline?
Yes, once the page has loaded. The fflate/zip.js code and libarchive WASM are cached by your browser after the first visit, so subsequent runs work without a network connection.
Is there a CLI or API?
Programmatic API access is on the JAD roadmap. Today the tool runs as a standalone browser page. If you need to extract everything rather than a subset, use Multi-Format Extractor.
What if I just want to see inside the archive first?
Use Archive Previewer for a tree and table view without extracting, or File Listing Generator to export the entry list. Then come back with the right glob.
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.