Skip to content
AZ Tools

CRC Calculator: CRC-8, CRC-16, CRC-64 & Modbus

Compute any CRC of 3 to 64 bits — Modbus, CCITT, XMODEM, CRC-64/XZ and 108 more presets, or your own parameters — and find which CRC gives a value.

Input

9 bytes of input.

CRC (hex)
Decimal
Bytes, big-endian
Bytes, little-endian (e.g. Modbus wire order)
Binary

Check value (CRC of "123456789") for these parameters: 0x4B37

All 112 catalogued CRCs of this input

CRCValue
0x4
0x6
CRC-4/ITU
0x7
0xB
CRC-5/EPC
0x00
CRC-5/ITU
0x07
0x19
0x0D
0x3B
0x26
CRC-6/ITU
0x06
0x13
CRC-7
0x75
0x53
0x61
0xDF
0x26
0xDA
0x15
0xBC
0x37
0x94
0xB4
CRC-8/ITU
0xA1
0x7E
0xEA
CRC-8/MAXIM, DOW-CRC
0xA1
0x99
0xF7
0x3E
0xD0
0x4B
CRC-8
0xF4
CRC-8/AES, CRC-8/EBU
0x97
0x25
CRC-10, CRC-10/I-610
0x199
0x233
0x12A
CRC-11
0x5A3
0x061
0xD4D
X-CRC-12
0xF5B
0xB34
CRC-12/3GPP
0xDAF
0x04FA
0x082D
0x30AE
CRC-15
0x059E
0x2566
ARC, CRC-16, CRC-16/LHA, CRC-IBM
0xBB3D
0x4C06
0xAEE7
0x9ECF
R-CRC-16
0x007E
X-CRC-16
0x007F
0xEA82
0xC2B7
CRC-16/DARC, CRC-16/EPC, CRC-16/EPC-C1G2, CRC-16/I-CODE
0xD64E
0xCE3C
CRC-16/CCITT-FALSE, CRC-16/AUTOSAR
0x29B1
CRC-16/X-25, CRC-16/ISO-HDLC, CRC-16/ISO-IEC-14443-3-B, CRC-B
0x906E
CRC-A
0xBF05
CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-16/V-41-LSB
0x2189
0xBDF4
0x772B
CRC-16/MAXIM
0x44C2
0x6F91
MODBUS
0x4B37
0xA066
0x5D38
0x20FE
CRC-16/IEC-61158-2
0xA819
0x63D0
CRC-16/AUG-CCITT
0xE5CC
0xD0DB
0x0FB3
0x26B1
CRC-16/BUYPASS, CRC-16/VERIFONE
0xFEE8
0xB4C8
XMODEM, ZMODEM, CRC-16/ACORN, CRC-16/LTE, CRC-16/V-41-MSB
0x31C3
0x04F03
0x0ED841
0xC25A56
0x7979BD
0x1F23B8
0xB4F3E6
0xCDE703
0x23EF52
CRC-24
0x21CF02
0x200FA5
0x04C34ABF
0x0CE9E46C
CRC-32Q
0x3010BF7F
0x1697D06A
CRC-32D
0x87315576
CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32
0xFC891918
0x6EC2EDC4
CKSUM, CRC-32/POSIX
0x765E7680
CRC-32C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN
0xE3069283
CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP
0xCBF43926
JAMCRC
0x340BC6D9
0xD2C22F51
0x0376E6E7
XFER
0xBD0BE338
0xD4164FC646
CRC-64
0x6C40DF5F0B497347
0xB90956C775A41001
0x75D4B74F024ECEEA
0xAE8B14860A799888
0xE9C6D914C4B8D9CA
0x62EC59E3F1A4F00A
CRC-64/GO-ECMA
0x995DC9BBDF1939FA

Checked against crccheck, a bit-by-bit reference model and the catalogue's check values. Runs entirely in your browser.

How to use

  1. Enter the data as text or hex bytes, or choose a file.
  2. Pick a CRC from the list (grouped by width) or type the width, polynomial, init, final XOR and reflection settings yourself; the check value confirms custom parameters against a data sheet.
  3. To identify an unknown CRC, type the value you observed into the search box under the table: it keeps only the catalogued CRCs that produce it.

About this tool

Show

A CRC is fully described by six numbers — width, polynomial, initial value, whether input bytes are reflected, whether the result is reflected, and a final XOR — and this calculator takes any combination of them for widths from 1 to 64 bits. It also carries all 112 CRCs of 64 bits or fewer in Greg Cook's reveng catalogue under their catalogue names and common aliases, so CRC-16/MODBUS, CRC-16/CCITT-FALSE (IBM-3740), XMODEM, KERMIT, X-25, CRC-8/MAXIM, CRC-32/MPEG-2, CRC-32C and CRC-64/XZ are one choice away. Input can be UTF-8 text, hex bytes or a file up to 64 MB. The result is shown in hex, decimal and binary, and for whole-byte widths also as the bytes in both orders: Modbus RTU, for instance, transmits its CRC low byte first, so 0x4B37 goes on the wire as 37 4B. Every line also shows the CRC of the ASCII string 123456789, which is the 'check' value data sheets and the catalogue quote, so a custom setting can be confirmed against documentation before it is trusted. The table below runs every catalogued CRC over the same input, and typing a value you observed filters it to the presets that produce it, byte-swapped matches included. One sample is rarely enough to identify an unknown CRC — with 16-bit CRCs a random match turns up in about one case in 65,536 per preset — so confirm with a second message. Messages are whole bytes; CRCs over a bit count that is not a multiple of 8, and the 82-bit CRC-82/DARC, are outside its scope. A CRC detects accidental errors and is not a security measure: anyone can recompute it after changing data.

Frequently asked questions

Why does my Modbus CRC come out with the bytes reversed?

CRC-16/MODBUS is 0x4B37 for the text 123456789, but Modbus RTU sends the low byte first, so the frame ends 37 4B. The little-endian row shows the bytes in transmission order; if you read the two bytes from a frame, search for them in that order and the tool marks it as a byte-swapped match.

What is the difference between CCITT-FALSE, KERMIT, XMODEM and X-25?

All four use the polynomial 0x1021, but differ in initial value, reflection and final XOR: XMODEM starts at 0 and reflects nothing (check 0x31C3), CCITT-FALSE (IBM-3740) starts at 0xFFFF (0x29B1), KERMIT reflects and starts at 0 (0x2189), and X-25 (IBM-SDLC) reflects, starts at 0xFFFF and inverts the result (0x906E). The name 'CRC-CCITT' is used for several of them, which is why the check value matters.

What is the check value?

The CRC of the nine ASCII bytes 123456789 under the chosen parameters. The reveng catalogue and most data sheets quote it, so if your custom parameters give the documented check value, they almost certainly match the implementation you are trying to reproduce.

How reliable is identifying a CRC from one value?

Not very. The table holds 112 CRCs, and for a 16-bit value any preset has roughly a 1 in 65,536 chance of matching by accident — small, but real across many narrow CRCs, and for 8-bit CRCs about one in 256. Test a second, different message: a CRC that matches both is almost certainly the one in use.

What do refin and refout mean?

Reflect input processes each byte least-significant bit first, as serial hardware such as UARTs does; reflect output reverses the bits of the final register. Most CRCs set both the same way, but a few, such as CRC-12/UMTS, reflect only the output.

Related tools