CRC and checksum calculator

You need to verify a CRC-16 Modbus, CCITT, XMODEM or CRC-32 value and the free calculator sites disagree with each other. 13 preset CRC polynomials plus a custom mode, all matching the published check values for the test string 123456789. Also XOR-8, SUM-8, LRC and Fletcher-16.

Open the calculator in EM·LINKBelow is a worked example. The working calculator runs free in EM·LINK.

Worked example

Example inputs

123456789text
ASCII text▾
CRC-16/MODBUS▾
Low byte first (Modbus RTU)▾

Example result

CRC-16/MODBUS0x4B37

Matches the published check value. On a Modbus RTU frame send 37 then 4B.

AlgorithmPolyResult
CRC-16/MODBUS80054B37
CRC-16/CCITT-FALSE102129B1
CRC-16/XMODEM102131C3
CRC-16/KERMIT10212189
CRC-8/SMBUS07F4
CRC-32 (zlib)04C11DB7CBF43926

Also XOR-8 0x31, SUM-8 0xDD, LRC 0x23, Fletcher-16 0x1EDE.

CRCs are computed in your browser. Nothing is sent to us.

Run it with your own values

The working calculator is CRC & Checksum Suite in EM·LINK, our free browser tool. The button opens it directly.

Open in EM·LINK

How to read the result

Every preset is checked against the standard test string, so you can trust the number before you put it in firmware or a frame builder.

The same suite covers the simple checksums used beside CRCs: the XOR-8 in GNSS sentences and the LRC trailer in Modbus ASCII.

How this is calculated

Each preset is a set of catalogue parameters: width, polynomial, initial value, input and output reflection, and final XOR. The register is updated one byte at a time.

crc = init for each byte b: crc ^= b << (w-8); shift 8 times, XOR poly on MSB if rout: crc = reflect(crc) crc ^= xorout CRC-16/MODBUS of "123456789" = 0x4B37

The full derivation, step by step, is in the EM·LINK documentation.

Calculated per CRC catalogue check values. These tools are an engineering aid, not a certification.

Next step

Polling more than one device? Embedos Edge reads Modbus and pushes it to the cloud. Book a 20 min commissioning call.

Common questions

What is the CRC-16 Modbus of 123456789?

0x4B37. CCITT-FALSE gives 0x29B1, XMODEM 0x31C3 and CRC-32 (zlib) 0xCBF43926.

Can I enter a custom polynomial?

Yes. Set width, polynomial, init, input and output reflection and final XOR.

Which byte goes first in a Modbus RTU frame?

Modbus RTU sends the CRC low byte first, then the high byte.