Skip to content

All tools (41)

JSON 6
Time & Date 4
Encoding & Decoding 4
Generators 3
Text & Data 4
Logs & Debugging 1
Config & Infra 3
Security & Hashing 4
Color & Design 5
Numbers & Bits 3
Web & Markup 4

Nothing leaves the cave.

Nothing you paste ever leaves your device. There is no server to send it to.

How you can check →
DevToolsCave

    This tool runs entirely in your browser. Nothing you paste is uploaded.

    How you can check →

    Hash Generator

    Security & Hashing

    Every 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.

    0 bytes

    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
    
              
            

    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.

    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.