Bob Jenkins · classic · non-cryptographic
Bob Jenkins' one-at-a-time hash — a classic, simple non-cryptographic hash function. Used in many older hash table implementations. Also includes Jenkins lookup3. Pure JavaScript.
Input text box — the hash appears instantly in the Jenkins hash display.One-at-a-time or Lookup3 tabs above the input.0x followed by eight uppercase hex digits — a 32-bit hash.Copy to copy the full hash, including the 0x prefix, to your clipboard.Clear to empty the box and start over.One-at-a-time was a standard choice in many classic hash tables. Hash a test key and compare against the value your own code produces.
Confirm your Jenkins hash output matches the canonical result for a known string, so you can spot off-by-one or mixing bugs.
Non-cryptographic hashes are fast. Use them for deduplication, sharding, or quick equality checks — not for security.
Switch tabs to see how the two algorithms produce different 32-bit outputs for the same input and how their mixing differs.
Follow the add, XOR, and bit-shift steps of one-at-a-time and the extra mixing rounds of lookup3 on real inputs.
Everything runs in your browser. Nothing is uploaded, logged, or sent to a server.
A family of non-cryptographic hash functions by Bob Jenkins. This tool implements the classic one-at-a-time hash and lookup3.
No. Jenkins hashes are fast and simple but not designed for security. Never use them for passwords, MACs, or anything adversarial — use SHA-256 or similar instead.
One-at-a-time runs Bob Jenkins' original OAAT hash. Lookup3 runs the lookup3 hash with its extra mixing rounds. Both produce a 32-bit value.
Both algorithms return a 32-bit hash, and eight hex digits exactly represent 32 bits. The 0x prefix marks the value as hexadecimal.
One-at-a-time mixes each byte with simple add, XOR, and shifts — it's simple but has poor avalanche for short keys. Lookup3 adds several mixing rounds for better distribution.
This tool uses the default seed of 0 for lookup3; one-at-a-time takes no seed. If you need a custom seed, apply the same input transform in your own code.
Never. All hashing happens locally in JavaScript. Your input is not sent to, stored on, or logged by any server.