Skip to content
ZeroServer.tools

CRC-16 Calculator

Compute CRC-16 checksums across standard variants — CCITT, Modbus, XMODEM, USB, MAXIM & Custom Poly.

Input Mode
Sample Presets
Input Size11 Bytes
Bit Length88 Bits
Standard Variants8 Preset Algorithms
Export Action

Computed Checksums

Algorithm VariantHex ChecksumDecimalCopy
CRC-16/CCITT-ZERO0x992A39210
CRC-16/CCITT-FALSE0x4D2519749
CRC-16/MODBUS0xDAED56045
CRC-16/XMODEM0x992A39210
CRC-16/ARC0x3EEB16107
CRC-16/KERMIT0x23C99161
CRC-16/USB0x25129490
CRC-16/MAXIM0xC11449428

CRC-16 algorithms and parameters explained

CRC-16 (Cyclic Redundancy Check) produces a 16-bit error-detecting checksum for data integrity verification in serial communications, file transfers, and industrial hardware protocols. Different standards configure different polynomial formulas (e.g. 0x1021 for CCITT, 0x8005 for Modbus/IBM), initial seed registers, input bit reflections, and output XOR masks. This online tool computes all major standard CRC-16 variants instantly in client-side JavaScript without transmitting any data over the network.

Built and maintained by Meet Shah · Last updated

What this tool is used for

  • Computing a Modbus CRC for a serial frame you are debugging.
  • Checking a device's checksum against your own implementation.
  • Comparing CRC-16 variants to identify which one a protocol uses.
  • Verifying a frame captured from a serial bus against its trailing CRC.
  • Producing a checksum for a test fixture.

Frequently Asked Questions

Why are there so many CRC-16 variants?
Because CRC-16 names a family, not an algorithm. Each variant fixes a polynomial, an initial value, whether input and output bits are reflected, and a final XOR — change any one and the checksum differs completely for the same data.
What does the polynomial do?
Defines the division. CRC is polynomial long division over GF(2), and the polynomial determines which error patterns are guaranteed to be caught — CCITT's 0x1021 and IBM's 0x8005 were each chosen for their detection properties in a particular medium.
What errors does a CRC-16 catch?
All single-bit and double-bit errors, all odd numbers of bit errors, and every burst up to 16 bits. Beyond that it is probabilistic — roughly one in 65,536 random corruptions passes, which is why CRC-32 exists for larger payloads.
Is a CRC a security check?
No. It is linear, so an attacker can modify the data and recompute a matching checksum trivially. It detects accidental corruption and nothing more — integrity against a deliberate change requires an HMAC or a signature.
Why does my CRC not match another tool's?
Almost always a parameter mismatch rather than a bug. Reflected input and output are the usual culprits — CCITT-FALSE and XMODEM share a polynomial and differ in initial value, and the two are constantly confused in documentation.

Common errors and gotchas

  • Choosing the wrong variant, since CCITT, CCITT-FALSE, Modbus and XMODEM all give different results.
  • Getting the byte order wrong when appending the CRC, which several protocols specify explicitly.
  • Including the CRC bytes in the calculation, which the protocol usually excludes.
  • Assuming CRC-16 offers any protection against deliberate tampering, which it does not.
  • Computing over text when the protocol frames bytes, where the encoding changes the input.

Related Developer Utilities tools

Private & free — this tool runs entirely in your browser.

IndieKitShip your Next.js startup in days.affiliate