CRC64 Checksum Calculator
Calculate CRC-64 checksums for text and files online. Supports ECMA-182, ISO 3309, XZ, Jones, and WE polynomials with instant results.
About
CRC-64 is a cyclic redundancy check that produces a 64-bit digest from arbitrary input data. It detects burst errors up to 64 bits in length and is used in storage formats (xz, HDFS), database systems (Redis), and tape archive standards (ECMA-182). Unlike cryptographic hashes, CRC-64 is designed for speed and error detection, not collision resistance. A single flipped bit in multi-terabyte backup archives can silently corrupt data; CRC-64 catches that corruption where shorter CRC-16 or CRC-32 checksums statistically miss it. This tool computes CRC-64 using a table-driven algorithm over a generator polynomial G(x) of degree 64 in GF(2). Results are approximate to the chosen polynomial standard. Different polynomials yield different checksums for identical input.
Five polynomial variants are supported: ECMA-182, ISO 3309, XZ (as used in LZMA/7z), Jones (used in several database engines), and WE. Each has different initial values and post-processing (final XOR). Note: this tool processes data as a byte stream. For text, UTF-8 encoding is applied before computation. File checksums match command-line tools only when the same polynomial and parameters are used.
Formulas
The CRC-64 algorithm treats input data as a polynomial in GF(2) and computes the remainder after division by a generator polynomial G(x) of degree 64. The table-driven method precomputes 256 remainder values for all possible single-byte inputs.
For each byte bi of input, the running CRC register R is updated:
For reflected variants, input bits and the final register are bit-reversed. The lookup uses the low byte instead:
Where T is the precomputed 256-entry lookup table, R is the 64-bit CRC register initialized to Init, and the final result is R &xor; FinalXOR. All arithmetic is performed in GF(2) using BigInt to handle 64-bit unsigned values natively.
Reference Data
| Variant | Polynomial (Hex) | Init Value | Final XOR | Reflect In | Reflect Out | Usage |
|---|---|---|---|---|---|---|
| CRC-64-ECMA-182 | 0x42F0E1EBA9EA3693 | 0x0000000000000000 | 0x0000000000000000 | No | No | ECMA-182 standard, DLT tapes |
| CRC-64-ISO | 0x000000000000001B | 0xFFFFFFFFFFFFFFFF | 0xFFFFFFFFFFFFFFFF | Yes | Yes | ISO 3309, HDLC |
| CRC-64-XZ | 0x42F0E1EBA9EA3693 | 0xFFFFFFFFFFFFFFFF | 0xFFFFFFFFFFFFFFFF | Yes | Yes | xz utils, 7-Zip, LZMA SDK |
| CRC-64-Jones | 0xAD93D23594C935A9 | 0xFFFFFFFFFFFFFFFF | 0x0000000000000000 | Yes | Yes | Redis, various DB engines |
| CRC-64-WE | 0x42F0E1EBA9EA3693 | 0xFFFFFFFFFFFFFFFF | 0xFFFFFFFFFFFFFFFF | No | No | Wolfgang Ehrhardt variant |
| CRC-32 | 0x04C11DB7 | 0xFFFFFFFF | 0xFFFFFFFF | Yes | Yes | Ethernet, ZIP, PNG (32-bit only) |
| CRC-16-CCITT | 0x1021 | 0xFFFF | 0x0000 | No | No | X.25, Bluetooth, SD cards |
| Reference: CRC width vs. error detection capability | ||||||
| CRC Width | Max Burst Detection | Hamming Distance | Typical Data Sizes | |||
| 16 bits | 16-bit bursts | HD = 4 up to ~32 KB | Packets, frames | |||
| 32 bits | 32-bit bursts | HD = 6 up to ~12 KB | Files, archives | |||
| 64 bits | 64-bit bursts | HD = 6 up to ~4 GB | Large archives, databases | |||
| Known test vectors: ASCII string "123456789" | ||||||
| CRC-64-ECMA-182 | 0x6C40DF5F0B497347 | |||||
| CRC-64-XZ | 0x995DC9BBDF1939FA | |||||
| CRC-64-ISO | 0xB90956C775A41001 | |||||
| CRC-64-Jones | 0xE9C6D914C4B8D9CA | |||||
| CRC-64-WE | 0x62EC59E3F1A4F00A | |||||