CRX vs ZIP
What actually changes when you convert a CRX to a ZIP, what you lose, and when the difference matters for loading, editing or inspecting an extension.
Both are the same thing, plus a wrapper
A CRX is a ZIP archive with a binary header in front of it. The archive inside is byte-for-byte identical to a normal ZIP of the same extension. Converting between them is therefore a matter of removing or adding a header, not of repackaging anything.
That framing answers most "which should I use" questions immediately: everything that happens inside the archive is unaffected, and everything that depends on the signature is.
Side by side
| CRX | ZIP | |
|---|---|---|
| First four bytes | Cr24 | PK\x03\x04 |
| Publisher signature | Present | None |
| Chrome auto-update | Works, while the signature stays valid | Not applicable |
| Chrome installs it directly | Yes, as a package | No |
| Opens in archive tools | No | Yes |
| Load unpacked | Not directly — unpack it first | Yes, from the folder |
| File contents | ZIP archive | ZIP archive |
What you lose by converting to ZIP
One thing: the signature. It lives in the CRX header, so a converted ZIP is unsigned. In practical terms that means:
- Chrome will not auto-update an extension loaded from a converted ZIP. An unpacked extension does not auto-update anyway, but it is worth knowing that re-signing is what a published extension relies on.
- You cannot prove the ZIP came from the publisher. Anyone can produce an identical-looking ZIP. If provenance matters to you, that proof lived in the CRX.
What you do not lose: the code, the manifest, the icons, the structure. Nothing inside the archive is modified. See what a CRX file is for the byte-level detail.
When converting is the right move
- You want to read the manifest. TheManifest Viewer accepts a ZIP directly, so converting is the simplest path.
- You want to check the permissions. Same reason — open the manifest, then run it through the Permission Checker.
- You want to load it unpacked. Chrome's developer mode loads adirectory. Convert, unzip, and point it at the folder.
- You want to edit it. Changes to a CRX invalidate its signature anyway, so there is nothing to preserve by staying in that format.
When to keep the CRX
- You intend to install it, rather than inspect it.
- You need the publisher's signature to stay intact.
- You want Chrome to handle it as a normal package, updates and all.
Converting safely
Two things to be careful about, both handled by theconverter on this site:
- Treat the archive as data. Unpacked extension code is attacker-controlled by default. Nothing inside should be executed, and no HTML or JavaScript from the archive should be rendered into a page. The converter reads bytes and never evaluates them.
- Validate the paths. A malicious archive can contain entries like
../../somethingor absolute paths, which turn extraction into a write outside the destination. The converter rejects such an archive as a whole rather than extracting part of it, because a partial extraction would no longer match the original extension.
A note on CRX versions
Chrome has used two header layouts. CRX2 stored a public key and a signature, both with explicit lengths. CRX3 replaced them with a single metadata block whose size is declared in the header. Both are simple to read, and this site's converter supports both — see the tool's limitations for exactly what that does and does not cover.
Tools for this
CRX to ZIP Converter
Remove the CRX header and get the underlying ZIP package, in your browser.
Runs locallyManifest Viewer
Read a manifest.json field by field, formatted and explained.
Runs locallyChrome Extension Downloader
Turn a Chrome Web Store link or extension ID into a CRX download request.