CRC-32 checksum calculator
Calculate the CRC-32 of text or a file in hex and decimal — the same checksum ZIP archives and PNG chunks use to detect corruption.
- Runs in your browser
- Nothing you enter is sent
- Free, no account
Paste the checksum published next to a download. Comparison ignores case and any spaces.
A checksum, not a hash
CRC-32 is designed to catch accidents: a flipped bit on a wire, a bad sector, a truncated transfer. It is not designed to resist anyone, and it does not — producing a different file with the same CRC takes seconds and no special hardware. Use it where the adversary is physics, and a real hash where the adversary is a person.
Which variant this is
| Parameter | Value |
|---|---|
| Polynomial | 0x04C11DB7, reflected as 0xEDB88320 |
| Initial value | 0xFFFFFFFF |
| Final XOR | 0xFFFFFFFF |
| Input / output reflected | Yes |
| Known as | CRC-32, CRC-32/ISO-HDLC, “the zip CRC” |
This is the variant used by ZIP, gzip, PNG, Ethernet and most of the tooling that reports a “CRC32”. CRC-32C (Castagnoli, polynomial 0x1EDC6F41) is a different function used by iSCSI, ext4 and SSE4.2 hardware instructions — it will not match these values, and that is expected rather than a bug.
Why ZIP tools show a different number
The CRC stored in a ZIP entry is computed over the uncompressed contents of that one
member, not over the archive file. So the CRC of archive.zip as a file is not
the CRC your archiver lists for document.txt inside it. Extract the member first,
then hash it here — the values will then agree.
What CRC-32 is genuinely good at
Its guarantees are precise and useful. A CRC with a well-chosen 32-bit polynomial detects every single-bit error, every double-bit error within a very long span, every odd number of bit errors, and every burst of errors up to 32 bits — with certainty, not probability. Beyond that it fails to notice roughly one in four billion random corruptions.
That is why it appears at the bottom of the stack: in Ethernet frames, in every PNG chunk, in every ZIP entry. It is cheap enough to compute on hardware at line rate and strong enough for the failure modes real wires and disks produce.
Hex or decimal
The value is a 32-bit unsigned integer. Most tools print it as eight lowercase hex characters; some libraries return the same number in decimal, and a few in languages with signed 32-bit integers report it as a negative number. All representations are shown above so you can match whichever one you were given.
Streaming, so size is not an issue
CRC-32 updates a single 32-bit register as bytes arrive, so this page reads a file in slices and never holds more than one chunk. A 20 GB archive is no harder than a text file — and nothing is uploaded, so there is no transfer to wait for either.
Questions
Which CRC-32 variant is this?
The IEEE 802.3 polynomial 0xEDB88320, reflected, with an initial and final value of 0xFFFFFFFF. That is what ZIP, gzip, PNG and Ethernet use. CRC-32C (Castagnoli) is a different polynomial and gives different results.
Is a CRC a hash?
No. It is an error-detecting code. Producing a different file with the same CRC is trivial, so it protects against accidents on a wire or a disk, never against tampering.
Why does my ZIP tool show a different value?
Because the ZIP entry CRC covers the uncompressed contents of one file inside the archive, not the archive file itself. Extract the member first, then hash that.
Hex or decimal — which do I need?
Hex, eight lowercase characters, is what most tools print. Some libraries report the same value as an unsigned decimal integer, so both are shown here.