This tool runs entirely in your browser. Nothing you paste is uploaded.
How you can check →Hash Generator
Security & HashingEvery hash of your text at once — hex, base64 or base64url — computed twice and cross-checked against the browser's own crypto, with the exact bytes it hashed shown alongside.
Output
Hex case
Type or paste anything above to see every algorithm's digest, updated as you type.
| Algorithm | Status | Digest | Actions |
|---|---|---|---|
| Broken for signatures |
····
|
||
| Broken for signatures |
····
|
||
| Cryptographic |
····
|
||
| Cryptographic |
····
|
||
| Cryptographic |
····
|
||
| Cryptographic |
····
|
||
| Cryptographic |
····
|
||
| Cryptographic |
····
|
||
| Checksum, not a hash |
····
|
||
| Checksum, not a hash |
····
|
||
| Checksum, not a hash |
····
|
All algorithms (SHA-3, Keccak, BLAKE2, BLAKE3, RIPEMD-160, Whirlpool, xxHash, MD4, NTLM)
Loading extra algorithms…
Bytes hashed
Byte count: 0
Charset: UTF-8
First bytes: —
Last bytes: —
Line endings
Unicode normalization
Equivalent command
printf '' | sha256sum
Equivalent command or code, other languages
No known tool or library for the pinned algorithm has an equivalent command — pin a different algorithm above to see one.
Have a file instead of text? File hashing needs a different, streaming engine — that's the file checksum tool. Need to sign a message with a secret key? See the HMAC generator.
Paste a digest above to see every hash type it could plausibly be, ranked by how well its length and alphabet fit — never a single confident guess.
No network activity while you use this tool Show the numbers
- Requests to any other server
- 0
- Requests since you started typing
- —
- Same-origin requests
- 0
Counted live by your browser's own Performance Timeline — the same data the DevTools Network panel reads. It cannot see what a browser extension does, and it is not meant to replace checking for yourself: here is how, in thirty seconds .
What a hash is, and what it isn't
A hash function takes any input — a word, a file, this whole paragraph — and produces a fixed-length string called a digest. The same input always produces the same digest, a tiny change to the input produces a completely different one, and (for a well-designed algorithm) there is no way to run the process backwards. That last point matters: a hash is not encryption. Encryption is reversible with the right key; hashing is one-way by design. Sites that claim to "decrypt" an MD5 hash are not reversing the algorithm — they are looking your digest up in a precomputed table of common inputs, which only works if your input was common enough to be in the table.
The trailing newline: the most common "wrong answer" report
The single most common reason a web tool's hash doesn't match a terminal command is a
character neither tool shows you. Run echo "hello" | sha256sum and compare it
with printf "hello" | sha256sum — they differ, because echo appends
a trailing \n and printf does not. Both answers are "correct"; they
are just answers to two different questions about two different byte strings. This page's
byte-exactness panel shows the exact byte count and a hex preview of the first and last bytes,
with a toggle for the trailing newline, so you can see — and reproduce — exactly which bytes
went in.
SHA-3 is not Keccak
SHA3-256 and Keccak-256 share the same underlying permutation and differ only in one
domain-separation byte in the padding (0x06 for the NIST standard versus
0x01 for the original, pre-standard Keccak). That single-byte difference produces
two completely different digests for the same input. Ethereum's keccak256 uses
the pre-standard padding, and several online tools mislabel its output "SHA3-256" — a wrong
answer shipped as a feature. This tool computes and labels both separately.
Which algorithms are broken, for what
MD5 and SHA-1 both have practical, demonstrated collision attacks: an attacker can construct two different inputs with the same digest. That makes both unsafe for anything adversarial — a certificate, a digital signature, a software-integrity check where someone might want to forge a match. Neither is broken for a non-adversarial use, like a cache key or a checksum against accidental corruption, which is why this page states each algorithm's real status rather than a blanket "insecure" label or silence.
Why a checksum is not a hash
CRC-32, CRC-32C, Adler-32 and xxHash are checksums, not cryptographic hashes: they are built for speed and for catching accidental corruption, and none of them resists a deliberate attacker who wants to produce a matching value on purpose. Using a checksum where a cryptographic hash is required is a real security bug, so this page always labels a checksum as a checksum, never as a hash.
How to identify a digest
A digest's length narrows things down but rarely to one answer. 32 hex characters could be
MD5, MD4, NTLM, a truncated longer hash, or a UUID with its dashes stripped — five genuinely
different things that are all 128 bits long. The Identify tab above returns every plausible
candidate with the evidence behind it (length, alphabet, any recognisable prefix like
bcrypt's $2b$) rather than guessing at one, because presenting a guess as an
answer is exactly the kind of overconfidence this site exists to avoid.
Why everything here is computed twice
For SHA-1, SHA-256, SHA-384 and SHA-512, this page runs our own hand-written engine and the
browser's separately-written crypto.subtle implementation on the same bytes, then
compares the two. Agreement between two independent implementations — one of them the browser
vendor's own, audited by people who are not us — is real evidence the digest is correct. For
algorithms the browser can't compute natively, the page instead runs that algorithm's own
official test vectors in your tab the first time you use it, and reports the result rather
than showing a badge we simply drew.
Common use cases
- Checking that a piece of text or a short string matches a known digest
- Generating a cache key, an ETag, or a non-adversarial content fingerprint
- Learning why a hash computed here doesn't match a terminal command, byte for byte
- Telling SHA3-256 apart from Keccak-256 for an Ethereum-adjacent task
- Guessing what type of digest a pasted string is, with the evidence shown
Frequently asked questions
- Why is my MD5 different from md5sum?
- Almost always the trailing newline: `echo "hello"` appends a \n that `printf "hello"` does not, so the two commands hash different bytes even though they look identical on screen. The byte-exactness panel on this page shows exactly how many bytes were hashed and offers the same toggle, so you can match either command's behaviour on purpose instead of guessing.
- What is the hash of an empty string?
- MD5 of nothing is d41d8cd98f00b204e9800998ecf8427e; SHA-1 is da39a3ee5e6b4b0d3255bfef95601890afd80709; SHA-256 is e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. These are correct, well-known values — click the empty-state example on this page to see every algorithm's version at once.
- Is SHA-3 the same as Keccak?
- No, and several tools get this wrong. SHA3-256 and Keccak-256 share the same underlying permutation but differ in one padding byte (0x06 vs 0x01), which makes every digest different. Ethereum's keccak256 is the pre-standard Keccak, not FIPS 202 SHA3-256 — this tool computes and labels both separately rather than picking one and calling it the other.
- Is MD5 or SHA-1 secure?
- Not for anything adversarial. Both have practical collision attacks and must never protect a certificate or a digital signature. They remain fine for a non-adversarial integrity check or a cache key, which is why this page labels each algorithm's real status instead of hiding it or scaring you off entirely.
- How do I identify what type of hash a string is?
- By its length and alphabet, and it is always a guess, never a certainty: 32 hex characters could be MD5, MD4, NTLM, a truncated longer hash, or a UUID with its dashes removed. Switch to the Identify tab above, paste the digest, and this tool lists every plausible candidate with its evidence rather than picking one for you.
- Does hashing text here upload anything?
- No. Every digest is computed by JavaScript running in this tab; nothing you type is sent anywhere. The privacy receipt below the tool measures the actual network requests from this page load, so the claim is checkable rather than asserted.
- Why compute everything twice?
- For SHA-1, SHA-256, SHA-384 and SHA-512, this page runs both its own hand-written engine and the browser's separately-written crypto.subtle implementation, then compares them. Two independent implementations agreeing on your input is real evidence the answer is right — a single implementation asserting its own output is not.
Explore more tools
Generate a strong password with real entropy and per-algorithm crack times — or one that matches a site's own rules.
Decode a JSON Web Token's header and payload instantly.
Checksum any file — even multi-gigabyte ones — with a measured progress bar and a working cancel, entirely in your browser.