Checksum calculator
Compute CRC-32, CRC-32C, CRC-16/CCITT-FALSE, CRC-16/MODBUS, CRC-8/ATM, Adler-32, XOR-8 (BCC) and Fletcher-16 for text or hex bytes, shown in both hex and decimal.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Bytes: 0
| Algorithm | Hex | Decimal |
|---|
CRC-32 uses reflected polynomial 0xEDB88320, init 0xFFFFFFFF, xorout 0xFFFFFFFF; Adler-32 follows RFC 1950
What this tool does
- Check an implementation against the spec: see what CRC-32, CRC-32C and CRC-16/CCITT-FALSE should be for the same "123456789" test vector in one screen.
- Debug a Modbus or serial protocol and confirm the CRC-16/MODBUS value without installing drivers or writing a script.
- Track down corruption by comparing the Adler-32 or CRC-32 recorded next to a file against what you compute here.
- When all you have is a hex frame such as 01 03 00 00 00 0A, tick "input is a hex byte string" and checksum the raw bytes.
Example
Input
123456789
Output
CRC-32 0xCBF43926; CRC-32C 0xE3069283; CRC-16/CCITT-FALSE 0x29B1; CRC-16/MODBUS 0x4B37; CRC-8/ATM 0xF4; Adler-32 0x091E01DE; XOR-8 (BCC) 0x31; Fletcher-16 0x1EDE
"123456789" is the published check value for these algorithms, so these results should match the numbers in the specification — a quick way to prove the tool uses the right polynomial and init value.
Frequently asked questions
Why does my CRC-32 differ from the one here?
The input is almost always the culprit: text is UTF-8 encoded first, so a CJK character costs three bytes and a trailing newline counts as well. To checksum a binary frame, enable hex input and paste the bytes exactly as they appear.
What is the difference between CRC-16/CCITT-FALSE and CRC-16/MODBUS?
Both are CRC-16 with different parameters: CCITT-FALSE uses polynomial 0x1021, init 0xFFFF and no reflection, while MODBUS uses the reflected polynomial 0xA001, init 0xFFFF and reflects input and output. The same data therefore yields completely different values, and picking the wrong one is the usual reason a check fails.
What are Adler-32, XOR-8 (BCC) and Fletcher-16 for?
They are lighter alternatives to CRC. Adler-32 is what zlib uses — fast and friendlier for large inputs — XOR-8 is a common frame-trailer check in serial protocols, and Fletcher-16 sits in between. All three detect fewer error patterns than CRC but are plenty for short frames.
Why is my hex input rejected?
The number of hex digits must be even, because two characters make one byte. Spaces, colons and dashes are stripped automatically, so "0x01 03" and "01-03" parse fine; an odd-length string such as "1 3" is reported as invalid.
Does anything leave my machine?
No. All eight algorithms are local table lookups and accumulators, nothing is uploaded, and it is a safe place to check frames or file fragments you would rather not share.
Keywords:crc32crc32ccrc16crc8adler32fletcherbcc校验和校验码checksummodbusccitt