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.
| Name | Width | Poly | Init | RefIn/Out | XorOut | Check |
|---|---|---|---|---|---|---|
| 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
- Load the register with the initial value.
- 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.
- 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.