English 简体中文 Tiếng Việt 日本語 한국어 हिन्दी Español Français العربية বাংলা Português Русский اردو Bahasa Indonesia Deutsch Naijá मराठी తెలుగు Türkçe தமிழ்
// checksum utility
CRC32 Checksum Tool
CLIENT-SIDE ONLY
NO DATA TRANSMITTED
🔵 All calculations run locally in your browser. No data is uploaded to any server. Supports CRC-32/ISO-HDLC, CRC-32C, CRC-32/MPEG-2, and CRC-32/BZIP2 variants.
Calculation Settings
CRC Variant ↗
Input Encoding ↗
Output Format ↗
Input Data
Drop a file here
Ready - enter data and click "Calculate CRC32"
Calculation Results
ISO-HDLC
Castagnoli
MPEG-2
BZIP2
Checksum Verification
Paste an expected CRC32 value to compare it against the current calculation.
Input Bytes
0
Total Calculations
0
Current Variant
ISO-HDLC
Elapsed (ms)
// CRC32 Variant Guide
CRC Variants
CRC-32 / ISO-HDLC PKZip · PNG · Ethernet
The most common CRC-32 implementation, also called CRC-32b. It uses the reflected form of polynomial 0x04C11DB7, namely 0xEDB88320. Both input bytes and output are bit-reflected (LSB first), with initial value and final XOR both set to 0xFFFFFFFF.

Widely used by ZIP, gzip, PNG images, Ethernet frames (IEEE 802.3), PKCS#7, and many legacy systems. This is the de facto "default CRC-32" variant.
Polynomial0x04C11DB7 (normal) / 0xEDB88320 (reflected)
Initial Value0xFFFFFFFF
Input ReflectionYes (RefIn = true)
Output ReflectionYes (RefOut = true)
Final XOR0xFFFFFFFF
Check Value0xCBF43926 (for "123456789")
CRC-32C / Castagnoli iSCSI · NVMe · SCTP
Proposed by G. Castagnoli and colleagues in 1993, this variant uses polynomial 0x1EDC6F41 (reflected form 0x82F63B78). At the same Hamming distance, it offers stronger burst-error detection than the ISO-HDLC polynomial.

Hardware acceleration is available through Intel SSE4.2 and ARM CRC32 instructions. It is widely used in modern storage and transport protocols such as iSCSI, NVMe, Btrfs, and SCTP.
Polynomial0x1EDC6F41 (normal) / 0x82F63B78 (reflected)
Initial Value0xFFFFFFFF
Input ReflectionYes (RefIn = true)
Output ReflectionYes (RefOut = true)
Final XOR0xFFFFFFFF
Check Value0xE3069283 (for "123456789")
CRC-32 / MPEG-2 MPEG-2 · DVB · ATSC
Uses the same 0x04C11DB7 polynomial as ISO-HDLC, but neither input nor output is bit-reflected (MSB first, big-endian). The initial value is 0xFFFFFFFF and the final XOR is disabled (XorOut = 0x00000000).

Mainly used for PSI/SI tables in MPEG-2 transport streams (PAT, PMT, NIT, and related tables), plus integrity checks in DVB and ATSC broadcast systems.
Polynomial0x04C11DB7
Initial Value0xFFFFFFFF
Input ReflectionNo (RefIn = false)
Output ReflectionNo (RefOut = false)
Final XOR0x00000000 (disabled)
Check Value0x0376E6E7 (for "123456789")
CRC-32 / BZIP2 BZip2 · AAL5 · DECT
Its parameters are almost identical to MPEG-2 (polynomial 0x04C11DB7, no reflection, initial value 0xFFFFFFFF). The only difference is a final XOR with 0xFFFFFFFF, which flips every bit. It is also known as CRC-32/AAL5 or CRC-32/DECT-B.

Used by the BZip2 compressed file format and the trailer checksum field of the ATM AAL5 protocol.
Polynomial0x04C11DB7
Initial Value0xFFFFFFFF
Input ReflectionNo (RefIn = false)
Output ReflectionNo (RefOut = false)
Final XOR0xFFFFFFFF
Check Value0xFC891918 (for "123456789")
// Input Encoding Guide
Input Encoding
UTF-8 Text Default · General
Treats the input as a UTF-8 string, converts it to bytes, and then calculates CRC32. This is the most common mode for plain text, source code, JSON, and similar content.

