BYTETOOLS

CRC-16 Calculator

Calculate CRC-16 checksums in 12 variants including MODBUS, CCITT-FALSE, XMODEM and KERMIT, from text, hex bytes or a dropped file.

Or drop a file to checksum itRead locally, never uploaded (max 32 MB)

Parameters: poly 0x1021 · init 0xFFFF · refin false · refout false · xorout 0x0000 · catalogue check value 0x29B1 for “123456789” (self-test passes)

0x29B1
CRC-16 (hex)
10673
CRC-16 (decimal)

CRC-16/IBM-3740 (CCITT-FALSE)

Hex
0x29B1
Decimal
10673
Byte-swapped (little-endian on the wire)
0xB129
Two bytes
29 B1
Input length
9 bytes

Every variant, same input

CRC-16/IBM-3740 (CCITT-FALSE)0x29B1
CRC-16/XMODEM0x31C3
CRC-16/MODBUS0x4B37
CRC-16/KERMIT0x2189
CRC-16/ARC (IBM / LHA)0xBB3D
CRC-16/USB0xB4C8
CRC-16/MAXIM-DOW0x44C2
CRC-16/MCRF4XX0x6F91
CRC-16/IBM-SDLC (X-25)0x906E
CRC-16/GENIBUS0xD64E
CRC-16/CDMA20000x4C06
CRC-16/DNP0xEA82

What is the CRC-16 Calculator?

The ByteTools CRC-16 Calculator computes a 16-bit cyclic redundancy check over text, hex bytes or a file.

  • 12 catalogue variants: MODBUS, CCITT-FALSE, XMODEM, KERMIT, ARC, USB and more
  • Text, hex, Base64 or a dropped file as input
  • Hex, decimal, byte-swapped and two-byte output forms
  • All variants computed side by side over the same input
  • Built-in self-test against each variant's published check value
  • 100% client-side — your data is never uploaded

How to use the CRC-16 Calculator

  1. 1

    Pick the CRC-16 variant your protocol or device uses, then choose whether your input is text, hex or Base64.

  2. 2

    Type or paste the data, or drop a file to checksum its bytes instead.

  3. 3

    Read the result in hex and decimal, plus the byte-swapped form for protocols that send the low byte first.

  4. 4

    Compare the all-variants table if you are unsure which one your device uses, or tick the compare box to check two copies of the same data.

About the CRC-16 Calculator

The ByteTools CRC-16 Calculator computes a 16-bit cyclic redundancy check over text, hex bytes or a file. Twelve named variants are built in, each fully specified by its polynomial, initial value, input and output reflection settings, and final XOR — the same parameters the CRC RevEng catalogue uses, so results match embedded toolchains exactly.

Getting the variant right matters more than people expect. MODBUS and USB share the 0x8005 polynomial but differ in their initial value and final XOR, and CCITT-FALSE, KERMIT and X-25 all use 0x1021 with different reflection settings. To make this obvious the tool computes every variant over your input at once, so you can find the one that matches the value your device produced.

Each variant is checked against its published check value for the string 123456789 on every render, and that self-test result is shown above the output so you can see the implementation is behaving. Everything runs 100% locally in your browser — the text you type and any file you drop are never uploaded, logged or stored anywhere.

Frequently asked questions

Which CRC-16 variant should I use?

Use whichever one your protocol specifies — the variants are not interchangeable. Modbus RTU uses CRC-16/MODBUS, XMODEM file transfer uses CRC-16/XMODEM, and many datasheets that say CRC-CCITT actually mean CCITT-FALSE. If you have a known-good value from your device, the all-variants table will identify the match.

Why do two calculators give different CRC-16 results?

Because they are almost certainly using different parameters. A CRC-16 is defined by five values: polynomial, initial value, input reflection, output reflection and final XOR. Change any one and the output changes completely, even though everything is still called CRC-16. The parameters used here are printed above the result.

What does the check value 0x29B1 mean?

It is the CRC of the ASCII string 123456789, published for each variant in the CRC RevEng catalogue as a standard sanity test. This tool recomputes it live and reports whether the self-test passes, which confirms the implementation matches the specification.

Why is my Modbus CRC byte order reversed?

Modbus RTU transmits the CRC low byte first, while calculators normally print the value most significant byte first. That is why the byte-swapped form is shown alongside the plain result — it is the same number, written in the order that goes on the wire.

Is CRC-16 good enough to detect tampering?

No. CRC-16 is designed to catch accidental transmission errors such as flipped bits and noise, and it does that well. It offers no protection against deliberate modification, because anyone can adjust the data to produce any CRC they like. For that you need a cryptographic hash or a MAC.

Related tools