Also available in: Español · Português · Français · العربية
CRC Calculator
Compute a CRC with any of the 113 algorithms in the standard catalogue — and find out which one your file format actually means by CRC-32.
What is a CRC?
A cyclic redundancy check is a short number computed from a block of data so that a receiver can tell whether the block arrived intact. It is not a hash and not a signature: it is built to catch the accidents transmission and storage produce — flipped bits, dropped bytes, a truncated frame — and it is cheap enough that Ethernet, zip, PNG, gzip and a great many hardware buses compute one on everything that passes.
The important thing to understand is that a CRC is not one algorithm. It is a family described by six parameters: how wide the register is, the polynomial, what the register starts at, whether the input bits are reflected, whether the output is, and a value XORed in at the end. Change any of them and you get a different, equally valid CRC. The standard catalogue lists 113 that are actually in use, from three bits wide to eighty-two.
This calculator implements the parametrised algorithm and ships all 113 of them, so you can compute the one your format actually specifies rather than the one a library happened to name CRC-32.
How to use it
- Give it your input. Text by default, or switch to hex bytes if you are working from a packet dump. The default is the string 123456789, which is the catalogue's own test vector, so the first result you see is one you can look up in the published table.
- Pick the algorithm. Search by name, by alias, or by polynomial. Typing CRC-32 lands on ISO-HDLC, which is what that bare name means, and typing a polynomial brings up everything using it.
- Check the comparison panel. When the algorithm you chose shares its polynomial with others, they are all listed with what each returns for your input. That is usually the fastest way to find out which one the system you are debugging is really using.
Five different algorithms are called CRC-32
Twelve of the catalogued algorithms are thirty-two bits wide, and five of those share the polynomial 0x04C11DB7: ISO-HDLC, BZIP2, CKSUM, JAMCRC and MPEG-2. They differ only in the initial register, the reflection flags and the final XOR — and they return five different numbers for the same input. Over the string 123456789 they give 0xCBF43926, 0xFC891918, 0x765E7680, 0x340BC6D9 and 0x0376E6E7 respectively.
The catalogue lists the bare name CRC-32 as an alias of ISO-HDLC alone, and that is the one zip, gzip and PNG use. But a specification, a datasheet or a support ticket saying CRC-32 may mean any of the five, and nothing in the resulting value records which produced it. If two systems disagree about a checksum by what looks like a constant, this is the first thing worth ruling out — it is far more common than an actual transmission error.
The same trap sits one level down, and it is worse there. The catalogue lists thirty-one sixteen-bit algorithms, and eleven of those share the polynomial 0x1021 — among them XMODEM, KERMIT, IBM-3740 and IBM-SDLC. Another seven share 0x8005, including ARC, MODBUS and USB. So a sixteen-bit CRC identified only by its polynomial is ambiguous eleven ways, which is why the only reliable way to name one is to give all six parameters. That is exactly what the catalogue exists to do.
How this is verified, and what the class column means
The catalogue publishes a check value for every algorithm: the result of running it over the string 123456789. That makes the reference data its own test suite. This engine is verified by reproducing all 113 published values, not by agreeing with another library — agreeing with somebody else's implementation would only prove that two people made the same choices, whereas reproducing the definitions proves the parameters were followed.
Each algorithm whose width is a whole number of bytes also publishes a residue, a second and independent constant describing what the register holds after reading a valid message with its checksum appended. Those are reproduced too, so most entries are checked twice by different properties. There is also a negative control: a deliberately corrupted set of parameters must fail its check value, or the whole comparison would pass for an engine that simply echoed the expected answer.
One column in the catalogue is worth keeping and usually gets dropped when tables are copied. Each entry is marked attested, confirmed, academic or third-party, and that is a statement about how well the six parameters have been verified against a working implementation — not about the algorithm. Attested means somebody checked them against real output; academic means they come from a paper or a standard with no implementation to hand. Sixty of the 113 are attested and thirty-eight academic, so a good third of the catalogue is parameters nobody has confirmed against running code.
Two honest limits. A CRC is designed against accidental corruption and gives no protection against deliberate tampering — anyone able to change your data can recompute the checksum, so a CRC is never a security measure. And computing one here processes the input a bit at a time for clarity and to support the odd widths; that is fine for anything you would paste into a text box, and it is not how you would checksum a gigabyte.
Why is it free?
It runs in your browser. Shifting a register is not work that needs a server, so there is nothing to pay for and no account to make.
Nothing you paste is uploaded, stored or logged. The data you are checksumming is usually a frame or a file from a real system, and the reliable way to keep that private is never to receive it.