CRC Calculator: CRC-8, CRC-16, CRC-64 & Modbus
Compute any CRC of 3 to 64 bits — Modbus, CCITT, XMODEM, CRC-64/XZ and 108 more presets, or your own parameters — and find which CRC gives a value.
9 bytes of input.
Check value (CRC of "123456789") for these parameters: 0x4B37
All 112 catalogued CRCs of this input
| CRC | Value |
|---|---|
| 0x4 | |
| 0x6 | |
CRC-4/ITU | 0x7 |
| 0xB | |
CRC-5/EPC | 0x00 |
CRC-5/ITU | 0x07 |
| 0x19 | |
| 0x0D | |
| 0x3B | |
| 0x26 | |
CRC-6/ITU | 0x06 |
| 0x13 | |
CRC-7 | 0x75 |
| 0x53 | |
| 0x61 | |
| 0xDF | |
| 0x26 | |
| 0xDA | |
| 0x15 | |
| 0xBC | |
| 0x37 | |
| 0x94 | |
| 0xB4 | |
CRC-8/ITU | 0xA1 |
| 0x7E | |
| 0xEA | |
CRC-8/MAXIM, DOW-CRC | 0xA1 |
| 0x99 | |
| 0xF7 | |
| 0x3E | |
| 0xD0 | |
| 0x4B | |
CRC-8 | 0xF4 |
CRC-8/AES, CRC-8/EBU | 0x97 |
| 0x25 | |
CRC-10, CRC-10/I-610 | 0x199 |
| 0x233 | |
| 0x12A | |
CRC-11 | 0x5A3 |
| 0x061 | |
| 0xD4D | |
X-CRC-12 | 0xF5B |
| 0xB34 | |
CRC-12/3GPP | 0xDAF |
| 0x04FA | |
| 0x082D | |
| 0x30AE | |
CRC-15 | 0x059E |
| 0x2566 | |
ARC, CRC-16, CRC-16/LHA, CRC-IBM | 0xBB3D |
| 0x4C06 | |
| 0xAEE7 | |
| 0x9ECF | |
R-CRC-16 | 0x007E |
X-CRC-16 | 0x007F |
| 0xEA82 | |
| 0xC2B7 | |
CRC-16/DARC, CRC-16/EPC, CRC-16/EPC-C1G2, CRC-16/I-CODE | 0xD64E |
| 0xCE3C | |
CRC-16/CCITT-FALSE, CRC-16/AUTOSAR | 0x29B1 |
CRC-16/X-25, CRC-16/ISO-HDLC, CRC-16/ISO-IEC-14443-3-B, CRC-B | 0x906E |
CRC-A | 0xBF05 |
CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-16/V-41-LSB | 0x2189 |
| 0xBDF4 | |
| 0x772B | |
CRC-16/MAXIM | 0x44C2 |
| 0x6F91 | |
MODBUS | 0x4B37 |
| 0xA066 | |
| 0x5D38 | |
| 0x20FE | |
CRC-16/IEC-61158-2 | 0xA819 |
| 0x63D0 | |
CRC-16/AUG-CCITT | 0xE5CC |
| 0xD0DB | |
| 0x0FB3 | |
| 0x26B1 | |
CRC-16/BUYPASS, CRC-16/VERIFONE | 0xFEE8 |
| 0xB4C8 | |
XMODEM, ZMODEM, CRC-16/ACORN, CRC-16/LTE, CRC-16/V-41-MSB | 0x31C3 |
| 0x04F03 | |
| 0x0ED841 | |
| 0xC25A56 | |
| 0x7979BD | |
| 0x1F23B8 | |
| 0xB4F3E6 | |
| 0xCDE703 | |
| 0x23EF52 | |
CRC-24 | 0x21CF02 |
| 0x200FA5 | |
| 0x04C34ABF | |
| 0x0CE9E46C | |
CRC-32Q | 0x3010BF7F |
| 0x1697D06A | |
CRC-32D | 0x87315576 |
CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32 | 0xFC891918 |
| 0x6EC2EDC4 | |
CKSUM, CRC-32/POSIX | 0x765E7680 |
CRC-32C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN | 0xE3069283 |
CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP | 0xCBF43926 |
JAMCRC | 0x340BC6D9 |
| 0xD2C22F51 | |
| 0x0376E6E7 | |
XFER | 0xBD0BE338 |
| 0xD4164FC646 | |
CRC-64 | 0x6C40DF5F0B497347 |
| 0xB90956C775A41001 | |
| 0x75D4B74F024ECEEA | |
| 0xAE8B14860A799888 | |
| 0xE9C6D914C4B8D9CA | |
| 0x62EC59E3F1A4F00A | |
CRC-64/GO-ECMA | 0x995DC9BBDF1939FA |
Checked against crccheck, a bit-by-bit reference model and the catalogue's check values. Runs entirely in your browser.
How to use
- Enter the data as text or hex bytes, or choose a file.
- Pick a CRC from the list (grouped by width) or type the width, polynomial, init, final XOR and reflection settings yourself; the check value confirms custom parameters against a data sheet.
- To identify an unknown CRC, type the value you observed into the search box under the table: it keeps only the catalogued CRCs that produce it.
About this tool
ShowHide
A CRC is fully described by six numbers — width, polynomial, initial value, whether input bytes are reflected, whether the result is reflected, and a final XOR — and this calculator takes any combination of them for widths from 1 to 64 bits. It also carries all 112 CRCs of 64 bits or fewer in Greg Cook's reveng catalogue under their catalogue names and common aliases, so CRC-16/MODBUS, CRC-16/CCITT-FALSE (IBM-3740), XMODEM, KERMIT, X-25, CRC-8/MAXIM, CRC-32/MPEG-2, CRC-32C and CRC-64/XZ are one choice away. Input can be UTF-8 text, hex bytes or a file up to 64 MB. The result is shown in hex, decimal and binary, and for whole-byte widths also as the bytes in both orders: Modbus RTU, for instance, transmits its CRC low byte first, so 0x4B37 goes on the wire as 37 4B. Every line also shows the CRC of the ASCII string 123456789, which is the 'check' value data sheets and the catalogue quote, so a custom setting can be confirmed against documentation before it is trusted. The table below runs every catalogued CRC over the same input, and typing a value you observed filters it to the presets that produce it, byte-swapped matches included. One sample is rarely enough to identify an unknown CRC — with 16-bit CRCs a random match turns up in about one case in 65,536 per preset — so confirm with a second message. Messages are whole bytes; CRCs over a bit count that is not a multiple of 8, and the 82-bit CRC-82/DARC, are outside its scope. A CRC detects accidental errors and is not a security measure: anyone can recompute it after changing data.
Frequently asked questions
Why does my Modbus CRC come out with the bytes reversed?
CRC-16/MODBUS is 0x4B37 for the text 123456789, but Modbus RTU sends the low byte first, so the frame ends 37 4B. The little-endian row shows the bytes in transmission order; if you read the two bytes from a frame, search for them in that order and the tool marks it as a byte-swapped match.
What is the difference between CCITT-FALSE, KERMIT, XMODEM and X-25?
All four use the polynomial 0x1021, but differ in initial value, reflection and final XOR: XMODEM starts at 0 and reflects nothing (check 0x31C3), CCITT-FALSE (IBM-3740) starts at 0xFFFF (0x29B1), KERMIT reflects and starts at 0 (0x2189), and X-25 (IBM-SDLC) reflects, starts at 0xFFFF and inverts the result (0x906E). The name 'CRC-CCITT' is used for several of them, which is why the check value matters.
What is the check value?
The CRC of the nine ASCII bytes 123456789 under the chosen parameters. The reveng catalogue and most data sheets quote it, so if your custom parameters give the documented check value, they almost certainly match the implementation you are trying to reproduce.
How reliable is identifying a CRC from one value?
Not very. The table holds 112 CRCs, and for a 16-bit value any preset has roughly a 1 in 65,536 chance of matching by accident — small, but real across many narrow CRCs, and for 8-bit CRCs about one in 256. Test a second, different message: a CRC that matches both is almost certainly the one in use.
What do refin and refout mean?
Reflect input processes each byte least-significant bit first, as serial hardware such as UARTs does; reflect output reverses the bits of the final register. Most CRCs set both the same way, but a few, such as CRC-12/UMTS, reflect only the output.
Related tools
Two's Complement Converter (8–64 bit)
Enter a decimal, hex, binary or octal value and see its 8/16/32/64-bit two's complement bit pattern, with signed and unsigned readings.
Convert
CRC-32 Calculator (CRC-32 & CRC-32C)
Compute the CRC-32 (IEEE 802.3, used by zip/gzip/PNG) or CRC-32C (Castagnoli) checksum of text or hex bytes, in hex and unsigned decimal.
Developer
Chmod Calculator
Convert Unix file permissions between octal (755), symbolic (rwxr-xr-x), and checkbox grid.
Developer
xxHash, MurmurHash3, FNV & SipHash Calculator
Compute xxHash32/64, MurmurHash3 (32 and 128-bit), FNV-1/FNV-1a (32 and 64-bit) and SipHash-2-4 of text, hex bytes or a file, with seeds and a key.
Developer
BLAKE3, BLAKE2 & Keccak-256 Hash Generator
Hash text, hex or a file with BLAKE3 (hash, keyed, derive-key), BLAKE2b/2s with key, salt and personalization, Keccak-256/512 or SHAKE128/256.
Developer
Check Digit Calculator: Luhn, Verhoeff, Damm
Compute and verify check digits with Luhn, Verhoeff, Damm and the ISO 7064 family (MOD 11-2, 97-10, 37-2…), and see which typing errors each one catches.
Developer