Identify a Hash Type — Free Algorithm Detector

Not sure what kind of hash you're looking at? Paste it into the Hash Type Identifier and it checks the string's length, character set, and prefix against the signatures of common algorithms — MD5, SHA-1, SHA-256, SHA-512, bcrypt, Unix crypt, Argon2, and more — and tells you the most likely match. It's a quick way to work out which algorithm produced a hash you found in a database dump, config file, or old script. Everything is checked in your browser, so the hash itself never leaves your device.

Ever stared at a long string of seemingly random characters and wondered which hash type identifier you need to make sense of it? Whether you're knee-deep in a data exposure investigation, migrating an access control system, or just trying to identify unknown hashes pulled from a compromised database, knowing the algorithm behind that string is the critical first step — it determines whether those stored login values are recoverable in seconds or practically impenetrable. Paste your input above and let this tool surface the most likely candidates with honest ambiguity handling, so you can move straight to the action that matters.

What a Hash Type Identifier Does — And How It Works

Defining Hash Type Detection

A hash identifier is one of the essential security tools used in cryptography and cybersecurity to determine which algorithm most likely produced a given output. A cryptographic algorithm is a deterministic application that maps an arbitrary input of any size to a fixed-length output — the hash, sometimes called a digital fingerprint or checksum. Unlike encryption, which is reversible through decryption, these one-way functions cannot be reversed — making algorithm identification a structural exercise rather than a content one. In modern computing, several hundred algorithms exist across different families, each leaving its own recognizable structural fingerprint. The type of hash you are dealing with shapes every downstream decision: which cracking tool to load, how urgent the remediation is, and whether the password hashes were ever protected properly in the first place. Identification relies on structural clues rather than content analysis, which is why it produces probabilistic results rather than guaranteed matches. This approach is sometimes called format recognition or algorithm detection.

How the Hash Identification Process Works

The hash analysis engine applies a layered analysis strategy drawn from a curated hash database of format signatures — similar in concept to the Haiti database developed by Orange Cyberdefense under an MIT license. When you submit a value, the tool examines three primary signals in sequence:

  • Character length: The output length narrows the candidate pool immediately. A 32-character hex string points toward MD5, NTLM, or the MD4 family; a 64-character hex string points toward the 256-bit SHA-2 variant; a 128-character hex string is consistent with the 512-bit SHA-2 output.
  • Character set and format: The hexadecimal charset (digits 0–9, letters a–f) is typical of MD5, the SHA family, and NTLM. A base64 charset — uppercase, lowercase, digits, +, and / — appears in formats like bcrypt's payload segment and some PBKDF2 outputs.
  • Prefix identification: Structured formats carry a modular prefix that acts as an unambiguous format signature. The dollar sign delimiter used in the modular crypt format separates version, cost, salt, and output fields cleanly.

The tool compares the given string against known patterns for each algorithm stored in its signature database, then produces candidates ranked by how closely the structural evidence matches each algorithm's known profile. This is heuristic detection, not content-level cryptographic analysis — the tool cannot verify whether the value is a valid output of any specific algorithm, only whether its structure is compatible with that algorithm's known profile.

Understanding Probabilistic Identification and Its Limits

Because many algorithms share identical length and character distributions, probabilistic identification is the only honest approach. The tool surfaces confidence levels rather than a single forced match. Honest ambiguity handling — listing every plausible candidate alongside its identification confidence — is far more useful than a single confident wrong answer when you are working through an investigation workflow. Missing even one plausible candidate could mean loading the wrong mode in your recovery tool or misclassifying a stored credential file. Take the candidate list as your starting point, then use contextual evidence to narrow it down.

Recognized Algorithm Signatures — A Hash Type Identifier Reference

MD5 Hashes and the 32-Character Hexadecimal Ambiguity Problem

