← All Tools

MurmurHash3 Calculator

Compute Austin Appleby's MurmurHash3 — the fast non-cryptographic hash widely used for sharding, bloom filters, hash tables (Redis, Cassandra, Kafka), Guava's Hashing.murmur3_*, Python's mmh3, and JavaScript bundlers. Pick a variant (32-bit, 128-bit x86, 128-bit x64), tweak the seed, and see the hash in hex / decimal / base36 plus a shard bucket for any chosen modulus.

MurmurHash3_x86_32 (32-bit)

Hex (8 chars)
Unsigned decimal
Base36
also as base62 below
Shard bucket (mod N) → · consistent across runs & languages with same seed

MurmurHash3_x86_128 (128-bit, x86 variant)

Hex (32 chars)
Four 32-bit words

MurmurHash3_x64_128 (128-bit, x64 variant — most common)

Hex (32 chars)
Two 64-bit words
Java-style signed longs
This is the variant Guava / Cassandra / Spark use. mmh3.hash128(s, seed) in Python's mmh3 also returns this when signed=False.

About MurmurHash3

MurmurHash was created by Austin Appleby in 2008 (Murmur1) and refined to MurmurHash3 in 2011. It is a fast, simple, non-cryptographic hash with excellent distribution (no clusters, no detectable patterns on the SMHasher test suite) and is one of the most widely deployed hash families in distributed systems.

VariantOutputArchitecture sweet spotUse cases
x86_3232 bitsAnyHash tables, Bloom filters, cache key sharding, flag bits.
x86_128128 bits32-bit CPUsRare today — kept for parity with old C / Java code.
x64_128128 bits64-bit CPUsDistributed IDs, Cassandra partitioner, Spark / Hadoop joins, deduplication.
Why non-cryptographic?

MurmurHash3 is not safe against adversaries. Collisions can be constructed by anyone who knows the seed (see HashDoS attacks from 2011-2012). Use it for distributing data evenly; use SHA-256 / BLAKE3 / SipHash when the input is attacker-controlled and a collision would be exploited.

32-bit reference vectors (seed = 0)
murmur3_x86_32("")                = 0x00000000
murmur3_x86_32("hello")           = 0x248bfa47
murmur3_x86_32("hello world")     = 0x5e928f0f

These match Python's mmh3.hash(s, 0, signed=False) and Guava's Hashing.murmur3_32_fixed().hashString(s, UTF_8).asInt(). The 128-bit outputs match mmh3.hash128(s, 0, signed=False) and Cassandra's Murmur3Partitioner.