CRC-32 checksum calculator
A cyclic redundancy check (CRC) is an error-detecting code, not a cryptographic hash. CRC-32 treats the input as a long binary polynomial, divides it by a fixed 33-bit generator polynomial and keeps the 32-bit remainder. The result, shown as 8 hex characters, changes whenever data is accidentally corrupted. This tool calculates the standard CRC-32 used by ZIP, gzip, PNG and Ethernet.
Example
Input:
The quick brown fox jumps over the lazy dogCRC-32:
414fa339The standard check value — the CRC of the ASCII string 123456789 — is cbf43926; implementations are verified against it.
Parameters of this CRC-32
| Property | Value |
|---|---|
| Width | 32 bits (8 hex characters) |
| Polynomial | 0x04C11DB7 (reflected form 0xEDB88320) |
| Initial value / final XOR | 0xFFFFFFFF / 0xFFFFFFFF |
| Reflected input and output | Yes |
| Also known as | CRC-32/ISO-HDLC, the IEEE 802.3 CRC |
Other CRC-32 variants exist, notably CRC-32C (Castagnoli), used by iSCSI, ext4 and Btrfs metadata, and hardware-accelerated by SSE 4.2. They produce different values, so check which one a system expects.
Checksum vs cryptographic hash
CRC-32 reliably detects the kinds of errors that happen by accident — all single-bit and double-bit errors, all odd numbers of flipped bits and any burst error up to 32 bits long. But it is linear and easy to manipulate: anyone can change a file and adjust four bytes so that the CRC stays the same. Never use a CRC to detect deliberate tampering or as a security token; use SHA-256 or an HMAC instead. With only 2³² possible values, random collisions also become likely among tens of thousands of items.
The compare box ignores case, spaces, colons and a 0x prefix, so a value copied as 0xCBF43926 from a datasheet still matches cbf43926.
Where CRC-32 is used
- ZIP and gzip archives store the CRC-32 of each file’s uncompressed data to verify extraction.
- Every PNG chunk ends with a CRC-32 of its type and data.
- Ethernet frames carry a CRC-32 frame check sequence.
- Quick change detection and hash tables, where speed matters more than security.
In code: Python zlib.crc32(data), PHP hash('crc32b', $s) (PHP’s plain “crc32” algorithm is a different variant), Java java.util.zip.CRC32. For a 16-bit CRC, see the CRC-16 calculator. The checksum is computed in your browser.
Checking the CRC-32 stored in an archive or image
Because ZIP, gzip and PNG already carry CRC-32 values, you can compare them with the result here:
- ZIP:
unzip -v archive.ziplists a CRC-32 column for every entry. Extract a file, hash it here, and the values should match. - gzip:
gzip -lv file.gzprints the CRC of the original, uncompressed data. - PNG: each chunk's CRC covers the four type bytes plus the data, not the length field before them.
Watch the byte order when you read the raw bytes in a hex editor. ZIP and gzip store the checksum little-endian, so 414fa339 appears as 39 a3 4f 41 in the file. PNG stores it big-endian, in the same order this tool prints.