GALAXY OF TOOLS

SECURITY SECTOR

CRC Calculator

CRC-8, CRC-16, CRC-32 and CRC-64 of text, hex or files with 112 named algorithms or your own parameters.

Parameters: width, polynomial, initial value, reflection and final XOR

Editing any value switches to “Custom parameters” unless the combination matches a catalogue algorithm. The polynomial is written without its top bit, as in the catalogue (0x04C11DB7 for CRC-32).

—
Common CRCs of this input
AlgorithmBitsHexDecimal

Select an algorithm name in the table to load it above. Check values come from the Catalogue of parametrised CRC algorithms (CRC RevEng).

Runs entirely in your browser. Nothing you enter or upload is sent to a server.

A CRC calculator for every common CRC-8, CRC-16, CRC-32 and CRC-64

This CRC calculator computes cyclic redundancy checks of text, raw hex bytes or whole files. Pick one of 112 named algorithms from the Catalogue of parametrised CRC algorithms maintained by the CRC RevEng project — CRC-32 as used by ZIP and PNG, CRC-32C (Castagnoli), CRC-16/MODBUS, CRC-16/CCITT-FALSE, XMODEM, Kermit, CRC-8/SMBUS, CRC-64/ECMA-182, CRC-64/XZ and many more — or type your own width, polynomial, initial value, reflection flags and final XOR.

Firmware and embedded developers use it to check a Modbus RTU frame or a serial protocol, storage engineers to compare a CRC-32C, and anyone debugging a mismatched checksum can see the result of every common algorithm side by side, because the same 9 bytes give a different CRC in each. Files are read in 1 MB pieces on your own device, so even multi-gigabyte images work and nothing is uploaded.

How to use the CRC Calculator

  1. Choose the input: Text (UTF-8), Hex bytes such as 01 03 00 00 00 0A, or File and drop the file.
  2. Pick the Algorithm. The list is grouped by width and shows the best-known alternative names, for example CRC-16/IBM-3740 (CRC-16/AUTOSAR, CRC-16/CCITT-FALSE).
  3. Read the result in hex, decimal and binary, plus the bytes in big-endian and little-endian order for protocols that transmit the low byte first.
  4. For an unlisted CRC, open Parameters and enter the width, polynomial, initial value, final XOR and the two reflection options. The check value tells you whether you have reproduced a published algorithm.
  5. Compare the Common or All 112 table when you do not know which variant a device uses, and select a name in the table to load it.

CRC Calculator features

The full parametrised catalogue

All 112 algorithms of width 3 to 64 bits from the RevEng catalogue, each verified by the page’s self-test against its published check value for “123456789”.

Custom CRC models

Any width from 1 to 64 bits with your own polynomial, init, refin, refout and xorout. Settings that match a named algorithm are recognised automatically.

Streams large files

A table-driven engine processes files in 1 MB chunks at hundreds of megabytes per second, with a progress bar and no upload.

Byte order shown

Results appear as big-endian and little-endian byte sequences, so a Modbus CRC of 0xCDC5 is shown as the C5 CD that actually goes on the wire.

Side-by-side comparison

One input, twenty common CRCs or all 112 at once — the quickest way to identify which variant a checksum in a log or datasheet was made with.

How a CRC is defined: the seven parameters

A CRC treats the message as a long binary number and divides it by a fixed generator polynomial using carry-less (XOR) arithmetic; the remainder is the CRC. Ross Williams’ “Rocksoft model”, used by the catalogue, pins down every variant with a handful of values: width (bits in the result), poly (the generator without its top bit), init (starting register value), refin (whether each input byte is processed least-significant bit first), refout (whether the final register is bit-reversed), xorout (a value XORed into the result) and check, the CRC of the ASCII string 123456789.

Worked example: CRC-32/ISO-HDLC has width 32, poly 0x04C11DB7, init 0xFFFFFFFF, refin and refout true and xorout 0xFFFFFFFF. Its check value is 0xCBF43926, the number you will see for the default input above. Change only xorout to 0 and you get CRC-32/JAMCRC, 0x340BC6D9 — the bitwise complement — which is why two programs can disagree about “the CRC-32” of the same data.

Which CRC is used where

Algorithm (alias)Check valueTypical use
CRC-32/ISO-HDLC (CRC-32, PKZIP)0xCBF43926Ethernet, ZIP, gzip, PNG, zlib’s crc32()
CRC-32/ISCSI (CRC-32C, Castagnoli)0xE3069283iSCSI, SCTP, ext4 and Btrfs metadata, SSE4.2 crc32 instruction
CRC-32/BZIP20xFC891918bzip2, ATM AAL5
CRC-16/MODBUS0x4B37Modbus RTU frames (low byte sent first)
CRC-16/IBM-3740 (CCITT-FALSE)0x29B1Many embedded protocols and bootloaders
CRC-16/XMODEM0x31C3XMODEM/YMODEM file transfer
CRC-16/KERMIT (CRC-CCITT)0x2189Kermit, Bluetooth
CRC-8/SMBUS0xF4SMBus packet error checking
CRC-64/XZ0x995DC9BBDF1939FAxz archives, Go’s ECMA table

CRCs detect accidents, not attackers

A CRC is designed to catch transmission and storage errors: any single-bit error, any burst shorter than the width and, with a good polynomial, almost every other random error. It is not a security check. Because a CRC is linear, anyone can change a file and adjust four bytes so that the CRC-32 stays the same. To prove a download has not been tampered with, compare a SHA-256 with the File Hash Checker; for hashing text or creating an HMAC, use the Hash Generator.

When results do not match a device, check the byte order first, then whether the device includes a length or address field in the calculation. Converting the value between hex, decimal and binary is easier with the Number Base Converter, and the Text to Binary converter shows exactly which bytes your text produces.

CRC Calculator FAQ

How do I calculate a CRC-32 online?

Leave the algorithm on CRC-32/ISO-HDLC, then type text, paste hex bytes or drop a file. The CRC calculator shows the value immediately, for example 0xCBF43926 for “123456789”, the same as zlib, Python’s zlib.crc32 and PHP’s crc32().

Why does my CRC-16 not match?

There are more than thirty different CRC-16s. MODBUS, CCITT-FALSE, XMODEM, Kermit and ARC all use 16 bits but differ in polynomial, initial value or reflection. Switch the table to All 112 and look for the value your device produced; also try reversing the two bytes.

What is the difference between CRC-32 and CRC-32C?

They use different polynomials: 0x04C11DB7 for CRC-32 and 0x1EDC6F41 (Castagnoli) for CRC-32C. CRC-32C detects more error patterns in short messages and has a dedicated instruction on modern x86 and ARM processors, which is why newer storage and network protocols chose it.

Is my file uploaded?

No. The file is read with the browser’s File API in 1 MB chunks and the CRC is computed by JavaScript on your device. Nothing is sent to a server, so large files are limited only by your disk speed.

How is hex input interpreted?

Each pair of hex digits is one byte, in the order written. Spaces, commas, colons, hyphens and 0x prefixes are ignored, so 0x01, 0x03 and 0103 are the same two bytes. An odd number of digits is rejected rather than guessed.

Can a CRC be used as a password hash or signature?

No. A CRC is short, fast and linear, so collisions are trivial to construct on purpose. Use a cryptographic hash such as SHA-256 for integrity against tampering and bcrypt or Argon2 for passwords.

You might also need