CRC Calculator
Calculate CRC-8, CRC-16, CRC-32 and custom cyclic redundancy check values from text, hexadecimal or binary input. Configure polynomial, initial value, input/output reflection and XOR-out parameters.
What Is a CRC?
CRC stands for Cyclic Redundancy Check. It is an error-detection technique that treats a data sequence as coefficients of a polynomial over GF(2) and calculates a remainder according to a selected CRC polynomial and parameter set.
CRC algorithms are widely used in storage formats, communication protocols, file formats, embedded systems, networking and hardware interfaces.
Two CRC algorithms with the same width can produce completely different results if they use different polynomial, initial value, reflection or XOR-out settings. This is why the algorithm parameters matter as much as the CRC width.
CRC Parameters Explained
Width
The width determines the size of the CRC register, such as 8, 16 or 32 bits.
Polynomial
The polynomial defines the feedback relationship used during CRC processing. Different CRC families use different polynomials.
Initial Value
The CRC register may begin at zero, all ones or another predefined value depending on the algorithm.
XOR-Out
After the message has been processed, the register may be XORed with a final constant.
RefIn
RefIn controls whether input bits are processed in reflected least-significant-bit-first form.
RefOut
RefOut specifies the orientation of the final CRC register before XOR-out is applied.
CRC Presets Included in This Calculator
| Algorithm | Width | Polynomial | Init | RefIn | RefOut | XOR-Out | 123456789 |
|---|---|---|---|---|---|---|---|
| CRC-8 | 8 | 07 | 00 | False | False | 00 | F4 |
| CRC-8/MAXIM-DOW | 8 | 31 | 00 | True | True | 00 | A1 |
| CRC-8/SAE-J1850 | 8 | 1D | FF | False | False | FF | 4B |
| CRC-16/ARC | 16 | 8005 | 0000 | True | True | 0000 | BB3D |
| CRC-16/MODBUS | 16 | 8005 | FFFF | True | True | 0000 | 4B37 |
| CRC-16/CCITT-FALSE | 16 | 1021 | FFFF | False | False | 0000 | 29B1 |
| CRC-16/XMODEM | 16 | 1021 | 0000 | False | False | 0000 | 31C3 |
| CRC-32/ISO-HDLC | 32 | 04C11DB7 | FFFFFFFF | True | True | FFFFFFFF | CBF43926 |
| CRC-32/MPEG-2 | 32 | 04C11DB7 | FFFFFFFF | False | False | 00000000 | 0376E6E7 |
| CRC-32C/CASTAGNOLI | 32 | 1EDC6F41 | FFFFFFFF | True | True | FFFFFFFF | E3069283 |
Why Is 123456789 Used to Test CRC Algorithms?
The ASCII string 123456789 is commonly used as a standard reference message when documenting CRC parameter sets. Its known CRC result is often called the algorithm’s check value.
123456789
CRC-32/ISO-HDLC:
CBF43926
CRC-16/ARC:
BB3D
CRC-8:
F4
If an implementation produces the expected check value for the exact parameter set, it is a useful indication that the CRC configuration and calculation procedure are consistent.
CRC-8
CRC-8 algorithms use an 8-bit register and produce a one-byte CRC. However, CRC-8 is a family rather than a single universal algorithm.
Poly = 07
Init = 00
RefIn = False
RefOut = False
XOR-Out = 00
“123456789”
CRC = F4
CRC-16
CRC-16 algorithms produce a 16-bit result. Different CRC-16 variants may use the same polynomial but differ in initial values, reflection settings or other parameters.
Poly = 8005
Init = 0000
RefIn = True
RefOut = True
XOR-Out = 0000
Check = BB3D
CRC-32
CRC-32 algorithms generate a 32-bit check value. The commonly encountered CRC-32/ISO-HDLC preset uses polynomial 04C11DB7 with reflected input and output and all-one initial and final XOR values.
Poly = 04C11DB7
Init = FFFFFFFF
RefIn = True
RefOut = True
XOR-Out = FFFFFFFF
123456789
= CBF43926
CRC-32 vs CRC-32C
| Parameter | CRC-32/ISO-HDLC | CRC-32C/CASTAGNOLI |
|---|---|---|
| Width | 32 | 32 |
| Polynomial | 04C11DB7 | 1EDC6F41 |
| Init | FFFFFFFF | FFFFFFFF |
| RefIn | True | True |
| RefOut | True | True |
| XOR-Out | FFFFFFFF | FFFFFFFF |
| Check | CBF43926 | E3069283 |
Text, Hex and Binary CRC Input
Text Input
Text mode converts the entered string into UTF-8 bytes before calculating the CRC.
Hexadecimal Input
Hex mode lets you enter the exact byte values directly.
Binary Input
Binary mode accepts complete 8-bit byte groups.
Same Bytes, Same CRC
Different input representations produce the same CRC when they represent exactly the same byte sequence.
What Does RefIn Mean?
RefIn indicates whether each byte is processed least-significant-bit first rather than most-significant-bit first. Reflected CRC algorithms commonly use a bit-reflected form of the polynomial internally.
Changing RefIn changes the calculation procedure and therefore usually changes the resulting CRC.
What Does RefOut Mean?
RefOut controls the orientation of the register before the final XOR stage. It should not be treated as an arbitrary display option; it is part of the CRC algorithm definition.
The calculator handles RefOut relative to RefIn according to the selected parameter model.
Normal vs Reflected CRC Polynomial
CRC specifications may show either a normal polynomial representation or its reflected counterpart. This calculator expects the normal polynomial value in the Polynomial field.
04C11DB7
Its reflected implementation form is different.
Enter:
04C11DB7
Custom CRC Calculator
Select Custom CRC when you need to enter a parameter combination that is not included in the preset list.
Choose the register width and specify the polynomial, initial register value, reflection settings and XOR-out value. The values must fit inside the selected width.
CRC vs XOR Checksum
| Feature | CRC | XOR Checksum |
|---|---|---|
| Core method | Polynomial remainder process | Repeated XOR |
| Polynomial | Required | Not required |
| Order sensitive | Yes | Simple XOR checksum is not |
| Parameters | Width, poly, init, reflection, XOR-out | Usually checksum width |
| Error detection | Designed around polynomial properties | Basic |
CRC vs Modulo-2 Division
Modulo-2 polynomial division is the mathematical foundation behind CRC calculations, but a complete CRC algorithm normally includes additional rules such as register initialization, input reflection, output reflection and final XOR processing.
That is why two calculators can serve different purposes: a modulo-2 division tool exposes the raw GF(2) polynomial division process, while this CRC calculator applies complete named CRC parameter sets.
Important CRC Calculation Notes
Do not compare two CRC values unless the algorithms use the same width, polynomial, initial value, RefIn, RefOut and XOR-Out settings.
Text input is encoded as UTF-8, so non-ASCII characters may occupy multiple bytes.
Hex input represents raw bytes and therefore gives the most direct control over exact input data.
The Polynomial field expects the normal polynomial representation.
CRC is designed for error detection. It is not a cryptographic hash and should not be used as proof that data has not been deliberately modified.