About this MurmurHash3 generator
MurmurHash3, by Austin Appleby, is one of the most widely used non-cryptographic hash functions. It is fast, spreads keys evenly, and appears in Cassandra, Hadoop, Elasticsearch, Guava, Redis tools, and many Bloom filter libraries. There are three standard variants: x86_32 gives a 32-bit hash; x86_128 gives 128 bits using 32-bit arithmetic; and x64_128 gives 128 bits optimized for 64-bit processors. The two 128-bit variants give different results for the same input. All of them take a 32-bit seed, so the same data can be hashed in independent ways. Text is read as UTF-8, and the 128-bit results are written as the reference code’s numbers (h1 then h2), the form used in its published test values.
How to generate a MurmurHash3
- Enter your text. Type or paste text, import a text file, or press an example.
- Set the seed. Leave 0 for the usual default, or enter the seed your application uses.
- Press Generate MurmurHash3. Copy the variant and format you need. The 32-bit result also shows the signed value used by Java and some databases.
Frequently asked questions
Which variant should I use?
Use whichever your system uses, as they are not interchangeable. x86_32 is common in hash tables and partitioning; x64_128 is the usual 128-bit choice, for example in Guava and Cassandra.
What does the seed do?
It changes the starting state, so the same text gives a completely different hash with each seed. Bloom filters use several seeds to get several independent hashes.
Why does my 32-bit result show a negative number elsewhere?
Some languages, such as Java, store the 32-bit hash as a signed integer. The signed decimal shown here matches that, while the hex value is the same either way.
Is MurmurHash3 secure?
No. It is built for speed and even distribution, and collisions can be created deliberately. Use a cryptographic hash such as SHA-256 when security matters.
Why do 128-bit results differ between libraries?
Libraries print the result in different byte orders. This tool writes the two halves as numbers, h1 then h2. Guava and Python’s mmh3.hash_bytes print the raw little-endian bytes instead, which reverses the byte order within each half.