FormatterHQ

CRC-16 Calculator

Calculate 16-bit CRCs in seven common variants — ARC, MODBUS, CCITT-FALSE, XMODEM, KERMIT, X-25 and USB — for text or files.

Loading tool…
Ready.

How to use the CRC-16 Hash Generator

  1. Type or paste text into the input box, or switch the source to File and choose a file — it is hashed locally, never uploaded.
  2. Set Variant; the main result at the top updates as soon as you change it.
  3. Read the main hash at the top — the table below shows the same input under every other common algorithm. Tick Uppercase hex if you need capitals.
  4. To verify a value, paste it into Compare with an expected hash — the tool reports a match, or which algorithm it matches instead. Copy any row with its Copy button.

CRC-16 calculator with seven variants

A 16-bit CRC is the classic error check for serial links, industrial fieldbuses and small file-transfer protocols. The difficulty is that “CRC-16” is not one algorithm: dozens of variants differ in polynomial, initial value, bit reflection and final XOR. This CRC-16 calculator supports the seven variants you are most likely to meet and shows the result as 4 hex digits.

Variants and their check values

Each variant is identified by its “check” value — the CRC of the ASCII string 123456789. Type that string into the tool to confirm you have chosen the right one:

VariantCheck valueTypical use
CRC-16/ARC (IBM)bb3dARC archives, LHA, many legacy protocols
CRC-16/MODBUS4b37Modbus RTU industrial devices
CRC-16/CCITT-FALSE29b1Many embedded and telecom uses (also called CRC-16/IBM-3740)
CRC-16/XMODEM31c3XMODEM/YMODEM file transfer, some Bluetooth uses
CRC-16/KERMIT2189Kermit protocol (true CCITT, reflected)
CRC-16/X-25906eHDLC, X.25, PPP
CRC-16/USBb4c8USB data packets

What the parameters mean

  • Polynomial: 0x8005 (ARC, MODBUS, USB) or 0x1021 (the CCITT family: CCITT-FALSE, XMODEM, KERMIT, X-25).
  • Initial value: 0x0000 or 0xFFFF. Starting at 0xFFFF makes leading zero bytes detectable.
  • Reflection: whether bits are processed least-significant first, as UARTs transmit them.
  • Final XOR: 0xFFFF for X-25 and USB, otherwise none.

Byte order on the wire

The tool shows the CRC as a 16-bit number. Protocols decide how to send it: Modbus RTU, for example, transmits the low byte first, so a CRC of 4b37 goes on the wire as 37 4B. If your device rejects frames, swapping the two bytes is the first thing to try.

Limits

A 16-bit CRC detects all single-bit errors and all burst errors up to 16 bits, but with only 65,536 possible values it is suitable for short frames, not large files. For files use CRC-32 or a cryptographic hash. Like every CRC, it gives no protection against deliberate modification — use HMAC or a signature for that.

Text is processed as UTF-8 bytes, and uploaded files byte for byte. For binary frames written in hex, convert them to a file or use a tool that accepts raw bytes. The calculation runs in your browser.

Common reasons a CRC-16 does not match

  • Hex typed as text. Typing 010300000001 computes the CRC of twelve ASCII characters, not of the six bytes 01 03 00 00 00 01. Save the frame as a binary file and choose the File source instead.
  • An extra line ending. Many editors add a newline when saving a file, and that byte changes the result. Check the file size matches the frame length.
  • Swapped bytes. 4b37 and 374b are the same CRC written in different byte orders; compare against the order your protocol documents.
  • A variant that is not listed. Some devices use less common settings, such as an initial value of 0x1D0F. If none of the seven variants produces the expected check value for 123456789, your device uses a different parameter set.

The Compare with an expected hash box helps here: paste the value your device reports, and the tool shows whether it matches the selected variant or another algorithm.

Frequently asked questions

Which CRC-16 does Modbus use?
CRC-16/MODBUS: polynomial 0x8005 reflected, initial value 0xFFFF, no final XOR. Its check value is 4b37, and the low byte is transmitted first.
What is “CRC-16 CCITT”?
The name is used loosely for several variants with polynomial 0x1021. CRC-16/CCITT-FALSE (init 0xFFFF) and CRC-16/XMODEM (init 0x0000) are the most common; KERMIT is the reflected form.
How do I know which variant my device uses?
Compute the CRC of a known frame from the device’s documentation with each variant and see which matches. The check value for 123456789 also identifies a variant.
Can CRC-16 detect all errors?
No. It detects all single-bit errors and bursts up to 16 bits, but random corruption has about a 1 in 65,536 chance of going unnoticed.

Last updated September 26, 2026

Related tools

CRC-32 Hash Generator Generate the CRC-32 hash of any text or file online. Instant 32-bit checksum in hex, computed in your browser. CSR Decoder Decode a PKCS#10 certificate signing request to check the subject, SANs, key size and signature before you send it to a CA. CSR Generator Generate an RSA private key and certificate signing request (CSR) with SANs in your browser — the private key never leaves your device. ECDSA & Ed25519 Key Generator Generate elliptic-curve key pairs (P-256, P-384, P-521) and Ed25519 keys as PEM or JWK for JWT signing, TLS and APIs. Encrypt & Decrypt Text Encrypt or decrypt text with AES, Triple DES, Rabbit, RC4 or Blowfish using a secret passphrase — in your browser. Hash Identifier Identify hash types from their format: MD5, SHA-1/256/512, bcrypt, Argon2, sha512crypt, NTLM, MySQL, phpass, Django and more. HMAC Generator Generate HMAC-SHA256, HMAC-SHA1, HMAC-SHA512, HMAC-MD5 and SHA-3 HMACs with a secret key, as hex or Base64. Htpasswd Generator Create .htpasswd entries for Apache and Nginx basic auth with bcrypt, APR1-MD5 or SHA-1 — one username:password per line. Keccak Hash Generator Generate original Keccak-224/256/384/512 hashes, including the Keccak-256 used by Ethereum and Solidity. MD2 Hash Generator Generate the MD2 hash of any text or file online. Instant 128-bit digest in hex, computed in your browser. MD4 Hash Generator Generate the MD4 hash of any text or file online. Instant 128-bit digest in hex, computed in your browser. MD5 Hash Generator Generate the MD5 hash of any text or file online. Instant 128-bit digest in hex, computed in your browser.