BackendBench
Coffee
Free tool

Checksum calculator

CRC-32, CRC-32C, Adler-32, CRC-16 variants, FNV-1a and Java hashCode for text or raw bytes.

AlgorithmHexDecimal
Plain text

Checksums for protocols, files and debugging

When two systems disagree about whether a message arrived intact, the first question is whether they compute the same checksum over the same bytes. Kafka record batches use CRC-32C, ZIP and PNG use CRC-32, zlib uses Adler-32, Modbus uses a CRC-16: each with its own polynomial, starting value and bit order, which is why "I computed the CRC and it does not match" is such a common problem.

Type text or paste hex bytes and the calculator shows CRC-32, CRC-32C, Adler-32, four common CRC-16 variants (ARC, MODBUS, CCITT-FALSE and XMODEM), FNV-1a in 32 and 64 bits, and, for text, Java's String.hashCode(). Every implementation is checked against the published check values: the CRC of the ASCII string 123456789 is 0xCBF43926 for CRC-32 and 0xE3069283 for CRC-32C. Results are shown in hexadecimal and decimal.

Use the right tool

Calculation happens in your browser. Large inputs are best verified with a command-line tool.

Frequently asked questions

What is the difference between a checksum and a cryptographic hash?

A checksum such as CRC-32 detects accidental corruption and is very fast, but it is easy to forge on purpose. A cryptographic hash (SHA-256) is designed so that no one can find two inputs with the same output. Use CRC for integrity checks in protocols and formats, SHA-256 or better for security.

Where are these algorithms used?

CRC-32 in ZIP, gzip, PNG and Ethernet; CRC-32C in Kafka record batches, iSCSI and storage systems; Adler-32 in zlib; CRC-16 variants in Modbus, XMODEM and many embedded protocols; FNV-1a in hash tables.

How do I compute these in Java?

Use java.util.zip.CRC32, CRC32C and Adler32: var c = new CRC32(); c.update(bytes); long v = c.getValue();. For String.hashCode, call "text".hashCode().

Why does the result depend on text encoding?

Checksums are computed over bytes. This tool encodes text as UTF-8; if your system uses another encoding (or a different line ending) the bytes, and the checksum, differ. Switch to hex input to check exact bytes.

More tools you might need