EN
My tools

CRC-16 Calculator (Modbus, CCITT, XMODEM, Kermit …)

Calculate CRC-16 with presets from the CRC catalogue — ARC, MODBUS, CCITT-FALSE, XMODEM, KERMIT, X-25, USB, DNP and more — or custom parameters, with both byte orders.

CRC-16/MODBUS
0x4B37
Decimal
19,255
Bytes, high byte first
4B 37
Bytes, low byte first
37 4B
the order Modbus RTU sends
Data length
9 bytes

Parameters follow Greg Cook’s catalogue of parametrised CRC algorithms (reveng). Check a variant with the text 123456789: the result must equal its catalogue check value.

Every preset for this data
VariantCRCDecimalPolyInitReflectedXorOut
CRC-16/ARC0xBB3D47,9330x80050x0000yes0x0000
CRC-16/MODBUS0x4B3719,2550x80050xFFFFyes0x0000
CRC-16/CCITT-FALSE0x29B110,6730x10210xFFFFno0x0000
CRC-16/XMODEM0x31C312,7390x10210x0000no0x0000
CRC-16/KERMIT0x21898,5850x10210x0000yes0x0000
CRC-16/X-250x906E36,9740x10210xFFFFyes0xFFFF
CRC-16/USB0xB4C846,2800x80050xFFFFyes0xFFFF
CRC-16/DNP0xEA8260,0340x3D650x0000yes0xFFFF
CRC-16/GENIBUS0xD64E54,8620x10210xFFFFno0xFFFF
CRC-16/MAXIM-DOW0x44C217,6020x80050x0000yes0xFFFF
CRC-16/UMTS0xFEE865,2560x80050x0000no0x0000
CRC-16/T10-DIF0xD0DB53,4670x8BB70x0000no0x0000
CRC-16/SPI-FUJITSU0xE5CC58,8280x10210x1D0Fno0x0000
CRC-16/EN-137570xC2B749,8470x3D650x0000no0xFFFF
My tools →
Advertisement

A CRC-16 is a 16-bit checksum that catches transmission errors in serial protocols, radio links, file formats and industrial buses. "CRC-16" is a family: Modbus, XMODEM, Kermit, X.25 and USB all use different polynomials, start values, bit orders and final XORs, so the same bytes give different results. This calculator has the common variants from the CRC catalogue, a custom mode, and shows the result in both byte orders.

How to use this tool

  1. Enter the data as text or hex bytes (01 03 00 00 …).
  2. Pick the variant your protocol uses, or enter custom parameters.
  3. Read the CRC in hex and decimal, and in the byte order your protocol sends.
  4. Compare with the table of all variants if you are unsure which one a device uses.

Formula

CRC = (remainder of M(x)·x¹⁶ ÷ P(x), starting from Init, with optional bit reflection) ⊕ XorOut

P(x) is the generator polynomial (0x8005 or 0x1021 for most variants). "Reflected" variants process each byte least-significant bit first and mirror the 16-bit result. Every variant is defined by its check value — the CRC of the nine ASCII characters 123456789.

Example

The text 123456789 gives 0x4B37 with CRC-16/MODBUS, 0x29B1 with CCITT-FALSE and 0x31C3 with XMODEM — the catalogue check values. The Modbus RTU request 01 03 00 00 00 0A has the CRC 0xCDC5, which goes on the wire low byte first: C5 CD.

Frequently asked questions

Which CRC-16 does Modbus use?

CRC-16/MODBUS: polynomial 0x8005 (reflected 0xA001), initial value 0xFFFF, reflected, no final XOR. Modbus RTU transmits the low byte first.

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

All three use polynomial 0x1021. XMODEM starts at 0, CCITT-FALSE starts at 0xFFFF, and KERMIT starts at 0 and reflects the bits. Names are used loosely by vendors, so check against the 123456789 values.

Can I calculate CRC-32 here?

Use the CRC-32 checksum tool for CRC-32 and CRC-32C, or the checksum calculator to see many checksums of the same data at once.

Sources

Last updated:

Cite or embed this tool
APA

kakaoCalc. (2026, November 8). CRC-16 Calculator (Modbus, CCITT, XMODEM, Kermit …). https://kakao.mobile/tools/crc16-checksum-tool/

MLA

“CRC-16 Calculator (Modbus, CCITT, XMODEM, Kermit …).” kakaoCalc, 8 Nov. 2026, kakao.mobile/tools/crc16-checksum-tool/.

Paste this code into your page. The widget runs in your visitors' browsers, shows no ads and keeps a link back to this page. Embedding terms

Advertisement