Calculate a CRC checksum
Enter text or hexadecimal bytes, select a CRC model, and calculate the checksum instantly in your browser.
Common CRC polynomial presets
Select a preset to load its standard parameters into the calculator. Always confirm the complete CRC model against your protocol documentation.
| CRC model | Width | Polynomial | Init | Check value* | Load |
|---|---|---|---|---|---|
| CRC-8/SMBUS | 8 | 07 | 00 | F4 | |
| CRC-16/CCITT-FALSE | 16 | 1021 | FFFF | 29B1 | |
| CRC-16/MODBUS | 16 | 8005 | FFFF | 4B37 | |
| CRC-16/XMODEM | 16 | 1021 | 0000 | 31C3 | |
| CRC-32/ISO-HDLC | 32 | 04C11DB7 | FFFFFFFF | CBF43926 | |
| CRC-32C | 32 | 1EDC6F41 | FFFFFFFF | E3069283 |
*Check values are for the ASCII text 123456789.
Presets also set their reflection and final XOR values.
What is a CRC polynomial?
A cyclic redundancy check (CRC) is an error-detection method used to identify accidental changes in digital data. The input message is treated as a polynomial over binary arithmetic, divided by a generator polynomial, and represented by the remainder. That remainder is the CRC checksum.
CRC arithmetic uses modulo-2 operations. In practice, subtraction and addition are both implemented with XOR, so many CRC algorithms use repeated shifts and conditional XOR operations rather than ordinary integer division.
How to use the CRC polynomial calculator
- Choose a standard CRC preset or select custom parameters.
- Enter the message as UTF-8 text or as hexadecimal bytes.
- Select the CRC width: 8, 16 or 32 bits.
- Set the generator polynomial, initial value and final XOR.
- Set input and output reflection according to the CRC specification.
- Click Calculate CRC and inspect the result in the required format.
- Optionally enter an expected checksum to compare it with the calculated value.
Understanding the CRC parameters
- Width: the number of bits in the CRC register and final checksum.
- Polynomial: the generator polynomial, entered in hexadecimal without its implicit leading term.
- Initial value: the starting register value before processing the message.
- RefIn: whether the bits of each input byte are processed in reverse order.
- RefOut: whether the final CRC register is reflected before the final XOR.
- XorOut: the value XORed with the final register to produce the result.
The polynomial alone does not fully define a CRC algorithm. Two implementations can use the same polynomial and still return different checksums because their initial values, reflection settings or final XOR values differ.
CRC polynomial examples
| CRC variant | Polynomial | Typical use |
|---|---|---|
| CRC-8/SMBUS | 0x07 | SMBus and related embedded communication |
| CRC-16/CCITT-FALSE | 0x1021 | Communication protocols and data frames |
| CRC-16/MODBUS | 0x8005 | Modbus RTU communication |
| CRC-32/ISO-HDLC | 0x04C11DB7 | ZIP, PNG, Ethernet and gzip implementations |
| CRC-32C | 0x1EDC6F41 | Storage and communication systems using Castagnoli CRC |
What does a CRC checksum tell you?
A matching CRC can help detect accidental corruption when the sender and receiver use the same CRC model and message bytes. The result depends on the exact bytes processed, including encoding, frame boundaries and any protocol-specific fields.
CRCs are not cryptographic signatures. An attacker who can change a message can usually recompute its CRC, so a CRC should not be used by itself to authenticate data or prevent deliberate tampering.
Frequently asked questions
What is a CRC polynomial calculator?
It calculates a cyclic redundancy check using a generator polynomial and other model parameters. The resulting checksum can be used to help detect accidental changes in data.
Why do two CRC calculators give different results?
They may use different CRC widths, initial values, polynomial representations, input or output reflection, final XOR values, or input bytes. Compare every parameter, not just the polynomial.
What is the difference between CRC-16 and CRC-32?
CRC-16 produces a 16-bit checksum, while CRC-32 produces a 32-bit checksum. They can use different generator polynomials and parameter settings, so their values are not interchangeable.
How do I test whether a CRC implementation is correct?
A common test is to calculate the checksum of the ASCII text
123456789 and compare it with the published check
value for the exact CRC variant. For example, CRC-32/ISO-HDLC
produces 0xCBF43926.
Can I enter raw hexadecimal data?
Yes. Select hexadecimal input and enter complete byte pairs,
optionally separated by spaces, commas, colons, dashes or
underscores. For example, 01 03 00 00 00 0A.
Is a CRC suitable for security or authentication?
No. CRC is intended for error detection, not cryptographic security. For message authentication or tamper detection, use an appropriate cryptographic mechanism such as a message authentication code or digital signature.
Related binary and number tools
Continue with these related Binarios.org tools for binary conversion, character encoding and other number representations.