Tooleux

XXH128

XXHash (4)

Compute the 128-bit XXH3 hash of any input.

Runs in your browser. Nothing leaves your device.
Calculate XXH128 (128-bit XXH3) non-cryptographic hashes. Free, offline, runs entirely client-side. Read more Show less

What is XXH128?

XXH128 is the 128-bit variant of XXH3, the third-generation xxHash algorithm published by Yann Collet in 2019. It produces a 128-bit (16-byte) fingerprint, shown as 32 hexadecimal characters. It is the widest of the modern xxHash family.

XXH128 is a non-cryptographic hash. It is designed for hash tables, Bloom filters, cache keys, content-addressed storage, and deduplication, where speed and collision resistance matter more than cryptographic security. Never use it for passwords, signatures, or integrity against an adversary.

How to compute XXH128

Type or paste your input. The tool hashes the raw bytes, so choose the correct input encoding (UTF-8 text, hex, or Base64). For the UTF-8 string hello:

9555d6739cfc2f04b2f8d1e4b7b8d6c4 (illustrative; use the tool for the exact value)

The xxHash family

xxHash comes in several variants:

XXH32 - 32-bit output, older, still fast. See XXH32.

XXH64 - 64-bit output, the standard choice for hash tables. See XXH64.

XXH3-64 - the modern 64-bit variant, faster than XXH64. See XXH3.

XXH128 - this tool. 128-bit output for cases where a 64-bit collision probability is not low enough.

When to use XXH128 instead of XXH3-64

Two situations:

Very large key spaces. If you are hashing trillions of items, 64-bit collisions become statistically likely. 128 bits pushes the birthday bound out of reach.

Content-addressed storage and deduplication. When a hash collision causes silent data corruption (because two different files map to the same hash), 128 bits provides a much larger safety margin. Many deduplication systems use XXH128 or a comparable 128-bit hash.

FAQ

Is XXH128 cryptographically secure?

No. XXH128 is designed for speed, not security. An attacker can construct collisions with modest effort. Use SHA-256 or BLAKE3 if an adversary is involved.

XXH128 vs XXH3-128

They are the same algorithm. XXH128 is the more common name for the 128-bit variant of XXH3. Some libraries call it XXH3-128, others call it XXH128.

Is XXH128 stable across languages?

Yes. The XXH3 specification is complete and the 128-bit output is identical across xxHash C, hash-wasm, Go, Python, and Rust implementations for the same input.

How does XXH128 compare to MD5?

XXH128 is faster and produces a longer output. MD5 is a (broken) cryptographic hash; XXH128 is a non-cryptographic hash. Both produce 128 bits. For non-security uses, XXH128 is strictly better; for security uses, neither is appropriate.

Why 128 bits specifically?

Because 128 bits is the smallest power-of-two output that makes birthday collisions impractical at scale. Below 128 bits (64-bit, 96-bit), the collision probability becomes a real concern for content addressing. 128 bits is the widely accepted minimum for that use case.

Command line equivalent
# xxhsum (from the xxHash distribution)
echo -n "hello" | xxhsum -H3

# Python
pip install xxhash
python3 -c 'import xxhash; print(xxhash.xxh3_128(b"hello").hexdigest())'

# Node with hash-wasm
node --input-type=module -e 'import { xxhash128 } from "hash-wasm"; console.log(await xxhash128(new TextEncoder().encode("hello")))'

# Go
go get github.com/zeebo/xxh3
Loads a test value into the form
Input
XXH128