CRC32 Checksum Calculator
Type text or choose a file to calculate its CRC-32 plus CRC-32C, three common CRC-16 variants and Adler-32 in one go. Large files are read in chunks with a progress bar, and nothing is uploaded.
–| Algorithm | Checksum | Parameters | Copy |
|---|
How to use the CRC32 Checksum Calculator
- Choose Text or File at the top.
- For text, type or paste it. Switch to Hex bytes if you want to checksum raw bytes like
31 32 33. - For a file, click the drop area or drag a file onto it. A progress bar shows how much has been read.
- Pick the output format: hexadecimal (with optional uppercase and 0x prefix) or decimal.
- Press Calculate Checksum (text updates automatically) and copy the value you need, or Copy all.
CRC parameters and check values
Every CRC variant is defined by its width, polynomial, initial value, whether input and output bits are reflected and a final XOR value. The “check” column is the result for the ASCII string 123456789, which you can use to confirm any implementation.
| Algorithm | Width | Polynomial | Init | Reflected | XOR out | Check |
|---|---|---|---|---|---|---|
| CRC-32 | 32 | 0x04C11DB7 | 0xFFFFFFFF | Yes | 0xFFFFFFFF | CBF43926 |
| CRC-32C | 32 | 0x1EDC6F41 | 0xFFFFFFFF | Yes | 0xFFFFFFFF | E3069283 |
| CRC-16/CCITT-FALSE | 16 | 0x1021 | 0xFFFF | No | 0x0000 | 29B1 |
| CRC-16/ARC | 16 | 0x8005 | 0x0000 | Yes | 0x0000 | BB3D |
| CRC-16/MODBUS | 16 | 0x8005 | 0xFFFF | Yes | 0x0000 | 4B37 |
| Adler-32 | 32 | A = 1 + Σ bytes, B = Σ A (both mod 65521), result = B·65536 + A | 091E01DE | |||
How CRC-32 is calculated
CRC-32 treats the data as one long binary number and divides it by the generator polynomial using XOR instead of subtraction; the 32-bit remainder is the checksum. In practice it is computed one byte at a time with a 256-entry lookup table:
- Start with
crc = 0xFFFFFFFF. - For each byte
b:crc = table[(crc XOR b) AND 0xFF] XOR (crc >> 8), where the table holds the reflected polynomial 0xEDB88320 applied to every possible byte value. - At the end, flip all bits:
crc XOR 0xFFFFFFFF.
For example, the single letter a (byte 0x61) gives CRC-32 E8B7BE43, and the empty input gives 00000000.
Where each checksum is used
| Checksum | Used in |
|---|---|
| CRC-32 | ZIP, gzip, PNG chunks, Ethernet frames, 7-Zip and many download checksums (.sfv files) |
| CRC-32C | iSCSI, SCTP, ext4 and Btrfs metadata, Google Cloud Storage and AWS S3 object checksums |
| CRC-16/CCITT-FALSE | Telecom and embedded protocols, some bootloaders and smart cards |
| CRC-16/MODBUS | Modbus RTU frames on RS-485 serial lines |
| CRC-16/ARC | ARC and LHA archives and other legacy formats |
| Adler-32 | zlib streams (inside PNG images and PDF FlateDecode data); rsync uses a rolling variant |
Frequently asked questions
What is a CRC32 checksum?
CRC-32 is a 32-bit cyclic redundancy check: a short value computed from data with polynomial division. If even one bit of the data changes, the CRC almost certainly changes, so it is used to detect accidental corruption in ZIP files, PNG images, network frames and downloads.
What is the CRC-32 of "123456789"?
The standard check value of CRC-32 for the ASCII string 123456789 is CBF43926 (decimal 3421780262). CRC-32C gives E3069283, CRC-16/CCITT-FALSE 29B1, CRC-16/ARC BB3D, CRC-16/MODBUS 4B37 and Adler-32 091E01DE. Press the “Use check string” button to see them.
What is the difference between CRC-32 and CRC-32C?
They use different polynomials. CRC-32 (0x04C11DB7) is the classic one from Ethernet, ZIP and PNG. CRC-32C (Castagnoli, 0x1EDC6F41) detects more error patterns and has a dedicated CPU instruction, so it is used by iSCSI, SCTP, ext4, Btrfs and cloud storage APIs.
Which CRC-16 do I need?
It depends on the protocol. Modbus RTU uses CRC-16/MODBUS (send the low byte first). CRC-16/CCITT-FALSE is common in telecom and embedded protocols, and CRC-16/ARC (also called CRC-16/IBM) appears in older storage and serial formats. Check your protocol's documentation for the polynomial and initial value.
Is CRC32 a secure hash?
No. A CRC detects accidental errors but is easy to forge on purpose. To check that a file has not been tampered with, use a cryptographic hash such as SHA-256 instead.
Why do I get a different CRC32 for the same text elsewhere?
Usually the bytes differ: another encoding than UTF-8, a trailing newline, or Windows line endings (CRLF instead of LF). Some tools also print the value in decimal, little-endian byte order or without leading zeros.
Can I checksum very large files?
Yes. The file is read in 4 MB chunks directly from your disk, so even multi-gigabyte files work; the speed depends on your device. The file is never uploaded.