Adler-32 Checksum Calculator
Adler-32 is the lightweight checksum built into zlib and used to verify zlib-compressed streams. Enter text or raw hex bytes and get the 32-bit checksum in hex and decimal, along with its two component sums. It is faster to compute than a CRC and everything runs locally as you type.
How to use the Adler-32 Checksum Calculator
Type or paste your data and choose whether the Input is plain Text (encoded as UTF-8) or Hex bytes. In hex mode, spaces, commas, and 0x prefixes are ignored, so 57 69 6B 69 and 57696b69 are the same. The cards update live: the main Adler-32 value is shown in both hexadecimal (the form you usually see) and decimal, and the two internal sums, A and B, are broken out so you can see how the result is built.
Use Copy hex checksum to grab the 8-digit hex value. As a quick correctness check, the Adler-32 of the string Wikipedia is 0x11E60398, the value shown in the canonical example — handy for confirming the tool matches a reference implementation. The checksum of empty input is 0x00000001, which is the defined starting value rather than zero.
It all runs in your browser with no network calls, so your data never leaves your machine and the result is instant even for large inputs.
How Adler-32 works and where it is used
Adler-32 is a checksum algorithm invented by Mark Adler for zlib, the compression library behind gzip, PNG images, and countless network protocols. Its job is integrity verification: after a block of data is compressed and later decompressed, the Adler-32 stored in the zlib stream is recomputed and compared, catching corruption that crept in during transmission or storage. It was designed as a faster alternative to a CRC-32 while still being far more reliable than a naive sum of bytes, and that speed is its main selling point — it uses only additions and a modulo, with no lookup table or bit shifting per byte.
The algorithm keeps two running sums. The first, A, starts at 1 and adds the value of each byte. The second, B, adds the current value of A after every byte, so it accumulates a position-weighted total — earlier bytes influence B more than later ones. Both sums are kept modulo 65,521, the largest prime below 2¹⁶, and the final 32-bit checksum is simply B in the high 16 bits and A in the low 16 bits, written B × 65536 + A. Using a prime modulus rather than a power of two spreads the bits more evenly and improves error detection. Because A begins at 1, the checksum of empty input is 1, not 0 — a small but important detail.
The position-weighted second sum is what gives Adler-32 its strength over a plain checksum: swapping two bytes, or moving a block of data, changes B even when the simple byte total A is unchanged, so reordering errors are caught. Its weaknesses are worth knowing too. For very short messages the checksum does not use its full 32-bit range, so collisions are more likely than with CRC-32, and like all checksums it is an error-detection tool, not a cryptographic hash — it is trivial to construct different data with the same Adler-32, so it offers no protection against deliberate tampering. For its intended purpose, quickly flagging accidental corruption in compressed streams, it remains an efficient and widely deployed choice.
Common use cases
- zlib and PNG. Compute or verify the Adler-32 stored in a zlib-compressed stream or PNG chunk.
- Integrity checks. Generate a fast checksum to detect accidental corruption of a data block.
- Debugging. Match an Adler-32 value reported by a library or tool against your own data.
- Learning. See the two running sums A and B that combine to form the checksum.