How to troubleshooting the archive splitter
- Step 1Confirm you're on Pro or higher — If you see an upgrade overlay instead of a drop zone, you're on Free. The splitter's minimum tier is Pro. Upgrade or switch to a Pro/Pro-media/Developer account.
- Step 2Check the archive against your tier caps — Verify the input is within your plan: Pro = 500 MB / 50,000 entries, Pro-media/Developer = 2 GB / 500,000 entries. A high-file-count archive can trip the entry cap even when it's under the size cap.
- Step 3Confirm the format is readable — zip/tar/gz read natively; 7z/rar/bz2/xz/iso via libarchive WASM. Format is detected by magic bytes - a renamed or truncated file may be seen as
unknownand fail. Run archive-integrity-tester if unsure. - Step 4Supply the password for encrypted ZIPs — If the ZIP has encrypted entries, extraction needs the password (handled by zip.js). Enter it when prompted; without it the split fails before producing parts.
- Step 5Re-check your mode and expectations — Expecting tar/7z parts? You get ZIP. Parts smaller than the target? That's uncompressed budgeting plus recompression. An oversized single file in its own big part? By design.
- Step 6Allow multiple downloads — Clicking
Download N partstriggers one download per part. If only the first arrives, allow your browser's 'download multiple files' prompt for the site and re-click.
Symptom -> cause -> fix
The most common Archive Splitter issues mapped to their real cause in the implementation and the fix.
| Symptom | Cause | Fix |
|---|---|---|
| Upgrade overlay, no drop zone | Tool is Pro-gated (minTier pro); you're on Free | Upgrade to Pro/Pro-media/Developer |
| Blocked before processing | Input over the tier size or entry-count cap | Use a smaller archive or upgrade; check entry count, not just MB |
Archive contains no entries. | Extraction found only directories / no files | Add files, or use an archive that actually contains file entries |
| Extraction errors out | Unknown/corrupt format, or unrecognised magic bytes | Verify with archive-integrity-tester; ensure it's a real zip/tar/gz/7z/rar/bz2/xz/iso |
| Asks for a password / fails | Encrypted ZIP entries need the password | Enter the password when prompted (zip.js reads it) |
| Got ZIP parts, expected 7z/tar | Output is always ZIP (level 6) by design | Use archive-format-converter if you need a different format |
| Parts smaller than splitSizeMb | Budget is uncompressed bytes; parts re-compressed at level 6 | Expected - set the target a bit higher if you want larger parts |
| One part is way over the target | A single entry exceeds the part size, so it got its own part | Expected - we never split one file across parts |
| Only the first part downloaded | Each part is a separate browser download | Allow multiple downloads for the site, then re-click |
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. |
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
Reproduce the common failures and confirm the fix. Each block shows what you'd see and what to do.
Free plan: upgrade overlay instead of the tool
The splitter's minimum tier is Pro. On Free, the page renders an overlay and never shows the drop zone - this is gating, not an error.
Symptom: 'Archive Splitter requires the Pro plan.' overlay Cause: minTier = pro; current plan = free Fix: Upgrade to Pro, Pro-media, or Developer.
Over the entry-count cap (not the size cap)
A 300 MB archive is under Pro's 500 MB size cap but has 60,000 entries - over Pro's 50,000-entry cap. Both limits apply.
Input: many-tiny-files.zip (300 MB, 60,000 entries)
Plan: Pro (limit 500 MB / 50,000 entries)
Result: blocked - entry-count cap exceeded
Fix: upgrade to Pro-media/Developer (500,000 entries)
or split the source into fewer-entry archives first.`Archive contains no entries.`
The archive holds only empty directories, so extraction yields zero file entries and the splitter throws. There is nothing to chunk.
Input: empty-tree.zip (only directory records)
Error: Archive contains no entries.
Fix: use an archive that contains files, or prune the
empty folders deliberately with empty-folder-pruner.Renamed file fails format detection
Someone renamed a .7z to .zip. Detection reads magic bytes, sees 7z, and routes to libarchive - which works. But a truncated/garbage header reads as unknown and errors.
Input: archive.zip (actually a truncated download)
Detected: unknown (bad magic bytes) -> libarchive -> error
Fix: re-download the file; verify with
archive-integrity-tester before splitting.Expected tar parts, got ZIP
Splitting a .tar returns .zip parts because the splitter only writes ZIP. This is the single most common 'wrong output' report - and it's by design.
Input: logs.tar
Output: logs-part-001.zip, logs-part-002.zip (ZIP!)
Fix: if you need tar/gz/7z output, this isn't the tool;
see archive-format-converter for conversions.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 do I only see an upgrade screen?
The Archive Splitter is Pro-gated (minimum tier Pro). On the Free plan the page shows an upgrade overlay instead of the drop zone. Upgrade to Pro, Pro-media, or Developer to use it.
Why was my archive rejected before anything happened?
It exceeded your plan's cap. Pro allows 500 MB and 50,000 entries; Pro-media and Developer allow 2 GB and 500,000 entries. Both apply - a high file count can trip the entry cap even under the size cap.
What does 'Archive contains no entries.' mean?
Extraction found no file entries to split - typically an archive containing only empty directories (pure directory records are dropped). Use an archive that actually contains files.
Why did extraction fail with an unknown-format error?
Format is detected from the file's magic bytes. A truncated, corrupt, or non-archive file is treated as unknown and routed to libarchive, which errors if it can't parse it. Re-download and verify with archive-integrity-tester.
It asked for a password - why?
The ZIP has encrypted entries, which are read via @zip.js/zip.js and require the password. Enter it when prompted; without it the split can't extract the contents. The output parts are not re-encrypted.
Why are the parts ZIP when I uploaded a 7z/tar?
By design. Every part is rebuilt with fflate's zipSync at level 6, so output is always ZIP regardless of input. For a different output format, use archive-format-converter.
Why are my parts smaller than the size I set?
size mode budgets against the uncompressed size of entries, and each part is then re-compressed at level 6. So a 50 MB target typically yields parts under 50 MB on disk. Raise the target if you want bigger parts.
Why is one part much bigger than my target?
A single entry was larger than the part size. The splitter never splits one file across parts, so it gives that entry its own part - which can exceed the target. That's expected, not a bug.
Only the first part downloaded - where are the rest?
Each part downloads as a separate file, so your browser may have blocked the extra downloads. Allow 'download multiple files' for the site and click Download N parts again.
Is there a single combined download of all parts?
No. The name-N-parts.zip text is just a label; the actual downloads are the individual name-part-NNN.zip files. To recombine them, use archive-merger.
Does it preserve empty folders?
No - only file entries (with their paths) are kept; empty directory records are dropped. If empty-folder handling matters, use empty-folder-pruner or audit first with file-listing-generator.
The tab froze on a huge archive - what happened?
Splitting decompresses everything into memory and re-zips each part, which is memory-heavy near the 2 GB / 500,000-entry ceiling. Use a machine with more RAM, close other tabs, or pre-split the archive smaller with a CLI first.
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.