Free Handy Tools

Hash Identifier

Try an example

Nothing you paste here reaches the address bar. A link to this tool carries only which example is loaded, never the value in this box.

Characters32
Alphabethexadecimal
Reading4 possibilities

Algorithms with this shape

4 possibilities

Listed in specification order, with no attempt to rank them — there is nothing in the digest to rank them by.

How this was worked out
  • Characters counted32 after trimming whitespace
  • Alphabet readevery character is hexadecimal
  • Narrowed bypublished output length: every algorithm that emits 32 hex characters
  • Left standing4 — MD4, MD5, NTLM, RIPEMD-128

Algorithms with this output length (4)

  • MD4128 bitsbroken

    Broken since 1995. Still reachable because NTLM is built on it.

  • MD5128 bitsbroken

    The overwhelmingly likely answer at 32 characters. Collisions are practical, so treat a match as evidence of an accidental change only.

  • NTLM128 bitspassword hash

    MD4 of the password encoded as UTF-16LE, with no salt and no iteration, which is why identical Windows passwords produce identical hashes.

  • RIPEMD-128128 bits

    A 128-bit member of the RIPEMD family. Uncommon in the wild.

A length is not an identification. Sixty-four hex characters is SHA-256 most of the time and SHA3-256, SHA-512/256, BLAKE2s-256 or Keccak-256 the rest of the time, and no examination of the string can separate them. This tool will not pick one for you, because picking one would be a guess wearing an answer’s clothes. What settles it is context: the tool that produced the value, the field it was stored in, or a matching digest you compute yourself. Where this tool is genuinely certain is the crypt formats, because those carry their own name — and even then it reads the name rather than the hash.

Identifying a hash is not reversing one, and this tool does neither lookups nor cracking. It makes no network request of any kind, so a hash pasted here is not submitted to a rainbow table, a breach database or anything else. If the value came from somewhere you do not control, treat it as somebody’s password material and handle it accordingly.

The worked examples below are in US dollars. The tool itself works in whichever currency you pick above, and never converts between them — what you type is what it does the arithmetic on.

All a bare digest reveals is its shape

A hash has no header, no version marker and no name attached. What survives the trip is a length and an alphabet, and several algorithms share both, so the only honest answer to "what produced this?" is usually a shortlist. This tool builds that shortlist from published output lengths and then refuses to rank it, because there is nothing in the string to rank it by.

That refusal is the feature. An identifier that answers "SHA-256" to every 64-character value is right most of the time and gives no way to notice the occasions when it is wrong, which are exactly the occasions that cost hours.

It is the reading half of a pair. The hash generator is the one that computes a digest from bytes you supply; this one goes the other way, from a value somebody handed you to the shortest honest list of things that could have made it.

The lengths, and who shares them

Hexadecimal is the common case, and the whole of the shortlist falls out of counting the characters.

Hex length against the algorithms that produce it
Hex charactersCandidates
32MD5, MD4, RIPEMD-128, NTLM
40SHA-1, RIPEMD-160, a MySQL 4.1 password hash with its leading asterisk removed
56SHA-224, SHA-512/224, SHA3-224
64SHA-256, SHA-512/256, SHA3-256, BLAKE2s-256, Keccak-256
96SHA-384, SHA3-384
128SHA-512, SHA3-512, BLAKE2b-512, Whirlpool

Two rows deserve a footnote. NTLM is MD4 of the password as UTF-16LE, which is why a plain 32-character value turns up in Windows credential dumps. And in the crowded 64-character row, Keccak-256 differs from SHA3-256 by a single byte of padding that changes every byte of the output, so the two are indistinguishable by shape and completely different in value.

Those lengths come from FIPS 180-4, FIPS 202, RFC 1321, RFC 7693 and ISO/IEC 10118-3 rather than from observation.

The formats that introduce themselves

Password hashes are the exception, because whoever verifies one has to know which function and which parameters to repeat. So they carry that information in front: $2a$, $2b$ or $2y$ for bcrypt in a fixed 60 characters, with the cost factor as a power of two in the two digits after it; $argon2id$ for the Argon2 of RFC 9106, with memory, time and parallelism written in as m, t and p; $6$ and $5$ for the SHA-512 and SHA-256 crypt variants in /etc/shadow; $1$ for md5crypt; $y$ for yescrypt.

Django puts the algorithm name before the first dollar instead, and LDAP wraps it in braces as {SSHA}. The registry of these prefixes is documented by Passlib, and where a prefix is present this tool states a name rather than a shortlist.

When the value is not hex

Plenty of digests travel in base64 instead, where the length arithmetic changes: a 32-byte digest becomes 44 characters with padding, a 20-byte one becomes 28. An HTML integrity attribute goes further and writes the algorithm in front, as sha256- followed by standard base64, making it one of the few self-labelling forms outside the crypt prefixes.

Base32 is a different signal again. Upper-case letters with the digits 2 to 7 and no others usually indicates a shared secret rather than a digest — an authenticator app seed is the common case, and that is key material to protect rather than a hash to name. The tool says as much instead of matching it against digest lengths that happen to line up.

What it will not do

It does not reverse anything, look anything up, or crack anything. There is no network request of any kind, so a value pasted here is not submitted to a rainbow table or a breach database — it is read in the page and forgotten. Identification and recovery are different problems, and only the first one is on offer.

It is also easy to mislead. A digest that has been truncated for a database column looks exactly like a shorter algorithm’s output. An encrypted blob, a random token or a TOTP seed in base32 all have the shape of a hash without being one.

What settles the question is context — the tool that wrote the value, or a digest you compute yourself and compare. The table above narrows the field; it cannot close it.

Shortlists, dollar prefixes and the case of hex

It lists five algorithms. How do I choose between them?

By looking outside the string. Find out what wrote it: a WordPress database, a Git object, an Ethereum address and a Linux checksum file each narrow it immediately. Failing that, hash a known input with each candidate and compare.

Can you recover the original input from the digest?

Not with this tool and not by any direct method, since a hash discards information on the way through. Predictable inputs can still be found by guessing them and comparing, which is a separate exercise entirely and one this page does not perform.

The value starts with a dollar sign and nothing matched.

Then it is very likely a crypt-format password hash from a scheme this tool does not carry. The convention is that the text between the first two dollar signs names the algorithm, so searching for that fragment usually identifies it.

Does upper-case hex mean something different?

No. Hex is a number written down, so case is presentation only and the digest is identical either way. Command line tools print lower case, which is the sensible form to normalise to before comparing two values.

Last reviewed 27 August 2026