Introduction
Need to reproduce a MurmurHash3 value from Cassandra, HBase, or a Guava Hashing call? MurmurHash3 is a fast non-cryptographic hash function designed by Austin Appleby in 2008. It is widely used in distributed systems for consistent partitioning and in hash table implementations where speed matters more than cryptographic properties. This tool computes all three MurmurHash3 variants (x86 32-bit, x86 128-bit, and x64 128-bit) with a configurable seed. Paste your text and get the hash instantly. No data leaves your browser.
What this tool does
- Computes MurmurHash3 x86 32-bit (returns a decimal integer), x86 128-bit (returns 32 hex chars), and x64 128-bit (returns 32 hex chars).
- Accepts a configurable 32-bit seed value, which produces different hash values for the same input.
- Processes input as a UTF-8 string, matching the behavior of the murmurhash3js library.
- Updates the hash in real time as you type or change the seed.
- Runs entirely client-side with no network requests.
How this tool works
Select a variant from the dropdown: x86 32-bit for the classic 32-bit hash used in Guava and many hash table implementations, x86 128-bit for the 128-bit hash used on 32-bit platforms, or x64 128-bit for the optimized 128-bit hash used on 64-bit platforms. Enter a seed value (any 32-bit integer, default 0). Type or paste text into the input field. The hash appears instantly in the output field. The 32-bit variant outputs a decimal number; the 128-bit variants output 32-character hexadecimal strings.
How MurmurHash3 works
MurmurHash3 uses a multiply-and-rotate approach. The name combines 'multiply' and 'rotate', which are the two core operations. The algorithm processes input in 4-byte (32-bit) or 16-byte (128-bit) blocks depending on the variant.
For the 32-bit variant, each 4-byte block is multiplied by a constant (c1 = 0xcc9e2d51), rotated left by 15 bits, then multiplied by a second constant (c2 = 0x1b873593). The running hash is rotated left by 13 bits, multiplied by 5, and added with 0xe6546b64. After all blocks are processed, the remaining bytes (1-3) are handled separately, followed by a finalization step (fmix) that XORs the hash with its upper 13 bits, multiplies by 0x85ebca6b, XORs with the upper 13 bits again, multiplies by 0xc2b2ae35, and XORs with the upper 16 bits.
The 128-bit variants extend this approach using two or four parallel 32-bit lanes and larger rotation constants. The x64 variant is optimized for 64-bit processors and uses 64-bit multiply operations.
MurmurHash3 is used by Apache Cassandra for token-aware routing (Murmur3Partitioner), by HBase for region splitting, and by Google Guava's `Hashing.murmur3_32()` and `Hashing.murmur3_128()` methods. It is also the default hash in Boost.Hash for C++.
How to use this tool
- Select the MurmurHash3 variant from the dropdown (x86 32-bit, x86 128-bit, or x64 128-bit).
- Enter a seed value if you need a different hash for the same input (default is 0).
- Type or paste the text you want to hash into the input field.
- The hash value appears instantly in the output field. Copy it with the Copy button.
Real-world examples
Reproducing a Cassandra Murmur3 token
A Cassandra cluster using the Murmur3Partitioner assigns token ranges to nodes using MurmurHash3 x86 128-bit. A developer debugging partition distribution needs to compute the token for a specific partition key. Input: the partition key string. Output: a 32-character hex string representing the 128-bit token that determines which node owns the row.
Matching a Guava Hashing.murmur3_32 call
A Java developer uses `Hashing.murmur3_32(seed).hashString(input, UTF_8)` in a service and needs to verify the output from a browser-based tool. She selects the x86 32-bit variant, enters the same seed value, and pastes the same input string. The decimal output matches the Java int value returned by Guava.
Bloom filter hash function
A developer building a Bloom filter needs multiple independent hash functions. By using the same input with different seed values (0, 1, 2, ...), MurmurHash3 produces different hash values that can serve as the k hash functions for the Bloom filter. Input: 'user@example.com' with seeds 0, 1, 2 produces three different 32-bit values.
Comparison with similar methods
| Method | Complexity | Typical use |
|---|---|---|
| MurmurHash3 32-bit | O(n), multiply-rotate, 32-bit | Hash tables, Guava, Bloom filters |
| MurmurHash3 128-bit (x64) | O(n), parallel multiply-rotate, 128-bit | Cassandra, HBase partitioning |
| xxHash32 | O(n), faster than MurmurHash3 | Linux kernel, LZ4, Rust |
| CityHash64 | O(n), SIMD-friendly, 64-bit | Google internal, string hashing |
Limitations or considerations
MurmurHash3 is a non-cryptographic hash function. It is not designed to resist deliberate collision attacks. An attacker can find collisions efficiently, so do not use MurmurHash3 for security-sensitive purposes like password hashing, digital signatures, or tamper detection. For those use cases, use SHA-256 or BLAKE2. The 32-bit variant has a high collision probability for data sets larger than about 77,000 items (birthday bound at 2^16). The 128-bit variants are suitable for much larger data sets.
Frequently asked questions
Is MurmurHash3 deterministic?
Yes. For the same input and the same seed, MurmurHash3 always produces the same output. The seed allows you to generate different hash values for the same input, which is useful for multi-hash Bloom filters and consistent hashing with different partition counts.
What is the difference between x86 and x64 128-bit variants?
The x86 128-bit variant uses four 32-bit lanes and is optimized for 32-bit processors. The x64 128-bit variant uses two 64-bit lanes and is optimized for 64-bit processors. They produce different hash values for the same input. Cassandra uses the x86 128-bit variant.
Can I use MurmurHash3 for password hashing?
No. MurmurHash3 is not resistant to collision attacks and does not incorporate a salt or work factor. Use bcrypt, Argon2, or scrypt for password hashing.
Why does my MurmurHash3 value not match another tool?
Check the variant (32-bit vs 128-bit, x86 vs x64), the seed, and the encoding. Different implementations may handle UTF-8 encoding differently or use different endianness for the 128-bit output. This tool uses the murmurhash3js library, which matches the reference C implementation.
Conclusion
This MurmurHash3 tool covers all three variants with configurable seeds, matching the behavior of the murmurhash3js library. It is useful for reproducing hashes from Cassandra, HBase, Guava, or any system that uses MurmurHash3. For other fast non-cryptographic hashes, try the xxHash tool or the CRC64 Calculator.