The MD5 algorithm produces a 128-bit output, rendered as exactly 32 lowercase hexadecimal characters. It is one of the most widely encountered algorithms in legacy systems, database exports, and checksums. The MD4 family and legacy MD2 share this same 32-character format, as does NTLM — making all four visually identical when stripped of context. MySQL MD5 and WordPress MD5 also follow this format, as do certain forum password stores. The md5-crypt variant used in older Linux systems is different: it carries a $1$ prefix that immediately distinguishes it from a raw MD5 hex output.

Example MD5 hash:

5f4dcc3b5aa765d61d8327deb882cf99

This is the MD5 of the string password — a 32-character hex output with no prefix. You cannot determine from the string alone whether it is MD5, NTLM, or one of the legacy 128-bit variants. That is the core ambiguity problem. The originating system — whether it is a Windows Active Directory dump or a web application database — is often the decisive contextual clue.

SHA-1, SHA-2 Family, and the SHA-512 Reference Table

The SHA family spans several generations. SHA-1 (also referred to as SHA128 or sha1 in some tools) produces a 40-character hexadecimal representation, equivalent to 160 bits. It is considered deprecated in modern practice due to known collision attacks that have been demonstrated in production contexts. The SHA-2 family — including the 256-bit and 512-bit variants — remains the backbone of modern cryptography. The 256-bit variant outputs 64 hex characters; the 512-bit variant outputs 128 hex characters. SHA-3 uses a sponge construction fundamentally different from SHA-2 internally but produces the same output lengths, so length-based detection cannot distinguish SHA-2 from SHA-3 without additional context. Common shorthand forms like SHA2 and sha512 appear frequently in tool documentation and recovery tool mode lists.

Example SHA-256 hash:

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

That is 64 hexadecimal characters — unambiguously within the 256-bit output length range, though technically the SHA-512/256 truncated variant could also match. Context and algorithm compatibility checks resolve it.

bcrypt, Argon2, scrypt, and PBKDF2 — Adaptive Prefix-Structured Hashes

Adaptive algorithm formats are the easiest to identify precisely because they embed their identity directly in the string. bcrypt always begins with a $2b$ prefix (or the older $2a$), followed by the cost factor, the inline salt, and the output — all delimited by the separator $. The total string is 60 characters long. Argon2 uses a $argon2id$ prefix (or $argon2i$ / $argon2d$) followed by version, memory cost, round count, parallelism, salt, and hash, all structured with $ delimiters — making algorithm identification completely unambiguous. scrypt similarly encodes its parameters in the string header. PBKDF2 outputs vary by implementation but typically appear as a base64-encoded output prefixed with round count and salt fields.

Example bcrypt hash:

$2b$12$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Here, 2b is the version, 12 is the cost factor (2¹² = 4,096 iterations), and the remaining 53-character payload encodes both the salt and hash in a modified base64 format. The payload length and structure make this one of the most reliably identifiable algorithm structures in existence — no ambiguity handling required.

NTLM and Windows Hash Formats

The NTLM hash is a 32-character hexadecimal output derived from the RC4-based cryptographic function used in Windows access verification. Like MD5, it produces a 32-character hex string with no prefix, which is why the two are the classic example of detection ambiguity. A key difference is that NTLM outputs are unsalted, making them highly vulnerable to rainbow table lookups and pass-the-hash attacks. When a Windows credential value appears in a leaked file, the surrounding context — domain controller logs, SAM database provenance, or the NTLM: field label in a dump file — is usually the only reliable way to distinguish it from an MD5. Without that context, a good hash identifier tool should list both as candidates with equal plausibility.

Checking Hash Length to Narrow Algorithm Candidates

The output length is your first triage step. Every algorithm produces a fixed-length output regardless of arbitrary input size — that is a defining property of one-way functions. The bit length and the corresponding byte length translate directly into predictable character counts in hexadecimal or base64 representations. Use the table below as a reference when you need to determine the algorithm by length alone.

