CRC Cyclic Redundancy Check

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.

CRC-8 CRC-16 CRC-32 CRC-32C Custom CRC Text / Hex / Binary
CRC Parameter Calculator Preset + Custom
Choose a standard preset or select Custom CRC.
Hex example: 31 32 33. Binary values should be full 8-bit bytes.
Enter the normal, non-reflected polynomial representation.
Reflect Input (RefIn)
Reflect Output (RefOut)
Text is encoded as UTF-8. Hex accepts bytes such as 31 32 33. Binary accepts 8-bit bytes such as 00110001 00110010.
CRC Result
CRC Hex
CRC Binary
CRC Decimal
Algorithm
CRC Width
Bytes Processed
Input Format
Check Value
Active CRC Parameters
Polynomial
Init
RefIn / RefOut
XOR-Out

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.

Text:
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.

CRC-8
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.

CRC-16/ARC:
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.

CRC-32/ISO-HDLC

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.

123456789

Hexadecimal Input

Hex mode lets you enter the exact byte values directly.

31 32 33 34 35 36 37 38 39

Binary Input

Binary mode accepts complete 8-bit byte groups.

00110001 00110010 00110011

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.

CRC-32 normal polynomial:
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.

Custom CRC parameters must be exact. A CRC name alone is sometimes insufficient because similar names can refer to different parameter sets. When matching a protocol or specification, use the exact width, polynomial, Init, RefIn, RefOut and XOR-Out values defined by that specification.

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

Important: CRC results are parameter-dependent.

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.

Related BinaryCon Tools

CRC Calculator FAQs

What does CRC stand for?
CRC stands for Cyclic Redundancy Check, an error-detection method based on binary polynomial arithmetic.
What CRC algorithms does this calculator support?
It includes common CRC-8, CRC-16 and CRC-32 presets plus a custom parameter mode.
What is a CRC polynomial?
The polynomial defines the feedback relationship used while processing message bits through the CRC register.
Why can two CRC-16 algorithms give different answers?
CRC width alone does not define an algorithm. Different polynomial, initial value, reflection or XOR-out settings can produce different CRC values.
What is CRC-32/ISO-HDLC?
It is a widely used 32-bit CRC parameter set using polynomial 04C11DB7, initial value FFFFFFFF, reflected input and output, and XOR-out FFFFFFFF.
What is CRC-32C?
CRC-32C, also called the Castagnoli CRC, is a 32-bit CRC using polynomial 1EDC6F41 rather than the polynomial used by standard CRC-32/ISO-HDLC.
What is CRC-16/MODBUS?
CRC-16/MODBUS is a reflected 16-bit CRC parameter set based on polynomial 8005 with an initial register value of FFFF.
What does RefIn mean?
RefIn indicates that input bits are processed in reflected least-significant-bit-first orientation.
What does RefOut mean?
RefOut specifies the output reflection behavior of the CRC register before the final XOR stage.
What is XOR-Out?
XOR-Out is the value XORed with the CRC register after message processing and any required output reflection.
Why is 123456789 commonly used for CRC testing?
It is a standard reference message with published check values for many CRC parameter sets.
Can I calculate a CRC from hexadecimal bytes?
Yes. Select Hexadecimal Bytes and enter values such as 31 32 33 34.
Can I calculate a CRC from binary bytes?
Yes. Binary input accepts groups of eight binary digits representing individual bytes.
Is CRC the same as a checksum?
CRC is a type of error-detection code based on polynomial arithmetic, while the word checksum can also refer to simpler addition or XOR-based methods.
Is CRC cryptographically secure?
No. CRC is designed to detect accidental transmission or storage errors, not intentional malicious modification.
Scroll to Top