What a CRC is
A cyclic redundancy check treats your data as the coefficients of a huge binary polynomial and divides it, modulo 2, by a fixed generator polynomial. The remainder is the CRC. Because a single flipped bit changes the remainder in a well-understood way, CRCs are extremely good at catching the burst errors that happen on wires, radios, and storage media — which is why they are built into Ethernet frames, zip and gzip archives, PNG chunks, and countless serial protocols.
Why there are so many variants
A CRC "algorithm" is really a set of parameters: the width, the generator polynomial, the initial register value, whether the input and output bits are reflected (bit-reversed), and a final XOR. Change any of these and you get a different, incompatible checksum. That is why MODBUS, XMODEM, and CCITT can all use 16-bit CRCs and still disagree on the answer. This tool computes the common named models side by side, and lets you dial in a custom polynomial when you are matching an obscure device.
The "123456789" check value
Every CRC model has a published check value: the CRC of the nine
ASCII bytes 123456789. It is the fastest way to confirm an
implementation is correct. Standard CRC-32, for example, gives
0xCBF43926; CRC-16/MODBUS gives 0x4B37. Type those
nine characters into the box above and you will see exactly those results.
Where each model shows up
| Model | Used in |
|---|---|
| CRC-16/MODBUS | Modbus RTU industrial serial frames |
| CRC-16/XMODEM, KERMIT | classic file-transfer protocols |
| CRC-32 | zip, gzip, PNG, Ethernet |
| CRC-32C | iSCSI, SSE4.2 hardware, ext4 metadata |
| CRC-64/XZ | the xz compression format |
| CRC-8/MAXIM | Dallas/Maxim 1-Wire devices |
CRC vs. checksum vs. hash
A simple checksum — adding the bytes, or XOR-ing them — is cheaper but weaker: it misses many two-bit errors a CRC would catch, which is why the simple checksums here are offered mainly for old protocols that specify them. None of these, CRC included, is a security measure: they detect accidental corruption, not deliberate tampering. For that you want a cryptographic hash such as SHA-256.
Related tools: the hash generator for MD5/SHA digests, and the Base64 converter for turning between text, hex, and binary encodings of the same bytes.