CRC-16 calculator — ARC, MODBUS, CCITT-FALSE, XMODEM, KERMIT and X-25

Pick the CRC-16 variant your device or protocol uses, paste the message bytes, and get the 4-digit hex checksum plus its decimal value.

Live demo · real result from this tool
CRC-16 (hex)fcdf
Decimal
64735
Input size
43 bytes

A checksum detects accidental changes. It is not a security hash — anyone can forge data with a chosen checksum.

Processed on your device — nothing is uploaded.

How to use the CRC-16 calculator

  1. Paste your message into Text. For protocol frames, set Input is to Hex bytes and paste the bytes, for example 01 03 00 00 00 01; spaces are allowed.
  2. Choose the Variant from the list.
  3. Read the CRC-16 (hex) value, the Decimal value and the Input size. Check whether your protocol sends the high or the low byte first.

What it does and when to use it

A 16-bit CRC is the standard error check on serial links, industrial buses, radio packets and older file-transfer protocols, where 32 bits would waste space. The hard part is rarely the maths; it is knowing which of many CRC-16 definitions a device uses. This tool covers six widely used ones and lists their parameters, so you can find the one that reproduces a captured frame.

For checksums on files and archives, use the CRC-32 calculator. The Adler-32 calculator covers zlib streams, and the simple string hash table shows several other 32-bit hashes at once.

How it works

The code in this page implements the CRC bit by bit from four parameters. Reflected variants process each byte least-significant bit first; the others work most-significant bit first. After the last byte, the register is XORed with the final value.

Variant (as listed) Poly Init Reflected Final XOR Check value
CRC-16/ARC (IBM, LHA) 0x8005 0x0000 yes 0x0000 bb3d
CRC-16/MODBUS 0x8005 0xFFFF yes 0x0000 4b37
CRC-16/CCITT-FALSE (IBM-3740) 0x1021 0xFFFF no 0x0000 29b1
CRC-16/XMODEM 0x1021 0x0000 no 0x0000 31c3
CRC-16/KERMIT 0x1021 0x0000 yes 0x0000 2189
CRC-16/X-25 (IBM-SDLC) 0x1021 0xFFFF yes 0xFFFF 906e

The check value is the CRC of the ASCII text 123456789. Each one above was produced by this tool and matches the CRC catalogue.

Worked examples

Default variant. 123456789 with CRC-16/ARC gives CRC-16 (hex): bb3d, decimal 47933.

Same text, CCITT-FALSE. Switching the variant to CRC-16/CCITT-FALSE gives 29b1. Same data, different answer, which is why the variant matters.

A Modbus request. The frame “read one holding register at address 0 from slave 1” is the six bytes 01 03 00 00 00 01. With Hex bytes and CRC-16/MODBUS the tool returns 0a84. Modbus sends the low byte first, so the complete frame on the wire is 01 03 00 00 00 01 84 0A.

Limits and tips

  • Only these six variants are built in. If none matches, your device may use another one from the catalogue, such as CRC-16/DNP or CRC-16/USB.
  • KERMIT’s value is shown as a number. Some documents print it byte-swapped, as 8921.
  • Text input is UTF-8. For binary frames always use Hex bytes.

Frequently asked questions

Which variant does Modbus RTU use?
CRC-16/MODBUS, polynomial 0x8005 reflected, initial value 0xFFFF. The checksum is appended low byte first, so a result of 0a84 is sent as the bytes 84 0A.
What do people mean by "CRC-16 CCITT"?
It is ambiguous. It can mean CRC-16/CCITT-FALSE (initial value FFFF, not reflected), CRC-16/KERMIT (reflected, initial value 0) or CRC-16/XMODEM (initial value 0). Calculate "123456789" in each and compare with the check value in your device manual.
Can a CRC-16 detect every error?
It detects all single-bit errors and all error bursts up to 16 bits long. Larger random corruption slips through about once in 65,536 cases. It cannot detect deliberate changes, because anyone can recompute it.
Why are all my results wrong by the same pair of bytes?
You may be including the received CRC in the input. Hash only the message bytes, or, for reflected CRCs without a final XOR, include the CRC and check that the result is 0000.

Sources

  1. Catalogue of parametrised CRC algorithms with 16 bits — Greg Cook, CRC RevEng, accessed 2026-10-07

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close