CRC-32 Checksum Calculator
Calculate CRC-32 checksums from text or files instantly. Uses IEEE 802.3 polynomial for accurate CRC32 hash verification and data integrity checks.
About
CRC-32 (Cyclic Redundancy Check, 32-bit) is a non-cryptographic hash function standardized in IEEE 802.3 and used in Ethernet, ZIP, PNG, and MPEG-2 for error detection. The algorithm divides input data by the generator polynomial G(x) of degree 32 and returns the remainder as an 8-character hexadecimal fingerprint. A single flipped bit in transit changes the checksum entirely. Relying on manual byte comparison for file integrity is error-prone and impractical beyond trivial sizes. This tool computes CRC-32 using the reflected polynomial 0xEDB88320 with a precomputed 256-entry lookup table, matching the output of crc32() in zlib, Python's binascii, and PHP.
Limitation: CRC-32 detects accidental corruption. It is not a cryptographic hash. Do not use it for tamper-proofing or password storage. Collision probability is approximately 1 in 4.29 × 109 for random data. For files, the tool reads raw binary via the File API, producing identical results to command-line utilities like crc32 on Linux. Text mode encodes input as UTF-8 before hashing.
Formulas
CRC-32 treats the input byte stream as a polynomial over GF(2) and computes the remainder modulo the generator polynomial. The reflected implementation used here processes bits LSB-first with the reversed polynomial:
Lookup table generation for each index i from 0 to 255:
For each byte b of input data, the running CRC register R is updated:
Initial value: R0 = 0xFFFFFFFF. Final XOR: CRC = R ⊕ 0xFFFFFFFF. The result is a 32-bit unsigned integer, displayed as 8 uppercase hexadecimal digits.
Where: Prev = reversed generator polynomial, T = precomputed lookup table (256 entries), R = CRC register, b = current input byte, ⊕ = bitwise XOR, >>> = unsigned right shift, ∧ = bitwise AND.
Reference Data
| Format / Protocol | Uses CRC-32 | Polynomial | Bit Width | Notes |
|---|---|---|---|---|
| IEEE 802.3 (Ethernet) | Yes | 0x04C11DB7 | 32 | Frame Check Sequence (FCS) |
| ZIP / GZIP | Yes | 0x04C11DB7 | 32 | File integrity in archives |
| PNG | Yes | 0x04C11DB7 | 32 | Chunk CRC per spec |
| MPEG-2 | Yes | 0x04C11DB7 | 32 | Transport stream error detection |
| BZIP2 | Yes | 0x04C11DB7 | 32 | Block-level CRC |
| POSIX cksum | Variant | 0x04C11DB7 | 32 | Includes length in computation |
| CRC-32C (Castagnoli) | Variant | 0x1EDC6F41 | 32 | iSCSI, ext4, SSE 4.2 hardware |
| CRC-32/XFER | Variant | 0x000000AF | 32 | Rarely used |
| CRC-16/CCITT | No (16-bit) | 0x1021 | 16 | X.25, Bluetooth |
| CRC-8/MAXIM | No (8-bit) | 0x31 | 8 | 1-Wire bus |
| Adler-32 | No (Adler) | N/A (sum-based) | 32 | zlib fast check, weaker detection |
| MD5 | No (crypto) | N/A | 128 | Cryptographic, deprecated for security |
| SHA-256 | No (crypto) | N/A | 256 | Cryptographic, tamper-proof |
| Known Test: "123456789" | Verify | 0xEDB88320 | 32 | Expected: 0xCBF43926 |
| Known Test: "" (empty) | Verify | 0xEDB88320 | 32 | Expected: 0x00000000 |
Frequently Asked Questions
crc32, python3 -c "import binascii; print(hex(binascii.crc32(open('file','rb').read())))", or 7-Zip's CRC column.