Note: the same text encoded with a different character set such as GBK or UTF-16 produces a different byte stream and therefore a different CRC32 value. This tool always uses UTF-8.
Best ForPlain text, source code, JSON, XML
Example"Hello" → 48 65 6C 6C 6F (5 bytes)
CJK CharactersMost CJK characters use 3 bytes in UTF-8
Hexadecimal Binary Data · Protocol Frames
Treats the input as raw hexadecimal byte literals. Spaces and line breaks are ignored. Every two hex characters become one byte (00–FF).

Useful when you need CRC checks for exact binary data such as network frames, firmware image fragments, or memory dumps. You can paste Wireshark or hex dump output directly.
FormatOnly 0-9 and a-f / A-F are allowed
Character CountMust be even (2 characters per byte)
Example48656C6C6F = "Hello" (5 bytes)
WhitespaceIgnored automatically. 48 65 6C is the same as 48656C
Base64 Encoded Binary · Certificates · Images
Treats the input as a Base64-encoded string, decodes it into raw bytes, and then calculates CRC32. Useful for PEM certificates, JWT payloads, Data URIs, and other Base64 content.

Supports the standard Base64 alphabet (A-Z a-z 0-9 + /). The padding character = is optional. URL-safe Base64 (- _) is not supported.
AlphabetA-Z a-z 0-9 + / =
ExampleSGVsbG8= → "Hello" (5 bytes)
URL-safeNot supported. Replace -→+ and _→/ first
⚠ 1 CharacterInvalid — 6 bits are not enough to form 1 byte (8 bits required)
2 CharactersDecodes to 1 byte (minimum valid input)
3 CharactersDecodes to 2 bytes
4 CharactersDecodes to 3 bytes (the pattern repeats every 4 characters)
// Output Format Guide
Output Format
Hexadecimal Most Common · Default
Displays the value as an 8-digit uppercase hexadecimal number prefixed with 0x. Each character represents 4 bits, for a total of 32 bits. This is the standard format used in most tools, source code, and documentation.

Compared with decimal output, hexadecimal makes byte boundaries easier to inspect and matches memory dumps and protocol fields more naturally.
Example0xCBF43926
Length8 hexadecimal characters = 32 bits
BaseBase 16 (0-9, A-F)
Best ForCode, documentation, Wireshark, hex editors
Decimal Unsigned 32-bit Integer
Displays the checksum as an unsigned 32-bit decimal integer in the range 0–4,294,967,295 (2³²−1). Some languages and tools compare CRC values in decimal form, and database fields often store this representation.

Note: CRC32 results should be treated as unsigned integers. In signed int types such as Java or C#, values above 0x7FFFFFFF may appear negative and should be converted to uint or a wider unsigned representation.
Example3421780262
Range0–4,294,967,295
NoteFor Java int, convert with & 0xFFFFFFFFL
Best ForDatabases, Python struct values, numeric comparison
Binary Bit-Level Analysis
Displays the checksum as a 32-bit binary string prefixed with 0b. Each character is 0 or 1, aligned with the most significant bit on the left, and padded with leading zeroes when necessary.

Mainly useful for understanding the internal CRC algorithm, studying polynomial division, teaching, and embedded scenarios that need bit-level checksum processing.
Example0b11001011…00100110
LengthFixed at 32 bits with left zero padding
Highest BitBit 31 (MSB) appears on the far left
Best ForAlgorithm analysis, teaching, embedded debugging
Octal Unix · File Systems
Displays the checksum as an 11-digit octal number prefixed with 0o. At most 11 octal characters are needed for 32 bits because 3×11 = 33 > 32. Each octal digit represents 3 bits.

Octal output is uncommon in modern CRC workflows, but it still appears in some Unix tools, embedded firmware toolchains, and older communication protocol specifications.
Example0o31572031046
LengthUp to 11 octal digits
Per DigitRepresents 3 bits (0-7)
Best ForUnix tools, older protocol specifications