Ambimat GroupAmbimatAmbiSecureV2XeSIM & eUICCAmbiAutomationEngineering BlogAhmedabad · India · Est. 1982
Crypto & integrity

CRC calculator with common polynomials

Compute a cyclic redundancy check over text, hex, or binary input using 70+ catalogue presets (CRC-8/16/32/64, CCITT, XMODEM, MODBUS, CRC-32C and more) or a fully custom width, polynomial, init, reflection, and xorout. The engine verifies each preset against its documented check value.

Client-sideWidths 3–64reveng catalogue

How to use this tool

What it does

Computes CRC values across common polynomials (CRC-16, CRC-32 and variants).

When to use it

Use it when a frame carries a CRC and you need to verify or reproduce it for a specific polynomial.

Worked example

Select CRC-16/CCITT and compute the FCS over a frame body to check it against the trailer.

Input

Result

Pick a preset and enter input to compute its CRC.
All CRC computation runs locally in your browser. Nothing is uploaded — safe for proprietary frame layouts and firmware payloads.

What a CRC calculator is for

A cyclic redundancy check is an error-detecting code computed by treating your message as the coefficients of a polynomial and taking the remainder after dividing by a fixed generator polynomial. The remainder — the CRC — is appended to the data so a receiver can recompute it and detect transmission or storage errors. CRCs are everywhere in embedded and protocol work: Ethernet frames, USB packets, MODBUS RTU, CAN bus, ZIP/gzip archives, ISO 7816 smart-card transport, and countless proprietary radio and sensor frames.

The catch is that "CRC-16" or "CRC-32" alone does not pin down a value. A CRC variant is defined by six parameters — width, polynomial, initial value, input reflection, output reflection, and a final XOR — and changing any one of them yields a different result for the same bytes. This tool implements one generic bit-by-bit engine, parameterised by those six values and using BigInt internally, so widths from 3 to 64 bits all behave identically and correctly. It ships with 70+ named presets drawn from Greg Cook's well-known reveng catalogue, plus a fully custom mode.

When to use it

Reach for this tool when you are reverse-engineering or implementing a protocol and need to confirm exactly which CRC variant a device uses, when a checksum you computed in one language does not match another stack, or when you are validating firmware that appends a CRC trailer. Selecting a preset immediately recomputes that preset's documented check value — the CRC of the ASCII string 123456789 — and shows a pass/fail badge comparing the computed result against the catalogue figure, so you can trust the engine before trusting any other output. For a plain additive or XOR integrity byte instead of a polynomial CRC, the sibling LRC calculator and checksum tool are the right fit.

Input and output

Choose how your message is interpreted: Text is UTF-8 encoded to bytes; Hex bytes accepts pairs of hex digits with optional spaces, colons, or 0x prefixes; Binary bits accepts 0/1 in groups totalling a whole number of bytes. The result panel reports the byte count and the final CRC in three forms — hexadecimal (zero-padded to the register width), decimal, and binary — and the Copy button copies the hex value. Each render also prints the active six parameters so the result is self-documenting.

Presets

70+ named variants across widths 3–64: CRC-8 family, CCITT-FALSE, XMODEM, KERMIT, MODBUS, USB, X-25, CRC-32, CRC-32C, BZIP2, MPEG-2, the CRC-64 set, and more.

Custom mode

Set width, polynomial, init, RefIn, RefOut, and xorout by hand to match an undocumented device. The same engine runs, so results are consistent with the presets.

Check verification

Every preset's CRC of 123456789 is recomputed live and compared to the documented value, giving you a green pass badge before you rely on the tool.

Common mistakes

Related tools

LRC calculator

Longitudinal redundancy check — the XOR/sum integrity byte used in many serial protocols.

Open LRC calculator →

Checksum

Simple additive and complement checksums for lightweight frame validation.

Open Checksum →

More utilities

Parsers, decoders, and references for smart-card, protocol, and FIDO engineers.

All resources →

Frequently asked questions

What do width, poly, init, refin, refout and xorout mean?

These six parameters fully define a CRC variant (the Rocksoft / reveng model). Width is the size of the CRC register in bits. Poly is the generator polynomial in normal (non-reflected) form. Init is the starting value of the register. RefIn reflects each input byte before it is processed, and RefOut reflects the final register. Xorout is XORed into the result at the very end. Two CRCs with the same polynomial but different reflection or xorout produce completely different values.

What is the check value and why verify it?

The check value is the CRC of the nine ASCII bytes "123456789" under a given parameter set, as published in Greg Cook's catalogue. It is a fingerprint for a CRC definition. When you pick a preset this tool recomputes that value with its own engine and shows a pass or fail badge, so you can confirm the implementation and the parameters match the documented algorithm before trusting any other result.

Why does CRC-32 of the same data differ between two libraries?

Almost always because of reflection or final XOR, not the polynomial. The common zlib CRC-32 reflects input and output and XORs the result with all ones; CRC-32/BZIP2 uses the same polynomial but does not reflect; CRC-32/MPEG-2 drops the final XOR. Always pin down all six parameters, not just the polynomial, when reproducing a value from another stack.

Can this tool handle non-standard widths like CRC-5 or CRC-24?

Yes. The engine is a generic bit-by-bit implementation using BigInt, so any width from 3 to 64 bits works, including CRC-3/GSM, CRC-5/USB, CRC-7/MMC, CRC-15/CAN, CRC-24 and the 64-bit variants. Pick a preset or switch to custom mode and set the width, polynomial, init, reflection flags and xorout yourself.

Does any of my input leave the browser?

No. The CRC is computed entirely in JavaScript on this page. Nothing you type as text, hex, or binary is uploaded, logged, or sent to a server, so it is safe for proprietary frame layouts and firmware payloads.