CRC Calculator (CRC-8, CRC-16, CRC-32, CRC-64)
Calculate CRC-32, CRC-32C, CRC-16 (MODBUS, CCITT, XMODEM), CRC-8 and CRC-64 of text or hex bytes. All variants at once, hex or decimal output.
Runs entirely in your browser. Your data is never uploaded.
What is CRC Calculator?
A cyclic redundancy check (CRC) is a short checksum used to detect accidental changes in data. This calculator computes CRC-32 (zip, PNG, Ethernet), CRC-32C (iSCSI, ext4, SCTP), CRC-32/BZIP2, CRC-32/MPEG-2, CRC-16/ARC, CRC-16/MODBUS, CRC-16/CCITT-FALSE, CRC-16/XMODEM, CRC-16/KERMIT, CRC-8/SMBUS, CRC-8/MAXIM and CRC-64/XZ for text, hex or Base64 input and lists every variant at once, so you can find the one your device or file format uses.
How to use CRC Calculator
- Type text into Text to hash, or choose Hex bytes as input encoding and paste the bytes of a frame or packet (spaces are ignored).
- Select the CRC variant you need; it is shown at the top and highlighted in the All CRC variants table.
- Choose the Output format: hex (lowercase or uppercase) or Decimal.
- Click Copy to copy the selected CRC, or read the other variants from the table.
Example
123456789 (text)
cbf43926
CRC-32 check value. The table also shows CRC-32C e3069283, CRC-16/MODBUS 4b37, CRC-16/CCITT-FALSE 29b1 and CRC-64/XZ 995dc9bbdf1939fa.
When to use CRC Calculator
Use it to compute or debug checksums of serial protocols (Modbus RTU, XMODEM), file formats (ZIP, PNG, gzip) and storage or network systems (iSCSI, ext4). It is also handy to identify an unknown CRC by comparing a known frame against the table. Do not use a CRC for security: it is linear and trivially forgeable, so anybody can change data and fix the CRC. Use a cryptographic hash or MAC instead.
How CRC Calculator works
A CRC treats the data as a large binary polynomial and computes the remainder of its division by a fixed generator polynomial (modulo 2). Each variant is defined by width, polynomial, initial value, whether input and output bits are reflected, and a final XOR value (the Rocksoft model). This tool uses a 256-entry lookup table per variant and checks every variant against its catalogue check value — the CRC of the ASCII string 123456789 (for example CRC-32 = cbf43926, CRC-32C = e3069283, CRC-16/MODBUS = 4b37). The result is shown as a big-endian hex number, or in decimal.
Common Use Cases
- Compute the CRC-16/MODBUS of an RTU frame before sending it
- Check the CRC-32 stored in a ZIP or PNG chunk
- Identify which CRC variant a device uses from a sample frame
- Generate CRC-32C values for storage or network test data
- Build test vectors for an embedded CRC implementation
Security Note
CRCs detect accidental errors only. They provide no protection against deliberate modification, because a CRC can be recomputed or forced to any value with simple linear algebra.
FAQs
Which CRC variant do I need?
It is defined by the protocol or format: ZIP/PNG/Ethernet use CRC-32, iSCSI/ext4/Btrfs use CRC-32C, Modbus RTU uses CRC-16/MODBUS, XMODEM uses CRC-16/XMODEM. If you do not know, compare a known frame with all rows of the table.
Modbus sends the CRC low byte first — why is the hex shown differently?
The tool shows the CRC as a number in big-endian hex (e.g. 4b37). Modbus RTU transmits it least-significant byte first, so on the wire you see 37 4B.
Why does my hex frame give a different CRC than expected?
Make sure Hex bytes is selected; with Text (UTF-8) the characters 0–9 and a–f themselves are hashed. Also exclude the CRC bytes from the input.
Is CRC-32 the same as the cksum command?
No. POSIX cksum uses the unreflected CRC-32 polynomial and also mixes in the file length. Use CRC-32 here for zip, gzip and PNG values.