How to archive splitter vs command-line split tools
- Step 1Open the Archive Splitter — Go to /archive-tools/archive-splitter. The tool is Pro-gated, so on the Free plan you'll see an upgrade overlay instead of the drop zone - upgrade or sign in on a Pro/Developer plan first.
- Step 2Drop in one existing archive — Drag a single
.zip,.tar,.gz,.7z,.rar,.bz2,.xz, or.isoonto the drop zone. The splitter takes one archive at a time (it is not a multi-file or dual-file tool). If the archive has encrypted ZIP entries, you'll be prompted for the password so zip.js can read them. - Step 3Pick a split mode — Choose
splitMode.size(the default) packs entries until the running uncompressed total would exceed your target, then starts a new part.countputs a fixed number of entries in each part regardless of byte size. - Step 4Set the part budget — For
sizemode, setsplitSizeMb(1 - 4096 MB; default 50). 1 MB here means 1,000,000 bytes. Forcountmode, setsplitFileCount(1 - 100000; falls back to 100 if left blank). - Step 5Run the split — Everything executes in the browser: the archive is extracted, file entries are regrouped, and each group is re-zipped at compression level 6. The result panel lists every part and its size, plus a
PartsandModemetric. - Step 6Download every part — Click
Download N parts. The browser saves each part as a separate file named<stem>-part-001.zip,<stem>-part-002.zip, and so on - your browser may ask permission to download multiple files. There is no single combined download.
What 'split' means in each tool
The fundamental difference: spanned volumes are byte slices that need reassembly; JAD parts are independent archives. This is the single most important row to get right.
| Tool | What a 'part' is | Open one part alone? | Output format | Reassembly needed? |
|---|---|---|---|---|
| JAD Archive Splitter | A full, self-contained ZIP of a subset of entries | Yes | ZIP (always) | No |
zip -s 50m | A spanned volume (.z01, .z02, ... .zip) | No | Spanned ZIP | Yes - need all volumes |
7z a -v50m | A spanned volume (.7z.001, .7z.002, ...) | No | Spanned 7z | Yes - need all volumes |
split -b 50m file.zip | A raw byte slice (xaa, xab, ...) | No | Raw bytes (not an archive) | Yes - cat them back |
The real Archive Splitter option contract
Every control the tool actually exposes, with its enum/min/max and default, read straight from the option schema. There are no presets, no drag-reorder, and no part-naming field - output parts are always named <stem>-part-001.zip, -002, and so on.
| Option | Type | Range / values | Default | What it does |
|---|---|---|---|---|
splitMode | enum | size, count | size | Split by total uncompressed bytes per part, or by a fixed number of entries per part. |
splitSizeMb | number | 1 - 4096 | 50 | Target part size in MB (decimal: 1 MB = 1,000,000 bytes) when splitMode is size. Measured against uncompressed entry sizes. |
splitFileCount | number | 1 - 100000 | 100 (when unset) | Entries per part when splitMode is count. The schema has no UI default; the processor falls back to 100 if you leave it blank. |
| output format | fixed | ZIP only | ZIP | Each part is rebuilt as a fresh ZIP at compression level 6. You cannot choose 7z/tar/gz output here. |
When to reach for which
Pick the model that matches your real constraint - independent parts, scriptability, or format.
| Your situation | Best choice | Why |
|---|---|---|
| Each recipient must open their part without the others | JAD Archive Splitter | Parts are independent ZIPs; spanned volumes can't do this |
| Splitting inside a CI/CD or cron pipeline | zip -s / 7z -v / split | Headless, scriptable; the browser tool is interactive and Pro-gated |
| Input is a 7z or rar you need to break up | JAD Archive Splitter | libarchive WASM reads it; output is shareable ZIP parts |
| You must preserve the exact original format in the parts | CLI (7z -v, zip -s) | JAD always outputs ZIP |
| Sensitive archive on a shared/untrusted machine | JAD Archive Splitter | Runs in-browser, nothing uploaded, no staging on disk |
Cookbook
Concrete splits with the exact options used and the part layout you get back. Sizes are illustrative; the splitter measures the uncompressed size of each entry when bucketing in size mode.
Split a 480 MB build archive into ~50 MB ZIP parts
Default size mode. The splitter fills each part until adding the next entry would push the running uncompressed total past 50 MB, then starts a new part. Because parts are re-zipped at level 6, the downloaded files are usually smaller than the 50 MB target.
Input: release-build.zip (480 MB uncompressed, 3,140 entries) Options: splitMode = size, splitSizeMb = 50 Result panel: Parts: 10 Mode: by size release-build-part-001.zip 47.9 MB release-build-part-002.zip 46.2 MB ... release-build-part-010.zip 12.4 MB Downloaded as 10 separate .zip files.
Exactly 1,000 entries per part
Count mode is deterministic - it slices the entry list into fixed-length chunks regardless of byte size. Useful when a downstream tool caps how many files it will accept per upload.
Input: dataset.zip (12,500 entries) Options: splitMode = count, splitFileCount = 1000 Result: Parts: 13 Mode: by file count dataset-part-001.zip ... dataset-part-012.zip (1,000 entries each) dataset-part-013.zip (500 entries)
Split a .tar that is read natively
Feed a .tar and the splitter reads it with fflate's tar parser, then writes ZIP parts. Note the format changes: you put in tar, you get ZIP back. If you need tar output, that conversion is a different tool.
Input: logs.tar (2,000 .log entries, 600 MB uncompressed) Options: splitMode = size, splitSizeMb = 100 Output: logs-part-001.zip ... (ZIP parts, NOT .tar parts) Each part is a self-contained ZIP, not a tar slice.
One file is bigger than the part size
A single 80 MB entry with a 50 MB target does not get split across two archives. It is placed in its own part. The entries around it still pack to the 50 MB budget.
Input: media.zip (one 80 MB video.mp4 + 200 small files) Options: splitMode = size, splitSizeMb = 50 Result: media-part-001.zip ~50 MB (small files) media-part-002.zip ~80 MB (video.mp4 alone) media-part-003.zip ... (remaining small files)
Split a 7z you can read but cannot re-pack
The libarchive WASM bridge reads .7z, so the splitter can open it and regroup the entries. The parts come out as ZIP, because the splitter only writes ZIP. This is the fastest browser-side way to break a 7z into shareable chunks.
Input: backup.7z (read via libarchive WASM) Options: splitMode = count, splitFileCount = 500 Output: backup-part-001.zip, backup-part-002.zip, ... (7z in -> ZIP out; the tool never writes .7z)
Edge cases and what actually happens
Output parts are ZIP even when the input was 7z/rar/tar
By designThe splitter rebuilds every part with fflate's zipSync at level 6, so a .7z, .rar, .tar, or .gz input always produces .zip parts. If you specifically need the parts in the original format, the splitter is the wrong tool - it normalises everything to ZIP. Check archive-format-converter for format changes.
`size` mode measures uncompressed bytes, not download size
ExpectedEach part's budget (splitSizeMb) is checked against the uncompressed size of the entries it holds. Because the part is then re-compressed at level 6, the actual downloaded .zip is usually smaller than the target. If you need parts that are exactly N MB on disk, size mode will run a little under.
A single entry exceeds the part size
PreservedWe never split one file across two archives. If an entry is larger than splitSizeMb, it is placed in its own part - so that part can be bigger than the target. This keeps every entry intact and openable.
Directory-only entries vanish from the parts
PreservedExtraction keeps only file entries; pure directory records (names ending in /) are dropped. The files inside those directories keep their full relative paths, so the folder structure is reconstructed when you unzip - empty directories are not preserved.
Archive has encrypted ZIP entries and no password is given
Fails - password requiredEncrypted ZIP entries are read through @zip.js/zip.js, which needs the password. Without it the extraction step fails before any part is produced. Supply the password in the prompt and re-run. Note: the output parts are not re-encrypted.
Input format is unrecognised or corrupt
Error - unknown formatFormat is detected from the file's magic bytes. A truncated header, a renamed non-archive, or a damaged file is treated as unknown and routed to libarchive, which will error if it cannot parse it. Test the archive with archive-integrity-tester first if you suspect corruption.
Archive contains no extractable entries
Error - no entriesIf extraction yields zero file entries (for example an archive that holds only empty directories), the splitter throws Archive contains no entries. There is nothing to group into parts.
Input exceeds the tier file-size or entry-count cap
Blocked - over tier limitPro caps input at 500 MB and 50,000 entries; Pro-media and Developer at 2 GB and 500,000 entries. An archive over your plan's size or entry-count limit is blocked before processing. Split a smaller archive or upgrade the plan.
Free plan cannot open the tool at all
Blocked - Pro requiredArchive Splitter's minimum tier is Pro. On the Free plan the page renders an upgrade overlay instead of the drop zone, so you cannot run a split until you are on Pro or higher.
Parts download individually, not as one bundle
ExpectedClicking Download N parts triggers one browser download per part. The <stem>-N-parts.zip name shown in the result is only a label - there is no single combined ZIP-of-parts file. Your browser may ask to allow multiple downloads the first time.
Frequently asked questions
Why can't I open one volume from `zip -s` or `7z -v`?
Those tools create spanned (multi-volume) archives - each volume is a byte slice of one logical archive. The central directory and entry data are spread across volumes, so no single volume is a complete archive. JAD's splitter avoids this by rebuilding each part as its own ZIP.
Is `split -b` the same as this tool?
No. split cuts a file into raw byte chunks (xaa, xab) with no archive structure at all - you must cat them back before anything works. JAD parts are each a working ZIP.
Does the browser tool match CLI throughput?
For very large or scripted jobs the CLI is faster and pipelineable. The browser tool is bounded by your tab's memory and the 2 GB / 500,000-entry tier cap, but it needs no install and never uploads.
Can the CLI read 7z/rar like this tool does?
zip cannot; 7z can read 7z and rar if the right binary is installed. JAD's splitter reads 7z, rar, bz2, xz, and iso in-browser via libarchive WASM, then writes ZIP parts.
If I use the CLI for spanned volumes, can JAD merge them?
No - archive-merger merges complete archives, not spanned .z01/.001 volumes. Reassemble spanned volumes with the same CLI that made them.
Which is more private?
Both keep data local if you run the CLI on your own machine. The browser tool's advantage is needing no install and never writing the input to a server - useful on shared boxes where you don't want to stage the archive.
Can I script the JAD splitter?
It is an interactive browser tool with no public API for splitting (execution is browser-only). For automation, the CLI utilities are the right fit; for one-off, shareable, self-contained parts, the browser tool wins.
Will JAD parts be larger or smaller than `zip -s` volumes?
Often similar overall, but JAD re-compresses each part at level 6, so individual parts are usually a little under the target. zip -s slices the already-compressed stream, so its volumes hit the size more exactly.
Does JAD preserve the original compression?
No - it decompresses and re-compresses at level 6 when building parts. The original per-entry compression method is not carried through.
Can either approach split a single huge file across parts?
split and spanned volumes can slice mid-file; JAD never splits one entry across parts - an oversized entry gets its own part. If you literally need to slice one giant file by bytes, that's a split/spanned-volume job.
What about empty folders?
Spanned volumes from zip/7z can keep directory entries; JAD drops pure directory records and keeps only files (paths are preserved). To prune empty folders deliberately, see empty-folder-pruner.
Which should I default to?
If the people receiving the parts must open them independently, or the source is a 7z/rar, use the JAD splitter. If you're inside a script or need exact byte-sized spanned volumes, use the CLI.
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.