Developer tools

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.

CRC calculator (CRC-8, CRC-16, CRC-32, CRC-64 and custom)
Esc to restore

Your inputs

Names and aliases from the RevEng catalogue. CRC-32 is CRC-32/ISO-HDLC, CRC-32C is CRC-32/ISCSI and CRC-16/CCITT-FALSE is CRC-16/IBM-3740.

Hex may use spaces, colons or 0x prefixes, such as 31 32 33. Up to 1 MB.

Results update as you type. Larger files run when you press Update result.

Your result

Your result will appear here.

More actions

Your inputs stay in this browser. Nothing is uploaded or saved.

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
  1. 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
  2. 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
  3. 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
  4. 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
  5. 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.