What is CRC-16?
A short checksum to detect accidental data changes. “CRC-16” covers many different polynomials and init values.
How the three presets differ
“CRC-16” is a family name: standards differ in the starting value fed into the register, which direction bits are shifted (often called LSB-first vs MSB-first), and how the polynomial is written. The same payload can therefore produce different 16-bit results. The three options here match widely cited definitions.
MODBUS (RTU) is common in industrial buses and PLCs: it starts from 0xFFFF and shifts in a particular direction. CCITT-FALSE also starts from 0xFFFF but feeds each byte MSB-first, so it is not the same as MODBUS even with similar polynomials. XMODEM is associated with classic file-transfer framing; it starts from 0x0000, which is the main reason it differs from CCITT-FALSE. You do not need to memorize polynomials—match the preset name and byte order in your manual or capture. If results disagree, verify high vs low byte when reading 16-bit values.
How to use it
Choose a CRC variant (MODBUS, CCITT-FALSE, XMODEM), then pick text or hex input. Plain text is hashed as UTF-8 bytes; hex must be an even number of hex digits with no spaces. Tap Calculate to see the 16-bit result. When comparing with a capture, confirm byte order (which half is high vs low).
Related information
CRC detects accidental corruption; it does not repair data or prove authenticity. It is not encryption. If two devices disagree, compare against known test vectors from the protocol or device vendor.