AlgorithmOutput Length (bits)Hex CharactersCharacter SetPrefix Example
MD5 / MD4 / MD2 / NTLM12832Hexadecimal (0–9, a–f)none
MD5-Crypt12822 (base64 payload)Modified base64$1$
SHA-116040Hexadecimalnone
SHA-256 (SHA-2)25664Hexadecimalnone
SHA-512 (SHA-2)512128Hexadecimalnone
bcrypt184 (effective)60 chars totalModified base64$2b$
Argon2idVariableVariable (base64 encoded)Base64 + delimiters$argon2id$
sha-crypt SHA-51251286 (base64 payload)Modified base64$6$
PHPS12837 chars totalHexadecimal + $$P$
Oracle SHA-Crypt256VariableBase64S:

Analyzing Character Set and Base64 Encoding

After checking length, analyze the alphabet used in the submitted value. A pure hexadecimal string contains only characters from the set [0-9a-f]. If you see uppercase letters beyond F, lowercase letters beyond f, or characters like +, /, or =, the value uses a base64 output or a modified variant. The character distribution test is particularly useful for catching base64-represented values that have been mistakenly treated as raw hex. Base64-represented outputs will always appear longer than their bit equivalent in raw bytes, and they may include padding characters (=) at the end. Tools performing format recognition scan for these anomalies as a secondary signal after length. Some formats use a proprietary modified base64 that excludes standard padding — bcrypt's payload is a well-known example of such a custom scheme.

Detecting Prefixes and Structured Hash Markers

Identifying leading markers is the most reliable single method when the structured prefix is present. The modular crypt format used by Unix/Linux systems encodes algorithm identity in a $6$ prefix for sha-crypt SHA-512, $1$ for the Linux md5-crypt scheme, $5$ for sha-crypt SHA-256, and $2b$ for bcrypt. The $argon2id$ prefix uniquely identifies Argon2id. These specific prefixes act as a self-describing hash fingerprint, eliminating the need for length-based guessing. The sha-crypt format also embeds the salt visibly between delimiters, which aids in salt detection and salt pattern analysis. Here is a real sha-crypt SHA-512 example to illustrate how to parse a fully structured salted hash:

$6$Pl3m5Y95$t3Nk4zEXTCXDP4Vs4cL0p0...

Breaking this down:

  1. $6$ — the algorithm identifier; 6 maps to sha-crypt SHA-512 in the linux crypt / unix crypt system.
  2. Pl3m5Y95 — the salt segment, appearing between the first and second delimiter characters.
  3. t3Nk4zEXTCXDP4Vs4cL0p0… — the actual output, represented in the modified base64 base64 charset used by crypt().

This $6$ prefix makes algorithm identification definitive — no ambiguity, no guessing required. The oracle sha-crypt and forum-based phpBB schemes use similarly recognizable markers that a good hash type analyzer will detect automatically.

Contextual Clues and Caveats When Identifying Hash Values

Even the best hash type identifier cannot resolve every ambiguity from the string alone. When characters and length match multiple algorithms — as they do for MD5, NTLM, and the MD4 family — the database field name, the application stack, and the originating platform become your most valuable evidence. A 32-character hex string in a Windows SAM dump is almost certainly NTLM; the same string in a PHP application database is far more likely to be MD5. Context-aware detection that incorporates this metadata produces far more accurate results than length-only analysis. Additionally, watch for truncated hash values — some pipelines clip outputs to save storage, producing a value shorter than the algorithm's canonical output. A result that has been base64-re-encoded after generation will also appear misleading to a pure length-based detector. In both cases, the byte length and character distribution will be inconsistent with any standard algorithm, signalling possible transformation. Always verify your top candidate against known test vectors before committing to a recovery or rehashing workflow.

Why This Hash Identifier Tool Matters in Security and Forensic Workflows

Forensics and Incident Response

In digital forensics and investigation workflows, the first question after discovering a credential dump is always: what algorithm generated these? The answer dictates triage priority. A password hash produced by a weak algorithm like raw MD5 or NTLM is recoverable — attackers can run a rainbow table attack or brute-force attack against it with commodity hardware. An Argon2 or bcrypt output, by contrast, is an adaptive algorithm result with a configurable cost factor that makes bulk recovery economically impractical. Analysis teams use this online tool to classify candidates at scale during a data exposure investigation — often processing entire export bundles from compromised systems — before routing them to the appropriate recovery mode or forensic log. Provenance tracking relies on logging both the identified algorithm and the identification confidence so that analysts can reconstruct decision chains during documentation. For file-level work, the same approach verifies consistency by confirming that a file's output matches a known-good baseline, a core step in malware investigation.

