What this tool calculates
This calculator uses CRC-32/ISO-HDLC, also commonly called the standard reflected CRC32. The reflected polynomial is 0xEDB88320, the initial value is 0xFFFFFFFF and the final XOR is 0xFFFFFFFF. The result is an unsigned 32-bit value formatted as eight hexadecimal digits, including leading zeroes.
CRC32C uses a different polynomial and will generally produce a different checksum for the same input. Do not compare values from those two variants as though one of the files must be broken. A format that names a CRC variant may also specify byte order for binary storage; the hexadecimal output here is a numerical display, not a binary container field.
CRC32 is designed to detect accidental data errors, not deliberate modification. A match is not a security certificate. For a file's checksum, choose file mode so the original bytes are read. Copying decoded text instead can change encoding and line endings.
Worked example
UTF-8 · abc · CRC32
352441c2
How to calculate and compare
- Enter the exact text in Input text, or choose Example to load
abc. Text is encoded as UTF-8; spaces and line endings are preserved. - In single-text mode, non-empty input up to 64 KiB updates after a short pause. Click Generate hash for empty input or larger text. Changing the input clears the previous result.
- To check a saved file instead, open File checksum, confirm the algorithm, and choose or drop the file. File mode reads its original bytes and starts automatically.
For line-by-line results, enable One hash per line, choose whether to include empty lines, then click Generate hash. Line mode does not calculate automatically. CRLF, LF and CR separate records and are not included in each line's digest. Duplicate lines retain their original line numbers.
Paste only the complete hexadecimal reference into Compare expected value (optional) and click Check. Letter case and surrounding pasted whitespace are ignored; internal spaces and the wrong length are rejected. Copy retains the full result. TXT and CSV exports include identifiers, algorithm names and digests, not source text or secret keys.
Limits, privacy and next steps
Text is limited to 10 MiB and line mode to 10,000 records, including empty records before filtering. Files are limited to 50 queue entries and 1 GiB each, read sequentially in 2 MiB chunks. These limits protect browser resources; they do not guarantee fast processing on every phone. Cancel if needed. Calculation takes place in the browser, while normal page and asset requests still reach the hosting service.
Comparing CRC32 values from files and archive tools
This page returns the numerical CRC-32/ISO-HDLC value as eight lowercase hexadecimal characters, including leading zeroes. Another program may display the same 32-bit pattern as an unsigned decimal integer or a negative signed integer. Convert the representation deliberately before comparing; a minus sign or 0x prefix is not accepted by this hex-only comparison field.
CRC fields inside formats need context. In gzip, the trailer CRC covers the uncompressed data, not the entire .gz file. Hashing the downloaded container here therefore does not reproduce that trailer field. For a format-specific check, identify exactly which bytes the specification covers, as well as its CRC variant and binary byte order. This calculator does not parse archive members.
One CRC32, three integer representations
Enter 123456789 with no trailing newline. The hexadecimal, unsigned decimal and signed decimal values below encode the same 32-bit pattern. Only the eight-digit hexadecimal form belongs in this page's comparison field.
CRC-32/ISO-HDLC / 123456789:
Hex: cbf43926
Unsigned decimal: 3421780262
Signed 32-bit decimal: -873187034
CRC32 mismatches that do not mean corrupted data
| Observed problem | Why it happens | What to do |
|---|---|---|
| A CRC32C reference differs | CRC32C uses a different polynomial | Use the required CRC32C implementation, not this ISO-HDLC calculator. |
| A gzip trailer CRC differs from the .gz hash | The trailer covers uncompressed data | Compare the matching uncompressed bytes, not the container. |
| A result begins with zeroes | The full representation still needs eight hex digits | Keep leading zeroes and remove display prefixes only. |