CRC Calculator

Compute CRC-8, CRC-16 and CRC-32 checksums of text or hex data with every common standard β€” or define your own polynomial.

CRC (hex)β€”
Decimalβ€”
Bytes processedβ€”

All common CRCs of this data

Powered by WattWise Β· Open full calculator β†—

Embed this calculator on your website β†’

This free online CRC calculator computes CRC-8, CRC-16 and CRC-32 checksums of any text or hex byte string. It includes the common standards β€” CRC-32 (Ethernet, ZIP, PNG), CRC-32C, CRC-16/MODBUS, CRC-16/CCITT-FALSE, XMODEM, KERMIT, USB and CRC-8/MAXIM for 1-Wire β€” and shows them all at once, so you can identify which CRC a device or protocol uses. Choose Custom to enter any width, polynomial, initial value, reflection and final XOR.

Common CRC parameters

Check values are the CRC of the ASCII string "123456789", computed by this calculator.

NameWidthPolyInitRefIn/OutXorOutCheck
CRC-8
CRC-8/SMBUS
8 0x07 0x00 false/false 0x00 0xF4
CRC-8/MAXIM
Dallas 1-Wire, DOW-CRC
8 0x31 0x00 true/true 0x00 0xA1
CRC-16/CCITT-FALSE
CRC-16/IBM-3740
16 0x1021 0xFFFF false/false 0x0000 0x29B1
CRC-16/XMODEM
CRC-16/ACORN, ZMODEM
16 0x1021 0x0000 false/false 0x0000 0x31C3
CRC-16/KERMIT
CRC-16/CCITT-TRUE
16 0x1021 0x0000 true/true 0x0000 0x2189
CRC-16/MODBUS
Modbus RTU
16 0x8005 0xFFFF true/true 0x0000 0x4B37
CRC-16/ARC
CRC-16/IBM, CRC-16/LHA
16 0x8005 0x0000 true/true 0x0000 0xBB3D
CRC-16/USB
USB data packets
16 0x8005 0xFFFF true/true 0xFFFF 0xB4C8
CRC-32
CRC-32/ISO-HDLC, Ethernet, ZIP, PNG
32 0x04C11DB7 0xFFFFFFFF true/true 0xFFFFFFFF 0xCBF43926
CRC-32C
CRC-32/ISCSI, Castagnoli
32 0x1EDC6F41 0xFFFFFFFF true/true 0xFFFFFFFF 0xE3069283
CRC-32/MPEG-2
MPEG transport streams
32 0x04C11DB7 0xFFFFFFFF false/false 0x00000000 0x0376E6E7
CRC-32/BZIP2
CRC-32/AAL5
32 0x04C11DB7 0xFFFFFFFF false/false 0xFFFFFFFF 0xFC891918

How a CRC is calculated

  1. Load the register with the initial value.
  2. For each bit of the data (each byte reflected first if RefIn is true): shift the register left by one; if the bit shifted out XOR the data bit is 1, XOR the register with the polynomial.
  3. After the last bit, reflect the register if RefOut is true, then XOR it with XorOut.

For example, the CRC-32 of the text "Hello" is 0xF7D18982. Hardware implementations process several bits per clock by unrolling this loop into XOR trees.

Converting the result between hex, binary and decimal? Use the number base converter, which also gives Verilog and VHDL literals.

Frequently asked questions

What is a CRC checksum?

A cyclic redundancy check (CRC) is a short check value computed from a block of data by polynomial division over bits. The sender appends it and the receiver recomputes it: if the values differ, the data was corrupted. CRCs detect all single-bit errors and all burst errors shorter than the CRC width, which is why they are used in Ethernet, USB, Modbus, ZIP files, PNG images and storage.

What is the CRC-32 of "123456789"?

"123456789" is the standard check string used to identify CRC variants. Its CRC-32 is 0xCBF43926, its CRC-16/MODBUS is 0x4B37 and its CRC-16/CCITT-FALSE is 0x29B1. If your implementation gives the same check value, its parameters match.

What is the difference between CRC-16 MODBUS and CRC-16 CCITT?

They use different polynomials and settings. CRC-16/MODBUS uses polynomial 0x8005 (reflected), starts at 0xFFFF and processes bits LSB-first; Modbus RTU sends the low byte first. CRC-16/CCITT-FALSE uses 0x1021, starts at 0xFFFF and processes bits MSB-first. XMODEM and KERMIT are other 0x1021 variants. "CRC-16" alone is ambiguous, so always check the full parameter set.

What do refin, refout and xorout mean?

They are the parameters of the standard CRC model. Refin reflects each input byte (processes it LSB-first), refout reflects the final register, init is the starting register value, and xorout is XORed with the result. Two CRCs with the same polynomial but different settings give completely different values.

How do I implement a CRC in Verilog or VHDL?

A serial CRC is a linear feedback shift register: shift in one data bit per clock and XOR the polynomial taps when the feedback bit is 1. For one byte or word per clock, unroll that loop into XOR equations β€” synthesis tools handle a for-loop in a combinational always block well. Verify your RTL against this calculator using the "123456789" check string.

Standard formulas, tested results

This calculator uses standard engineering formulas, shown in the method section above, and is checked against hand-worked examples. How the calculators are made.

Related calculators