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 compared with ZIP
 CRXZIP
First four bytesCr24PK\x03\x04
Publisher signaturePresentNone
Chrome auto-updateWorks, while the signature stays validNot applicable
Chrome installs it directlyYes, as a packageNo
Opens in archive toolsNoYes
Load unpackedNot directly — unpack it firstYes, from the folder
File contentsZIP archiveZIP 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../../something or 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.