CRC-16 Hash Generator

Work out the 16-bit CRC of any text under six of the catalogued parameter sets.

Text
CRC-16 checksum
Runs locally in your browser

About the CRC-16 Hash Generator

A CRC is an error detecting code rather than a cryptographic digest. It treats the message as a long polynomial, divides it by a fixed generator polynomial and keeps the remainder, which for a 16-bit CRC is four hexadecimal characters. Calling something simply "CRC-16" is ambiguous, because more than twenty published parameter sets go by that label. They differ in the generator polynomial, the value the register starts at, whether the input and output bits are reflected, and whether the result is inverted at the end.

Six of the widely deployed models are offered here. ARC uses polynomial 0x8005 with a zero start and reflected bits, and is the value most zip and serial tooling means by CRC-16. MODBUS keeps that polynomial but starts the register at 0xFFFF, USB goes further and inverts the answer, while CCITT-FALSE, XMODEM and KERMIT all share polynomial 0x1021 and differ only in their start value and reflection. Choose the wrong one and the number looks entirely reasonable yet never agrees with the device at the other end of the cable.

The sample loaded on the left is the standard check string 123456789, so the result can be compared against the published check value for each model: BB3D for ARC, 4B37 for MODBUS and 29B1 for CCITT-FALSE. Text is read as UTF-8 first, so accented letters and emoji contribute their encoded bytes. Sixteen bits catch every single bit flip and every burst shorter than the register, which is why the scheme survives on embedded links, but they repeat after about 65 thousand distinct messages. When the worry is deliberate tampering rather than line noise, reach for SHA-256 instead, and for a wider error check see the CRC-32 Hash Generator.

How to use

  1. Paste the frame or the text you want a checksum for into the left pane.
  2. Pick the Variant that matches the device or file format you are talking to.
  3. Switch the output to Unsigned decimal if the receiving system expects a number rather than hex.
  4. Copy the four character result, or download it next to the payload it belongs to.

Common questions

Which CRC-16 variant should I choose?
Match whatever the specification on the other side names. Serial industrial gear usually means MODBUS, zip archives and older BASIC tooling mean ARC, and file transfer protocols name XMODEM or KERMIT directly.
Why does another calculator give me a different number?
Almost always because it defaults to a different parameter set. Compare both against the check value for the string 123456789 and you will see which model each one is using.
Can a CRC-16 detect someone editing my data?
No. Anyone can adjust a message so its CRC stays the same, and the arithmetic to do so is taught in undergraduate courses. It only guards against accidental corruption.
Does the checksum cover the line endings?
Yes. Every byte fed in changes the register, so a file saved with CRLF gives a different value from the same file saved with LF.