Forked from https://github.com/sindresorhus/fnv1a and ported to CommonJS. (I really want to move to ESM, but my work has a couple projects that just aren't ready for it yet. 😢)
FNV-1a non-cryptographic hash function
FNV-1a has outstanding distribution and collisions are rare.
FNV hashes are designed to be fast while maintaining a low collision rate. The FNV speed allows one to quickly hash lots of data while maintaining a reasonable collision rate. The high dispersion of the FNV hashes makes them well suited for hashing nearly identical strings such as URLs, hostnames, filenames, text, IP addresses, etc.
$ npm install @sindresorhus/fnv1a
import fnv1a from '@sindresorhus/fnv1a';
fnv1a('🦄🌈', {size: 32});
//=> 2868248295n
fnv1a('🦄🌈', {size: 128});
//=> 13487074350300261116944693128525960095n
Number(fnv1a('🦄🌈', {size: 32}));
//=> 2868248295
Returns the hash as a positive BigInt
.
If you need it as a number
, use 32
as size
and wrap the return value in Number(…)
.
Type: object
Type: number
Values: 32 | 64 | 128 | 256 | 512 | 1024
Default: 32
The bit size of the hash.