CRC-16 Hash Generator
Calculate a CRC-16 checksum locally.
Calculate a CRC-16 checksum locally.
Cyclic Redundancy Check (CRC) codes were developed in 1961 by W. Wesley Peterson as a way to catch transmission errors cheaply, using binary polynomial division instead of arithmetic. CRC-16 is the 16-bit member of that family: it treats your data as one long binary number, divides it by a fixed polynomial, and keeps the remainder as the checksum. This tool produces the specific CRC-16/MODBUS variant — polynomial 0xA001 (the bit-reversed form of 0x8005), register seeded at 0xFFFF, with no final XOR — which is the exact CRC used by the Modbus RTU protocol found throughout industrial and building-automation equipment.
Because it's cheap to compute on very small microcontrollers, CRC-16 remains common in places CRC-32 would be overkill: Modbus serial communication, some Bluetooth and USB packet framing, XMODEM file transfer, and various firmware update checks. It exists purely to catch accidental bit flips from noisy wires or flaky storage — not to stop someone from deliberately editing data.
CRC-16/MODBUS: polynomial 0xA001, initial value 0xFFFF, no final XOR. It's the variant used by Modbus RTU. Other CRC-16 flavors (CRC-16/CCITT, CRC-16/ARC) use different seeds or polynomials and will not match this output.
16 bits, shown here as 4 hex digits — small enough to compute cheaply even on tiny embedded hardware, which is why it's still common in serial and industrial protocols.
No. CRC codes catch accidental transmission errors, not deliberate attacks — it takes very little effort to alter data and produce the same CRC-16. Use HMAC or a SHA-2 hash if you need tamper detection.