This tool computes a 64-bit CRC checksum of any text or raw hex bytes and shows it in hexadecimal and unsigned decimal, updating live. CRC-64 is used where a 32-bit CRC’s collision space is too small — large file archives, tape formats, and content-addressed stores.
How it works
CRC-64 computes the remainder of the input, treated as a polynomial over GF(2), divided by the 64-bit generator polynomial 0x42F0E1EBA9EA3693 (ECMA-182). This implementation precomputes a 256-entry table in the most-significant-bit-first direction, then for each byte does crc = (crc << 8) XOR table[(crc >> 56) XOR byte], starting from an initial value of 0 with no final XOR. Because the values exceed JavaScript’s safe-integer range, all arithmetic is done with BigInt so the 64-bit result is exact.
Why 64 bits instead of 32?
A CRC-32 produces values in a space of about 4.3 billion possible checksums. For everyday file transfers that is usually sufficient, because the probability of two randomly different files producing the same CRC-32 is roughly 1 in 4 billion. But in large-scale systems — tape libraries, content-addressed storage, deduplication engines, or backup systems storing millions of objects — that collision probability becomes material. A CRC-64 expands the space to about 18 quintillion possible values, making accidental collisions negligible even across very large object counts.
That is why CRC-64 appears in contexts like:
- ECMA-182 — the standard for tape and storage media integrity checking.
- PostgreSQL — uses CRC-64 for write-ahead log (WAL) integrity.
- Redis — uses a CRC-64 variant for cluster slot assignments.
- Deduplication systems — content fingerprinting where even rare hash collisions cause data loss.
CRC-64 variants you may encounter
As with CRC-16 and CRC-32, the term “CRC-64” covers several incompatible variants:
| Variant | Polynomial | Init | Reflected | Check value (123456789) |
|---|---|---|---|---|
| CRC-64/ECMA-182 | 0x42F0E1EBA9EA3693 | 0 | No | 0x6C40DF5F0B497347 |
| CRC-64/XZ | 0x42F0E1EBA9EA3693 | all-ones | Yes | 0x995DC9BBDF1939FA |
| CRC-64/JONES | 0xAD93D23594C935A9 | all-ones | Yes | 0xE9C6D914C4B8D9CA |
This calculator implements CRC-64/ECMA-182. The XZ variant — used by the xz compressor and adopted by several Linux tools — uses the same polynomial but reflects both input and output and starts from a different initial value. Always verify with the 123456789 check string before integrating a CRC-64 value into a production system.
BigInt and browser compatibility
JavaScript’s native number type cannot represent 64-bit integers exactly above 2^53. This tool uses the BigInt type throughout the CRC computation to guarantee a bitwise-accurate 64-bit result. BigInt is supported in all modern browsers released after 2018. If you see an error, your browser is likely very old. Everything runs locally — no data is uploaded.