Hash Identifier

Paste a digest and get every algorithm that produces that length, rather than a guess at one. SHA-256, SHA3-256 and BLAKE2s-256 are all 32 bytes, and nothing inside a digest says which produced it.

Paste below, or drop a file anywhere on this panel

Or drop a file anywhere on this panel. Nothing is uploaded: the analysis runs in this tab.

The answer appears here

Paste on the left and press Identify. Nothing leaves this tab.

Examples

Real input you can load into the tool above. Each one shows a different thing going wrong, because that is what the tool is for.

A 32-byte digest

Four algorithms produce this length and the digest carries nothing to say which

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

A 16-byte digest

MD5, MD4 and NTLM share this length, and all three are broken

d41d8cd98f00b204e9800998ecf8427e

Common mistakes

These are the ones that fail silently. The config is accepted, nothing raises an error, and the consequence arrives later.

  1. Treating a digest length as an identification

    Four common algorithms produce 32 bytes and are not interchangeable. Naming one is picking the most popular and hoping.

    Instead:Get the algorithm from the source: a published checksum states it, and a database column has it in the code that wrote it.

  2. Looking for a way to decode a hash

    A digest is a fixed size regardless of input, so information is destroyed by construction. Decoder sites run a precomputed table of common inputs, which works for weak passwords and never for a long random string.

    Instead:If a leaked digest is unsalted and the input was low-entropy, treat it as disclosed. Otherwise the lookup approach does not apply.

  3. Treating MD5 as urgent everywhere it appears

    Broken means collision resistance: an attacker can produce two inputs with one digest. That destroys signatures and does not affect detecting accidental file corruption.

    Instead:Migrate signatures and integrity claims. A non-adversarial checksum is not worth a migration on its own.

Length narrows the field. It never identifies the algorithm

The output of a good hash is indistinguishable from random, which is exactly why it carries no metadata about how it was produced.

Why a single answer would be a lie

Four common algorithms produce 32 bytes and are not interchangeable. Two produce 20. Four produce 64. A tool that names one is picking the most popular and hoping. The useful answer is the whole candidate set plus where to look to narrow it: a published checksum states its algorithm, and a database column has its algorithm in the code that wrote it.

A hash cannot be decoded

A digest is a fixed size regardless of input size, so information is destroyed by construction and there are infinitely many inputs for any output. What a hash decoder site does is look the digest up in a precomputed table of common inputs. That works for a weak password and never for a long random string, and the difference is what tells you whether a leaked digest is a problem or a non-event.

Which lengths are broken, and what broken means

MD5 has had practical collisions since 2004 and chosen-prefix collisions since 2019. SHA-1 had a chosen-prefix collision demonstrated in 2017. Broken here means collision resistance: an attacker can produce two inputs with the same digest. That destroys signatures and integrity claims against an adversary, and it does not affect using MD5 to detect accidental file corruption, which is why it is still everywhere and why a migration is not automatically urgent.

Base64 digests look nothing like hex ones

The same 32 bytes is 64 hex characters or 44 base64 ones. Storing digests base64 is common because it is shorter, and it is why a familiar digest can arrive looking like an unfamiliar string. The byte count is the thing to compare.

A structured password hash is a different question

Anything starting with a dollar sign carries its own algorithm identifier, cost parameters and salt, so there is nothing to infer. That is the entire point of modular crypt format, and the password hash inspector reads it properly.

What this cannot see

The algorithm, because it is not in the digest. It computes nothing: it reads the string you paste, in your browser, and never sends it anywhere. If you need to confirm a candidate, hash a known input with each and compare.