How to archive splitter online for free
- 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.
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. |
What you can feed in vs what comes out
The splitter detects the input format by magic bytes, then extracts every file entry and rebuilds the parts. fflate handles zip/gz/tar natively; a libarchive WASM bridge reads the rest. Output is always ZIP - the splitter does not write 7z, rar, tar, or gz.
| Input format | Read engine | Read? | Output of each part |
|---|---|---|---|
.zip (no encryption) | fflate | Yes | ZIP (level 6) |
.zip (AES / ZipCrypto) | @zip.js/zip.js | Yes, with the password | ZIP (level 6, no encryption re-applied) |
.tar | fflate (tar parser) | Yes | ZIP (level 6) |
.gz (single-member gzip) | fflate | Yes (yields one inner file) | ZIP (level 6) |
.7z, .rar, .bz2, .xz, .iso | libarchive WASM | Yes (read-only) | ZIP (level 6) |
Archive-family tier limits that gate a split
Archive Splitter requires the Pro plan or higher (Free sees an upgrade overlay and cannot run it). Both the file-size cap and the per-archive entry-count cap apply to the input archive.
| Plan | Max input size | Max entries per archive | Files at once | Can run splitter? |
|---|---|---|---|---|
| Free | 50 MB | 500 | 1 | No - tool is Pro-gated |
| Pro | 500 MB | 50,000 | 20 | Yes |
| Pro-media | 2 GB | 500,000 | 100 | Yes |
| Developer | 2 GB | 500,000 | unlimited | Yes |
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
Is the Archive Splitter actually free?
It is free of upload and free of cost in the sense that nothing is sent to a server, but the tool itself is Pro-gated. On the Free plan you see an upgrade overlay rather than the drop zone. You need a Pro, Pro-media, or Developer plan to run a split.
Does my archive get uploaded anywhere?
No. Extraction, regrouping, and re-zipping all happen in your browser via fflate, @zip.js/zip.js, and a libarchive WASM module. The page shows a 0 bytes uploaded badge to confirm it.
What formats can I drop in?
ZIP, TAR, and GZIP are read natively by fflate. 7z, RAR, BZ2, XZ, and ISO are read through the libarchive WASM bridge. The format is detected from the file's magic bytes, not its extension.
What format are the parts?
Always ZIP. Each part is rebuilt with fflate at compression level 6. So if you split a .7z or .tar, you still get .zip parts back - the splitter does not write 7z, rar, tar, or gz.
How big can each part be?
In size mode you set splitSizeMb from 1 to 4096 MB (default 50). The budget is measured against uncompressed entry sizes, so the downloaded part is usually a bit smaller after compression.
Can I split by number of files instead of size?
Yes. Set splitMode to count and splitFileCount to the entries you want per part (1 - 100,000). If you leave the count blank, the tool uses 100.
How do I download all the parts?
Click Download N parts. The browser saves each part as a separate .zip file (name-part-001.zip, name-part-002.zip, ...). The first time, your browser may ask permission to download multiple files at once.
Is there one combined download instead of many files?
No. Each part downloads individually. The name-N-parts.zip text in the result is just a label - there is no single bundled archive of all the parts.
Will the parts open on Windows and Mac?
Yes - each part is a standard, valid ZIP. Open them in Windows Explorer, macOS Finder, 7-Zip, or unzip. No special reassembly tool is needed because the parts are not raw byte slices.
My archive is password-protected. Can I still split it?
If it is an encrypted ZIP, supply the password when prompted and zip.js will read it. The resulting parts are not re-encrypted, so treat them as plaintext ZIPs.
What is the largest archive I can split?
It depends on your plan: Pro allows 500 MB and 50,000 entries; Pro-media and Developer allow 2 GB and 500,000 entries. Both the size cap and the entry-count cap apply.
How is this different from a multi-part ZIP I build from scratch?
This tool splits an archive that already exists. To build a fresh multi-part archive from loose files, use multi-part-archive-creator. To stitch parts back into one archive, use archive-merger.
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.