ExactBench · Engineering calculators

CRC Calculator

CRC-8 · CRC-16 · CRC-32

Message

CRC-16/MODBUS

0x4B37
19255 decimal · 2 bytes

Frame on the wire

low byte first
TRANSMIT ORDER313233343536373839374Bdata · 9 byteschecksum
CRC (hex)0x4B 37
CRC (decimal)19255
CRC bytes, MSB first4B 37
CRC bytes, LSB first37 4B
Message length9 bytes
Parameterspoly 0x8005 · init 0xFFFF · refin true · refout true · xorout 0x0000
Check value (“123456789”)0x4B37
How this works. A CRC treats the message as a long binary polynomial and returns the remainder after dividing by a generator polynomial. The parameters matter as much as the polynomial: init seeds the register, refin/refout reflect the bit order going in and coming out, and xorout inverts the result. Two implementations with the same polynomial and different reflection settings produce completely different checksums — which is the usual reason a CRC "doesn't match". Modbus and CCITT both use well-known parameter sets and are not interchangeable. Byte order on the wire is a separate trap: Modbus transmits the CRC low byte first, so the frame ends with the bytes reversed from how the checksum is written.