About String Hash
String Hash prints two 32-bit non-cryptographic hashes of a piece of text side by side, plus a character count. The first is FNV-1a, which starts from a fixed offset basis and repeatedly combines each UTF-16 code unit with a prime multiplier, so it agrees with a standard byte-wise FNV-1a only for plain ASCII text. The second is the standard reflected CRC32 with the usual polynomial, seeded and inverted at the ends. Both come back as eight hex digits, each on a labelled line of its own.
Seeing the two together is the point: they fail in different ways, so a value that looks plausible in one is caught by the other often enough to make a quick fingerprint trustworthy. Both are deterministic, so the same text always gives the same pair. An empty input shows the machinery clearly - FNV-1a returns the untouched offset basis, and CRC32 returns all zeros.
Neither hash is a security primitive. Both are 32-bit and both are trivially collidable by design, so they belong in hash tables, cache keys and quick comparisons, never in signatures, tokens or anything derived from a password. The character count on the third line is also worth reading carefully: it counts JavaScript string units, so an emoji outside the basic plane counts as two rather than one.
How to use String Hash
- 1 Type or paste the text you want hashed.
- 2 Read the FNV-1a and the CRC32 lines as they update, both as eight hex digits.
- 3 Use the third line for the character count, remembering that it counts string units.
Frequently asked questions
Which of the two hashes should I use?
Neither is cryptographic. FNV-1a is fast and well spread for hash-table keys, and CRC32 is better at catching small accidental changes. If you need integrity against tampering, use SHA-256 instead - both of these are 32-bit and collide easily.
Why does an emoji count as two characters?
The count is the JavaScript string length, which counts UTF-16 units. Characters outside the basic multilingual plane - most emoji among them - occupy two units, so the number can exceed both a byte count and the number of characters you can see.
Why are the empty-input values not zero?
FNV-1a starts from a fixed offset basis, so with nothing to mix in it returns that constant. CRC32 is seeded and inverted at the ends, which cancels out to all zeros for an empty input. Both are correct for their algorithm.
Can I verify a hash I already have?
No. The tool only computes and prints; there is no second field to compare against and no choice of algorithm or output format. Copy the two values and check them wherever you need to.
Free, online, and private
Free to use
String Hash is completely free. There is no account to create, no login, and no hidden charge or usage limit.
Runs online in your browser
It is a free online tool that runs entirely in your browser. Nothing to download or install — open the page and start using it right away.
Your data stays private
All processing happens locally on your device. Your input is never uploaded, stored, or tracked, so it never leaves your browser.
How String Hash behaves in detail
These are the specifics of this implementation — the exact ranges, defaults and fixed settings you are working with.
| Parameter | Value |
|---|---|
| Input | one text panel, recalculated live on every keystroke; the sample reads Hello world |
| Output | three labelled lines - a FNV-1a value, a CRC32 value and a character count |
| FNV-1a | the 32-bit variant with the 0x811c9dc5 offset basis and the 0x01000193 prime, printed as eight hex digits |
| CRC32 | the standard reflected CRC with the 0xedb88320 polynomial, seeded with 0xffffffff and inverted on output, also eight hex digits |
| Empty input | an empty panel gives FNV-1a 811c9dc5, the untouched offset basis, and CRC32 00000000 |
| Length line | the count is the JavaScript string length, so a character outside the basic plane counts as two |
Compiled from the implementation of this tool and checked against it by itoolnet.
What String Hash does not do
Knowing the edges of a tool saves more time than another list of its features. These are the cases where it will not do what you might expect.
- Both values are 32-bit non-cryptographic hashes. They are fine for a hash table or a quick fingerprint and worthless against a deliberate collision - neither carries any security property, and neither should be used as a signature, a token or anything derived from a password.
- The character count is in UTF-16 units, not characters and not bytes. Most emoji and many rare ideographs count as two, so on text containing them the number disagrees with both a byte count and a plain count of what a reader sees.
- The pair of algorithms is fixed and there is nothing to compare against. Nothing else is on offer, no output format can be chosen, and the tool cannot tell you whether a given hash matches a value you already have - it only prints numbers to paste elsewhere.
Tested and documented by itoolnet, the team that builds and maintains this site.