CRC-32 Checksum Calculator
// instant checksums — no data leaves your browser
Text Checksum
File Checksum
Random Checksums
Frequently Asked Questions
What is a CRC checksum?
A Cyclic Redundancy Check (CRC) is an error-detection algorithm that maps an input of any size to a short, fixed-length value called a checksum or digest. It is deterministic — the same input always produces the same output — and highly sensitive to accidental bit errors, making it ideal for verifying data integrity in storage and network transmission.
Are CRC checksums safe for cryptographic use?
No. CRC is an error-detection algorithm, not a cryptographic hash. It is not collision resistant and can be deliberately forged by an attacker — finding a second input that produces a given CRC is computationally trivial. For security-sensitive applications such as digital signatures or message authentication, use a purpose-built cryptographic hash like SHA-256 or BLAKE2.
How does CRCKit protect my data?
All checksum computation runs entirely inside your browser using the js-crc library by emn178. No text, no file content, and no checksum output is ever transmitted to any server. You can verify this by running the tool while offline — it works identically once the page has loaded.
What output formats are available?
Hex (lowercase hexadecimal) is the most common format used in tooling and documentation. HEX is the same in uppercase. Base64 encodes the raw bytes as a shorter string often used in HTTP headers and data URIs. Binary shows the individual bits, useful for educational purposes or low-level protocol work.
What is CRC-8?
CRC-8 produces an 8-bit (1-byte) checksum, shown as a 2-character hex string. Its compact output makes it the preferred choice for embedded systems, low-bandwidth sensors, and peripheral buses where even a single extra byte of overhead matters. Several CRC-8 variants exist, each standardised for a specific protocol, differing in polynomial, initial value, and whether input bits are reflected before processing.
What does CRC-8 detect?
An 8-bit CRC is guaranteed to detect all single and double-bit errors in messages up to 119 bits, all odd numbers of bit errors, and all burst errors of length 8 or fewer. For typical short sensor payloads of a few bytes this covers the overwhelming majority of realistic corruption scenarios. For longer messages or adversarial environments, a wider CRC or a cryptographic MAC is more appropriate.
Variant comparison
| Variant | Polynomial | Init | Reflected | Common use |
|---|---|---|---|---|
| CRC-8 (1-Wire) | 0x31 | 0x00 | Yes | Dallas/Maxim 1-Wire bus, DS18B20, iButton |
| CRC-8 (DVB-S2) | 0xD5 | 0x00 | No | DVB-S2 baseband frame header (ETSI EN 302 307) |
| CRC-8 (SMBus) | 0x07 | 0x00 | No | SMBus PEC, ATM HEC, general purpose |
Which CRC-8 variant should I use?
Follow your hardware or protocol specification. If you are working with a Dallas/Maxim 1-Wire device, CRC-8 (1-Wire) is mandatory — its reflected polynomial is baked into the silicon. If you are implementing a DVB-S2 receiver or modulator, CRC-8 (DVB-S2) is required by the standard. For SMBus or general-purpose use, CRC-8 (SMBus) (0x07) is the most broadly supported choice.
Why are there so many CRC-16 variants?
All CRC-16 variants produce a 16-bit (2-byte) checksum but differ in four parameters: the generator polynomial, the initial register value, whether input and output bits are reflected, and a final XOR value. Each combination was standardised by a different industry body for a specific protocol, which is why a single bit-width has accumulated so many named forms over the decades.
Variant comparison
| Variant | Polynomial | Init | Reflected | Common use |
|---|---|---|---|---|
| CRC-16 | 0x8005 | 0x0000 | Yes | USB, floppy disk, general purpose |
| CRC-16 (CCITT) | 0x1021 | 0xFFFF | No | X.25, HDLC, Bluetooth |
| CRC-16 (Modbus) | 0x8005 | 0xFFFF | Yes | Modbus RTU serial framing |
| CRC-16 (Kermit) | 0x1021 | 0x0000 | Yes | Kermit file-transfer protocol |
| CRC-16 (XMODEM) | 0x1021 | 0x0000 | No | XMODEM and YMODEM transfer protocols |
| CRC-16 (USB) | 0x8005 | 0xFFFF | Yes | USB full-speed and low-speed data packets |
| CRC-16 (DNP) | 0x3D65 | 0x0000 | Yes | DNP3 / SCADA / industrial automation (IEC 60870) |
Which CRC-16 variant should I use?
Follow your protocol specification exactly — mixing variants produces incompatible checksums even though they share the same bit width. If you are choosing freely (e.g. for a custom framing layer), CRC-16 (Modbus) is a solid default: its non-zero initial value catches leading-zero errors that the plain CRC-16 misses. Use CRC-16 (USB) when implementing USB device firmware, and CRC-16 (DNP) for any DNP3 or IEC 60870-compatible SCADA integration.
What is CRC-24?
CRC-24 produces a 24-bit (3-byte) checksum, shown as a 6-character hex string. Its 24-bit width offers a collision probability of roughly one in 16 million — a substantial improvement over 16-bit CRCs while remaining smaller than CRC-32. Several incompatible CRC-24 variants exist, each standardised by a different body for a specific protocol, differing in polynomial, initial value, input reflection, and final XOR.
Variant comparison
| Variant | Polynomial | Init | Reflected | Common use |
|---|---|---|---|---|
| CRC-24 (BLE) | 0x00065B | 0x555555 | Yes | Bluetooth Low Energy link-layer packets |
| CRC-24 (Intlkn) | 0x328B63 | 0xFFFFFF | No | Interlaken high-speed chip-to-chip serial links |
| CRC-24 (OpenPGP) | 0x864CFB | 0xB704CE | No | OpenPGP ASCII Armor checksum (RFC 4880) |
Which CRC-24 variant should I use?
Follow your protocol specification exactly — the three variants use entirely different polynomials and are mutually incompatible. CRC-24 (BLE) is mandatory for Bluetooth Low Energy link-layer implementations; note that the init value is fixed for advertising packets but negotiated per-connection on data channels. CRC-24 (Intlkn) is required for Interlaken-compliant chip-to-chip serial hardware. CRC-24 (OpenPGP) is the correct choice for any PGP or GPG ASCII Armor interoperability. If you are choosing freely and need a 24-bit checksum, CRC-24 (OpenPGP) is the most widely implemented variant in existing software libraries.
What is CRC-32?
CRC-32 uses the polynomial 0x04C11DB7 in reflected form and produces a 32-bit (4-byte) checksum, typically shown as an 8-character hex string. It was standardised in IEEE 802.3 (Ethernet) and is embedded in Ethernet frames, ZIP archives, PNG images, and gzip streams. Its 32-bit width makes accidental collision probability roughly one in four billion, which is sufficient for most integrity-checking workloads.
Variant comparison
| Variant | Polynomial | Init | Reflected | Common use |
|---|---|---|---|---|
| CRC-32 | 0x04C11DB7 | 0xFFFFFFFF | Yes | Ethernet, ZIP, PNG, gzip, zlib |
| CRC-32C | 0x1EDC6F41 | 0xFFFFFFFF | Yes | iSCSI, SCTP, Btrfs, ext4, ZFS, RocksDB, SSE4.2 |
| CRC-32 (BZIP2) | 0x04C11DB7 | 0xFFFFFFFF | No | bzip2 compression, ATM AAL5, DECT-B |
| CRC-32 (JamCRC) | 0x04C11DB7 | 0xFFFFFFFF | Yes | JAM file format, network equipment |
| CRC-32 (MPEG-2) | 0x04C11DB7 | 0xFFFFFFFF | No | MPEG-2 transport streams, DVB |
Which CRC-32 variant should I use?
CRC-32 is the right default for most new applications — it is universally supported and used in Ethernet, ZIP, PNG, and gzip. If you are working on storage systems, databases, or any context where hardware acceleration matters, prefer CRC-32C (Castagnoli): it uses a superior polynomial with better error-detection properties and is directly accelerated by the crc32 SSE4.2 instruction on x86 and equivalent instructions on ARM. CRC-32 (MPEG-2) and CRC-32 (BZIP2) are non-reflected variants required by their respective standards — only use them when the spec mandates it. CRC-32 (JamCRC) is a niche variant that omits the final XOR, making it useful for chaining partial checksums; it is otherwise interchangeable with standard CRC-32 in terms of error detection.
What is CRC-64?
CRC-64 produces a 64-bit (8-byte) checksum, shown as a 16-character hex string. Its much wider output space — roughly 18 quintillion possible values — makes accidental collisions vanishingly unlikely, so it is preferred for large-scale storage systems, databases, and high-throughput data pipelines where even a one-in-four-billion CRC-32 collision rate is unacceptable. Several incompatible CRC-64 variants exist because different standards bodies chose different polynomials for different contexts.
Variant comparison
| Variant | Polynomial | Reflected | Common use |
|---|---|---|---|
| CRC-64 (ECMA) | 0x42F0E1EBA9EA3693 | No | ECMA-182 standard, DLT tape drives |
| CRC-64 (NVMe) | 0xAD93D23594C935A9 | Yes | NVMe storage protocol, command integrity |
| CRC-64 (Redis) | 0xAD93D23594C935A9 | Yes | Redis cluster slot hashing, key routing |
| CRC-64 (XZ) | 0x42F0E1EBA9EA3693 | Yes | XZ compressed archive format |
Which CRC-64 variant should I use?
Use the variant your protocol or storage system mandates — mixing them produces silently wrong checksums. CRC-64 (ECMA) and CRC-64 (XZ) both use the ECMA polynomial but differ in bit reflection: ECMA processes data without reflection while XZ uses the reflected form, so they produce different outputs from the same input. CRC-64 (NVMe) and CRC-64 (Redis) share the Jones polynomial in reflected form; Redis sets its initial value and final XOR to zero for hash-table consistency. Reach for CRC-64 in place of CRC-32 when protecting large datasets — multi-gigabyte files, database tables, tape archives — where the one-in-four-billion collision probability of CRC-32 becomes a real operational risk over millions of objects. For individual files or network framing, CRC-32 is almost always sufficient.
What is CRC-82 (DARC)?
CRC-82 (DARC) uses an 82-bit polynomial defined in the DARC (Data Radio Channel) standard for broadcasting data over FM subcarriers — the multiplex data layer embedded in FM radio signals. It produces an 82-bit (rounded to 11 bytes, shown as a 21-character hex string) checksum. The unusual bit width was chosen specifically to match the frame structure of DARC data packets rather than any binary boundary, making it one of the few production CRCs with a non-power-of-two output width.
What is DARC used for?
DARC is a Japanese standard for FM multiplex broadcasting, used to deliver text data such as traffic information, news headlines, and programme guides over the 76 kHz subcarrier of FM radio. It is deployed in Japan's VICS traffic information system and similar FM data services. The 82-bit CRC protects short data frames where any undetected corruption could cause incorrect navigation instructions or garbled display text.
How does CRC-82 compare to other wide CRCs?
Its 82-bit width sits between the common 64-bit and 128-bit extremes, giving it a theoretical undetected-error probability of about one in 4.8 sextillion — stronger than CRC-64 but achieved at the cost of a non-standard output size that requires BigInt arithmetic in software implementations. Outside of DARC and its direct derivatives, you are unlikely to encounter CRC-82 in practice; CRC-64 covers most use cases that outgrow CRC-32.