CRC calculator (CRC-8, CRC-16, CRC-32, CRC-64 and custom)
Compute any of the 113 catalogued CRCs, or your own width, polynomial and reflection, of text or hex bytes, with the check value.
A clear answer. Here’s how.
Uses the parametrised CRC model of Ross Williams (1993) that the RevEng “Catalogue of parametrised CRC algorithms” is written in: a width-bit register starts at init; each message byte is fed in most significant bit first, or least significant bit first when refin is true; whenever the bit shifted out differs from the message bit the register is XORed with poly (the generator polynomial without its top term); at the end the register is bit-reversed when refout is true and XORed with xorout. The catalogue’s 113 models (widths 3 to 82) are built in with their check value, the CRC of the ASCII string 123456789, which the page recomputes so you can see it match. Two independent methods run on every message up to 256 KiB, the bit-by-bit definition and a byte-at-a-time lookup table, and the page reports that they agree. Arithmetic uses BigInt above 32 bits, so CRC-64 and custom widths up to 128 bits are exact. It does not search for unknown parameters (RevEng’s reveng -s does), and the result is a number: the byte order a protocol uses to send it is shown both ways.
How this is checked
5 reference checks passed These 5 cases were run when this page was built, on 20 October 2026, and all reproduce within the stated tolerance. The same cases are part of the automated tests that run on every change to Toolmoz. Engine version 1.
See the checks and where each expected answer comes from
Case 1
- Inputs
- CRC algorithm CRC-32/ISO-HDLCMessage 123456789
- Expected, and what Toolmoz gave
- CRC (hex) expected 0xCBF43926, Toolmoz 0xCBF43926CRC (decimal) expected 3421780262, Toolmoz 3421780262Check value agrees with the catalogue expected Yes, Toolmoz Yes
- Where the expected answer comes from
- RevEng catalogue, CRC-32/ISO-HDLC: check=0xcbf43926 (3,421,780,262), the CRC of the ASCII string 123456789
- Allowed difference
- exact
Case 2
- Inputs
- CRC algorithm CRC-16/IBM-3740Message 123456789
- Expected, and what Toolmoz gave
- CRC (hex) expected 0x29B1, Toolmoz 0x29B1
- Where the expected answer comes from
- RevEng catalogue, CRC-16/IBM-3740 (alias CRC-16/CCITT-FALSE): check=0x29b1
- Allowed difference
- exact
Case 3
- Inputs
- CRC algorithm CRC-64/XZMessage 123456789
- Expected, and what Toolmoz gave
- CRC (hex) expected 0x995DC9BBDF1939FA, Toolmoz 0x995DC9BBDF1939FA
- Where the expected answer comes from
- RevEng catalogue, CRC-64/XZ: check=0x995dc9bbdf1939fa
- Allowed difference
- exact
Case 4
- Inputs
- CRC algorithm customMessage 123456789Width in bits 16Polynomial (hex, without the top x^width term) 0x8005Initial register value (hex) 0x0000Reflect each input byte (refin) trueReflect the result (refout) trueFinal XOR (hex) 0x0000
- Expected, and what Toolmoz gave
- CRC (hex) expected 0xBB3D, Toolmoz 0xBB3DCheck value computed here expected 0xBB3D, Toolmoz 0xBB3D
- Where the expected answer comes from
- RevEng catalogue: these are the parameters of CRC-16/ARC, whose check value is 0xbb3d
- Allowed difference
- exact
Case 5
- Inputs
- CRC algorithm CRC-32/ISO-HDLCMessage is hexMessage 00 00 00 00
- Expected, and what Toolmoz gave
- CRC (hex) expected 0x2144DF1C, Toolmoz 0x2144DF1CCRC bytes, least significant first expected 1C DF 44 21, Toolmoz 1C DF 44 21
- Where the expected answer comes from
- RevEng catalogue, CRC-32/ISO-HDLC codeword 00000000 1CDF4421 from the AUTOSAR R22-11 CRC specification section 7.2.3.1: the CRC of four zero bytes, sent least significant byte first
- Allowed difference
- exact
What this shows: the engine reproduces independently worked values for these cases. It does not prove every possible input is right. To test an answer you were given, see how to check a number; to see what is and is not checked across Toolmoz, see the accuracy ledger.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- CRC algorithm
- CRC-32/ISO-HDLC (CRC-32, CRC-32/ADCCP, CRC-32/V-42)
- Message is
- Text (its UTF-8 bytes)
- Message
- 123456789
Example result
- CRC (hex)
- 0xCBF43926
- CRC (decimal)
- 3421780262
- CRC (binary)
- 1100 1011 1111 0100 0011 1001 0010 0110
- CRC bytes, most significant first
- CB F4 39 26
- CRC bytes, least significant first
- 26 39 F4 CB
- Algorithm
- CRC-32/ISO-HDLC (also CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ)
- Parameters
- width=32 poly=0x04c11db7 init=0xffffffff refin=true refout=true xorout=0xffffffff
- Catalogue check value for “123456789”
- 0xCBF43926
- Check value computed here
- 0xCBF43926
- Check value agrees with the catalogue
- Yes
- Bit-wise and table methods agree
- Yes
- Input length (bytes)
- 9
RevEng evidence class: attested. The CRC is shown as a number. Protocols that reflect their bits (refin=true) usually transmit it least significant byte first. Text is read as UTF-8, so line endings and trailing spaces change the result.