What is FNV-1a and what is it used for? ▾
FNV-1a (Fowler-Noll-Vo, variant 1a) is a fast, non-cryptographic hash function designed by Glenn Fowler, Phong Vo, and Landon Curt Noll. It is commonly used in hash tables, bloom filters, and other data structures where speed matters and cryptographic security does not. The 32-bit variant produces an 8-character hex hash; 64-bit and 128-bit variants also exist. FNV-1a has good distribution properties and is extremely simple to implement.
How do I calculate an FNV-1a hash online? ▾
Paste text into the input box on this page. The 8-character hex FNV-1a hash appears instantly. This tool implements the 32-bit FNV-1a variant — the most commonly used version.
Is FNV-1a a cryptographic hash? ▾
No. FNV-1a is a non-cryptographic hash designed for speed in hash tables, not security. It is easy to find collisions, and an attacker can craft inputs with predictable hash values (which can cause denial-of-service in hash tables by forcing worst-case collision behavior). For security applications, use SHA-256.
FNV-1 vs FNV-1a: what's the difference? ▾
FNV-1 multiplies the current hash by the FNV prime, then XORs with the input byte. FNV-1a does the operations in the opposite order: it XORs with the byte first, then multiplies by the FNV prime. FNV-1a generally has slightly better distribution properties on real-world inputs, particularly when small variations in the input matter. FNV-1a is the more commonly recommended variant.
How fast is FNV-1a? ▾
FNV-1a is one of the fastest non-cryptographic hash functions: typically 1-2 GB/s on a modern CPU in pure software. It is faster than CRC-32 in software (without hardware acceleration) and much simpler — the entire algorithm fits in a few lines of code. This makes it ideal for hash tables, bloom filters, and compile-time hashing.
Where is FNV-1a used? ▾
FNV-1a is widely used in: compiler internals (LLVM, GCC use FNV variants), bloom filters and probabilistic data structures, hash tables in many programming languages and libraries, content-defined chunking in deduplication systems, and quick file content fingerprinting where security isn't a concern.
How long is an FNV-1a 32-bit hash? ▾
FNV-1a 32-bit produces a 32-bit (4-byte) hash, displayed as 8 hexadecimal characters. The empty string has FNV-1a 32 = 811c9dc5 (this is the FNV offset basis). FNV-1a 64-bit (16-char hex) and 128-bit (32-char hex) variants are also defined for applications needing longer hashes.