Calculating...
Enter your input, pick a CRC preset, then click Calculate →
What Is CRC?
A Cyclic Redundancy Check (CRC) is a fixed-length checksum computed by dividing a byte sequence by a binary polynomial and keeping the remainder. The sender appends the CRC to a message; the receiver recomputes it. If the two match, the data arrived without accidental corruption.
CRC is used for error detection, not authentication. It reliably detects single-bit errors, burst errors, and most multi-bit errors. It does not detect malicious tampering — use HMAC or a digital signature for that purpose.
CRC-8
8-bit result. Used in short embedded protocol frames, 1-Wire, SMBus.
CRC-16
16-bit result. Used in Modbus RTU, USB, HDLC, SDLC, Bluetooth.
CRC-32
32-bit result. Standard for Ethernet, ZIP, PNG, gzip, and iSCSI (CRC-32C).
How to Read CRC Model Parameters
| Parameter | Meaning | CRC-32 example |
|---|---|---|
| Width | Number of bits in the CRC result | 32 |
| Poly | Generator polynomial (without implicit leading 1 bit) | 0x04C11DB7 |
| Init | Initial value loaded into the CRC register before processing | 0xFFFFFFFF |
| RefIn | Reflect (bit-reverse) each input byte before processing | true |
| RefOut | Reflect the final CRC value before XOR | true |
| XorOut | Value XOR'd with the CRC after reflection to produce the final result | 0xFFFFFFFF |
| Check | Expected CRC of the ASCII string "123456789" — use to verify implementations | CBF43926 |
Frequently Asked Questions
Why does the same input produce different CRCs with different presets?
Every CRC model uses a different polynomial, initial value, reflection flags, and XOR output mask. Changing any parameter changes the result completely. When verifying a checksum, you must use exactly the same model that was used to generate it. The "check" value (CRC of the string "123456789") lets you confirm you are using the correct model.
What is the difference between CRC-32 and CRC-32C?
CRC-32/ISO-HDLC (the common CRC-32 used in Ethernet, ZIP, PNG, and gzip) uses polynomial 0x04C11DB7. CRC-32C (Castagnoli) uses polynomial 0x1EDC6F41, which has better error detection properties for longer data blocks and is used in iSCSI, SCTP, and many modern storage systems. Some CPUs have hardware acceleration for CRC-32C via the SSE 4.2 CRC32 instruction.
What is the big-endian vs little-endian byte display for?
The byte order display shows how the CRC value is split into individual bytes for inclusion in a protocol frame. Big-endian (most significant byte first) is the network standard and used in Ethernet, PNG headers, and most internet protocols. Little-endian (least significant byte first) is used in Modbus RTU frame trailers — the Modbus CRC is always appended low byte then high byte.
Can CRC detect all errors?
CRC reliably detects all single-bit errors, all double-bit errors (given appropriate polynomial width and message length), all odd numbers of bit errors, and burst errors shorter than the CRC width. It does not guarantee detection of every multi-bit error pattern. for very long messages or adversarial environments, cryptographic hashing (SHA-256, Blake3) is more appropriate.
How is the hex byte input parsed?
The hex input strips spaces, commas, hyphens, underscores, colons, and 0x prefixes automatically. Any two adjacent hex digits become one byte. Formats like DE AD BE EF, 0xDE,0xAD,0xBE,0xEF, and DEADBEEF are all treated identically. The total number of hex digits must be even (whole bytes only).