Threat Intelligence Applications

In threat intelligence workflows, recognition of the algorithm feeds directly into downstream decisions. When compromised login values surface in a data leak, the algorithm determines the exposure risk timeline — a salted password protected by bcrypt buys considerably more time than an unsalted MD5. Threat signatures shared across organizations often include file outputs; knowing whether a shared value was computed with a 256-bit or older 160-bit SHA variant affects format compatibility with receiving platforms. Cross-platform threat sharing standards like STIX/TAXII specify algorithm alongside hash value, so algorithm compatibility verification is a mandatory step before ingestion. In penetration testing and infosec engagements, identifying algorithm variants extracted from API token headers or config files informs the attack path — a PBKDF2 value in an API response requires a fundamentally different approach than a raw checksum. The tool integrates naturally into this broader forensic workflow, alongside solutions for password auditing and compliance reporting.

Protective Implications of Weak Versus Strong Hash Algorithms

The gap between a fast one-way function and an adaptive scheme is enormous. Vulnerable fast outputs and deprecated algorithms like raw MD5 offer almost no practical resistance to modern hardware: a single GPU can compute billions of MD5 outputs per second, making dictionary attacks and rainbow table lookups trivially fast against unsalted databases. Collision attacks further undermine MD5 and the older SHA-1 for verifying consistency — two different files can produce the same output, breaking the verification guarantee. A modern algorithm like the 256-bit or 512-bit SHA-2 variant is collision-resistant and suitable for checksums and file consistency checks, though still not appropriate for password storage because raw speed enables brute force attacks. Only adaptive schemes — bcrypt, Argon2, scrypt, PBKDF2 — with their tunable work factors and mandatory salt provide genuine protection. Recognizing a deprecated algorithm immediately signals the need for account remediation and rehashing before a data exposure can leverage it. Identity management policies in compliant organizations must account for this distinction during database and access control migration projects — misidentifying a variant can silently weaken protection or lock users out during the transition.

Handling Salted and Modified Hashes Accurately

A salted hash embeds random data (the salt) alongside the output to ensure that two users with identical passwords produce different stored values. Structured formats like bcrypt and Argon2 store the salt inline, making it trivially parseable from the prefix structure. For legacy systems using a proprietary scheme or ad-hoc crypt() implementation, the salt position, byte position, and delimiter character may need to be inferred from the application's source code or documentation. An export bundle from an application that prepends or appends the salt will produce a longer-than-expected string, which can mislead a naive length-based detector. Similarly, an output that has been base64-re-encoded after generation changes the apparent length and character set entirely — you must decode the base64 layer before running identification. Always inspect the payload length and check whether the result after decoding resolves to a known canonical output length. If it still does not match, you may be dealing with a variant or a custom implementation that requires updating the local signature database with new detection rules.

Identify Unknown Hashes Across CTF, Security Exams, and Learning Contexts

Beyond professional work, the need to detect an unknown hash and identify a hash type arises in CTF competitions, geocaching puzzles, informatics coursework, and exam preparation. A recognizer that supports 350+ algorithms and covers obscure variants — including formats like PHPS and oracle sha-crypt — dramatically accelerates learning. Whether you are analyzing example inputs for an exercise, working through textbook examples, or submitting samples from a batch file analysis, the workflow is the same: paste your value, review candidates, apply context. This use case also illustrates why some analysts need to decrypt hashes or at least positively identify them before attempting any recovery — knowing the algorithm is a prerequisite. For educators and students, the ability to enter a hash and see a ranked list of candidates with structural reasoning builds intuition about how values are formed and how an unknown hash can be narrowed down. The tool works entirely in-browser with no upload required, delivering instant results for both single and batch submissions across multiple lines — a genuinely browser-based experience that respects the sensitivity of the login values you are analyzing.

