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.
Parameters: poly 0x1021 · init 0xFFFF · refin false · refout false · xorout 0x0000 · catalogue check value 0x29B1 for “123456789” (self-test passes)
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/XMODEM | 0x31C3 |
| CRC-16/MODBUS | 0x4B37 |
| CRC-16/KERMIT | 0x2189 |
| CRC-16/ARC (IBM / LHA) | 0xBB3D |
| CRC-16/USB | 0xB4C8 |
| CRC-16/MAXIM-DOW | 0x44C2 |
| CRC-16/MCRF4XX | 0x6F91 |
| CRC-16/IBM-SDLC (X-25) | 0x906E |
| CRC-16/GENIBUS | 0xD64E |
| CRC-16/CDMA2000 | 0x4C06 |
| CRC-16/DNP | 0xEA82 |
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
Pick the CRC-16 variant your protocol or device uses, then choose whether your input is text, hex or Base64.
- 2
Type or paste the data, or drop a file to checksum its bytes instead.
- 3
Read the result in hex and decimal, plus the byte-swapped form for protocols that send the low byte first.
- 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
CRC-32 Generator
Compute the CRC-32 (IEEE 802.3) checksum of text online and see it as hex and unsigned decimal. Great for integrity checks. Free, instant and 100% private.
Adler-32 Checksum Calculator
Calculate the Adler-32 checksum used by zlib and PNG from text, hex bytes or a file, with the A and B running sums shown separately.
File Checksum Calculator
Calculate SHA-1, SHA-256 and SHA-512 checksums of any file in your browser. Copy each hash and compare against an expected value to verify a download is intact.
MD5 Hash Generator
Generate MD5 hashes of text or files instantly in your browser. 32-character hex checksum with uppercase option and one-click copy. Free and private.
SHA-256 Hash Generator
Generate SHA-256 hashes of text or files with the browser's Web Crypto API. 64-character hex digest, uppercase option, instant copy. Free and private.