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.
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.
| Variant | Output | Architecture sweet spot | Use cases |
|---|---|---|---|
x86_32 | 32 bits | Any | Hash tables, Bloom filters, cache key sharding, flag bits. |
x86_128 | 128 bits | 32-bit CPUs | Rare today — kept for parity with old C / Java code. |
x64_128 | 128 bits | 64-bit CPUs | Distributed IDs, Cassandra partitioner, Spark / Hadoop joins, deduplication. |
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.
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.