Understanding the Core Worked Examples

Example 1 — The 32-character MD5 / NTLM ambiguity:

5f4dcc3b5aa765d61d8327deb882cf99

This 32-character hex string matches MD5, NTLM, and the legacy 128-bit family simultaneously by length and character set alone. If it comes from a web application database field storing user passwords, MD5 is the most probable match and warrants urgent remediation. If it appears in a Windows domain controller dump, NTLM is the safe assumption and pass-the-hash mitigations should be applied immediately. This is the clearest demonstration of why length alone is insufficient and why identification workflows must incorporate contextual clues.

Example 2 — bcrypt with $2b$ prefix:

$2b$12$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

The $2b$ prefix makes algorithm identification unambiguous. Version 2b, cost factor 12, and a 53-character modified-base64 payload encoding both salt and output. There is no ambiguity to handle; this is bcrypt, an adaptive algorithm with protection properties that far exceed any fast one-way function. A good analyzer should return this result at maximum confidence level.

Example 3 — sha-crypt SHA-512 with $6$ prefix:

$6$Pl3m5Y95$t3Nk4zEXTCXDP4Vs4cL0p0...

The $6$ prefix identifies this as sha-crypt SHA-512 — the linux crypt format also used by unix crypt on Linux systems. Pl3m5Y95 is the salt, extracted between the two $ delimiter characters. The remainder is the 512-bit output represented in modified base64. This is a salted password scheme that is significantly more resistant to recovery than a raw unsalted output because of the embedded salt and work structure. The structural fingerprint is complete and self-describing — no guessing needed to parse the fields.

Across all three examples — raw MD5, prefixed bcrypt, and structured sha-crypt — the same principle applies: combine output length, character set, and prefix signals, then layer in contextual evidence from the originating system. That layered analysis approach is what distinguishes a reliable hash type identifier from a simple length-lookup table. Use it as your online tool to identify a hash type quickly: submit the value, let the hash to be identified surface its candidates, then apply context to confirm. Whether you are working on password storage audits, access control migrations, credential storage reviews, or exposure triage, the ability to analyze values quickly and accurately — including readiness assessment via risk level indicators — keeps your workflow moving in the right direction. Just as a cipher recognizer maps ciphertext to its scheme, this tool maps your value to its most probable generating algorithm, giving you the foundation for every step that follows — from recovery tool configuration to verifying outputs against authoritative sources and re-protecting them with a modern algorithm going forward.

Frequently Asked Questions

Can this tool tell me the exact algorithm with certainty?
Not always -- many algorithms produce identically-sized output (MD5 and NTLM are both 32 hex characters; SHA-256 and SHA3-256 are both 64), so length and character set alone can't always distinguish them. When a hash has a clear format prefix (like bcrypt's $2b$ or Argon2's $argon2id$), identification is high-confidence; plain hex digests are narrowed to a shortlist of possibilities instead.
Why does a 32-character hex string match both MD5 and NTLM?
Both algorithms produce a 128-bit (16-byte) digest, which is always 32 hex characters regardless of algorithm. There's no structural difference in the output itself -- you'd need to know the context it came from (a Windows SAM database vs. a general-purpose hash) to tell them apart.
What does the $2b$ prefix in a bcrypt hash mean?
It identifies the bcrypt variant (2a, 2b, 2x, and 2y all exist for historical reasons around a padding bug fix), immediately followed by a two-digit cost factor and then the salt and hash digest together, Base64-encoded in bcrypt's own alphabet. This structure is unique enough that bcrypt hashes are always identified with high confidence.
Is my hash sent anywhere to be identified?
No. Identification runs entirely in your browser using pattern matching against known formats -- nothing is transmitted, logged, or stored.
What should I do once I know the hash type?
If it's a fast, unsalted hash like plain MD5 or SHA-1 used for passwords, that's a red flag -- those algorithms are unsuitable for password storage and should be migrated to bcrypt, scrypt, or Argon2. If you need to verify a password against a bcrypt hash specifically, use the Bcrypt Hash Verifier.