How to troubleshooting the per-file checksum generator
- Step 1Check the size against your tier — If the archive is bigger than your cap (50 MB free, 500 MB Pro, 2 GB paid) you'll see
File "…" exceeds the <tier> tier per-job limit (…). Upgrade for larger files.before processing. Upgrade or split with Archive Splitter. - Step 2Check the entry count — Free archives are also limited to 500 entries; Pro 50,000; paid 500,000. A bundle within the size cap can still be over the entry cap — that's a separate documented limit.
- Step 3Handle encrypted archives correctly — Encrypted ZIP: enter the password in the optional field. Encrypted 7z/RAR: the tool reports that libarchive can't take passwords in-browser — decrypt locally or repackage as an encrypted ZIP first.
- Step 4Verify the input is a valid archive — If extraction fails, confirm the true format with Auto Format Detector. A renamed or truncated file is a common cause.
- Step 5Repair a corrupt ZIP — A damaged central directory makes extraction fail before any hashing. Recover what you can with Corrupted ZIP Repair, then re-run the manifest.
- Step 6Rule out browser/WASM issues — If the engine never loads, hard-refresh (Ctrl+Shift+R) to clear a stale chunk, and try a clean profile/Incognito to rule out an extension blocking WebAssembly workers.
Error wording → cause → fix
Messages the tool actually surfaces, with the underlying cause and the resolution.
| Message / symptom | Cause | Fix |
|---|---|---|
Drop an archive file to process. | Clicked Process with no file | Add an archive to the dropzone first |
File "…" exceeds the <tier> tier per-job limit (…). | Archive over your size cap | Upgrade tier or split the archive |
Archive contains encrypted entries … Provide a password to extract. | Encrypted ZIP, no password | Enter the ZIP password and re-run |
Failed to decrypt "…". The password may be incorrect. | Wrong ZIP password | Re-enter the correct password |
… archive "…" appears to be encrypted. libarchive.js … does not accept passwords. | Encrypted 7z/RAR/BZ2/XZ | Decrypt locally or repackage as encrypted ZIP |
| Header-only / empty CSV, Files = 0 | Archive holds only folders | Expected — only file entries are hashed |
Limits to check first
Both limits are per archive. The size check runs before processing.
| Tier | Size cap | Entry cap |
|---|---|---|
| Free | 50 MB | 500 |
| Pro | 500 MB | 50,000 |
| Pro-Media | 2 GB | 500,000 |
| Developer | 2 GB | 500,000 |
Cookbook
Five symptoms you'll actually hit, each with the diagnosis and the fix.
It rejects the file before processing
The size check runs first. The message names the tier and the cap.
Symptom: error appears instantly, no progress Message: File "big.zip" exceeds the free tier per-job limit (50 MB). Upgrade for larger files. Fix: upgrade to Pro (500 MB) or split with Archive Splitter
Encrypted ZIP won't open
zip.js needs the password to decrypt each entry before hashing.
Message: Archive contains encrypted entries (e.g. "data.bin"). Provide a password to extract. Fix: type the password in the optional Password field, then Process
Encrypted 7z is impossible in-browser
libarchive WASM can read 7z/RAR but cannot accept a password.
Message: 7Z archive "backup.7z" appears to be encrypted. libarchive.js … does not accept passwords.
Fix: 7z x -pPASSWORD backup.7z (locally)
then re-archive as encrypted ZIP via Encrypted ZIP CreatorManifest is empty or shorter than expected
Folder entries are skipped; only files are hashed.
Archive listing (file manager): 12 items Manifest Files count: 9 Reason: 3 of the 12 were directory entries → skipped by design
Hash doesn't match the vendor's checksum
The vendor likely hashed the whole .zip; this tool hashes each file inside.
Vendor published: SHA256(app-1.0.zip) = 5994471a... (the container) This tool outputs: per-entry hashes (bin/app, README, …) Fix: to match the container hash, hash the .zip file itself, not its entries
Edge cases and what actually happens
Stuck on "Processing…" with no error
Memory or stale buildThere is no built-in processing timeout, so a long run is usually device-memory pressure on a large archive, or a stale cached chunk. Hard-refresh (Ctrl+Shift+R); if it persists, try a smaller archive or a machine with more RAM.
WASM engine never loads
Extension / bundlerAn extension intercepting worker channels, or a blocked WASM worker URL, can stop libarchive from initialising. Retry in Incognito with extensions off.
Wrong password on an encrypted ZIP
Errorzip.js reports Failed to decrypt "…". The password may be incorrect. Double-check the password (case-sensitive) and re-run.
Encrypted 7z / RAR
Unsupportedlibarchive WASM can't take a password. Decrypt locally with 7-Zip/WinRAR, or repackage as an encrypted ZIP via Encrypted ZIP Creator, then manifest the ZIP.
Manifest count lower than the file count
By designDirectory entries (names ending in /) aren't hashed. The Files chip and CSV reflect file entries only.
Corrupt central directory
ErrorExtraction fails before hashing. Recover salvageable entries with Corrupted ZIP Repair, then re-run the manifest on the repaired file.
Format not recognised
ErrorIf magic-byte detection can't match a known format and the ZIP fallback also fails, extraction errors out. Confirm the real type with Auto Format Detector.
MD5 is much slower than SHA-256
ExpectedSHA-256/SHA-1 use hardware-accelerated Web Crypto; MD5 is pure JavaScript because browsers don't expose MD5. Prefer SHA-256 unless you must match an MD5 manifest.
Two downloads appear, not one
By designEvery run produces two files — the CSV and the .sha256sums — downloaded separately. If your browser blocks the second, allow multiple downloads for the site.
Need corruption-only checking, not a manifest
Different toolFor a quick structural/CRC32 integrity pass, use Archive Integrity Tester instead of a full per-file hash manifest.
Frequently asked questions
Why does it reject my file immediately?
The size check runs before processing. The message names your tier and its cap (50 MB free, 500 MB Pro, 2 GB paid). Upgrade or split the archive.
Is there a per-archive entry limit too?
Yes — 500 entries on free, 50,000 on Pro, 500,000 on Pro-Media/Developer. An archive can be under the size cap but over the entry cap.
Why does it stay on "Processing…"?
There's no fixed timeout, so a long run is usually memory pressure on a large archive or a stale cached build. Hard-refresh (Ctrl+Shift+R) and, if needed, try a smaller archive or more RAM.
My encrypted ZIP won't open — what do I do?
Enter the password in the optional field so zip.js can decrypt each entry. If it says the password may be incorrect, re-check it (case-sensitive).
Why can't I open an encrypted 7z or RAR?
libarchive WASM (the 7z/RAR engine) doesn't accept passwords in-browser. Decrypt locally with 7-Zip/WinRAR, or repackage as an encrypted ZIP via Encrypted ZIP Creator and manifest that.
Why is my manifest empty or shorter than expected?
Folder entries are skipped — only files are hashed. An archive with only directories yields a header-only CSV and a Files count of 0.
Why don't the hashes match the vendor's checksum?
This tool hashes each file INSIDE the archive. If the vendor published a hash of the whole container, hash the .zip file itself with a single-file tool to match it.
What does a CRC or extraction error mean?
The archive is corrupt and can't be fully read. Recover what's salvageable with Corrupted ZIP Repair, then re-run the manifest on the repaired archive.
Why is MD5 slow?
MD5 runs in pure JavaScript because browsers don't expose MD5 through Web Crypto; SHA-256 and SHA-1 are hardware-accelerated. Use SHA-256 unless you need MD5 for compatibility.
Why did two files download?
By design — the CSV manifest and the .sha256sums verification file are both produced every run and download as two separate files.
A renamed file fails — does the extension matter?
The format is detected from magic bytes, not the extension, so most renames still read correctly. If detection fails, confirm the true type with Auto Format Detector.
Does any of this upload my data?
No. Extraction and hashing run in your browser. Check DevTools → Network — there are no outbound requests for the file contents.
Which browsers are supported?
Any with WebAssembly and Web Crypto — Chrome, Edge, Firefox, Safari, Brave, Opera, and mobile Chrome/Safari. Very large archives can exceed mobile memory.
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.