Security

MD5, SHA-1 and SHA-256 Hash Generator

Type text or drop a file and you get all five digests at once. If you have a checksum from a download page, paste it in the compare box and the matching row is labelled — no squinting at 64 hex characters.

Empty input still has a hash. That is the fingerprint of zero bytes.

Or hash a file

Drop a file here or browse

Any file type · read on your device · nothing is uploaded

Upper or lower case both work. You can paste a whole line from a SHASUMS file — everything after the first word is ignored.

Hashes of the text above

    What a hash is, and the one thing it is not

    A hash function takes any number of bytes and returns a fixed-length fingerprint. Flip one bit of the input and roughly half the output bits change. The same input always produces the same output, which is what makes a digest useful for checking that two things are identical without comparing them byte by byte.

    It is not encryption. There is no key, and there is no way back: the digest of a 4 GB file is still 32 bytes, so almost all of the information is simply gone. When people say a hash was "cracked", they mean someone guessed the input and hashed it too. For a short input drawn from a predictable set — a phone number, a common password, an email address — that guessing is cheap, and precomputed tables make it cheaper. Hashing does not make small, predictable data private.

    Which algorithm to reach for

    The distinction that matters is collisions versus preimages. A collision means an attacker can build two different inputs sharing one digest, and they get to choose both. A preimage means they can find an input matching a digest you already have. Nobody has a practical preimage attack on MD5 or SHA-1. That is why an old MD5 checksum still catches a corrupted download, and still fails to protect you from someone who controlled the file from the start.

    Why your hash does not match the one from the terminal

    Almost always the bytes differ, not the algorithm. Three usual suspects:

    Checking a download, honestly

    Comparing a checksum protects against a truncated transfer, a corrupted disk and a mirror serving the wrong file. It does not protect you from whoever controls the page. If the download link and the checksum live on the same server, an attacker who replaced one replaced the other. The real defence is a signature: a hash signed with a key you already trust, checked with gpg --verify or the project's equivalent. A bare checksum is a consistency check, not an authenticity check.

    Where this tool stops

    The whole file is loaded into memory before it is hashed, because that is what the browser's crypto API accepts. A few hundred megabytes is fine on a desktop. A multi-gigabyte disk image will stall the tab or fail outright — reach for sha256sum, shasum -a 256 or certutil -hashfile instead.

    MD5 is computed by JavaScript on the main thread, since browsers refuse to provide it. It is several times slower than the SHA family, which runs as native code inside the browser. On a large file, the MD5 row is the one you wait for.

    The SHA algorithms need a secure context — HTTPS or localhost. Open this page over a plain http:// address on a local network and the SHA rows report an error while MD5 keeps working.

    There is no HMAC here and no password hashing. bcrypt, scrypt and Argon2 are deliberately slow and individually salted; none of them is a plain digest. If you are storing passwords, none of the five algorithms above is the right answer.

    Frequently asked questions

    Is MD5 still safe to use?

    Not for anything security-related. Two different files can be made to share an MD5 digest in seconds on ordinary hardware. It is still fine as a corruption check against a checksum you generated yourself, and it is here because plenty of old download pages publish nothing else.

    Why does my terminal give a different hash for the same text?

    Usually a trailing newline. Piping through echo adds a line feed, so six bytes get hashed instead of five. Windows line endings and non-UTF-8 encodings cause the same surprise. The algorithm is not the problem; the bytes are.

    Can a hash be reversed back to the original text?

    No. A digest is a fixed size no matter how big the input was, so the information is not there to recover. What lookup sites do is hash billions of likely inputs and check for a match, which works well against short or common values and not at all against long random ones.

    Does my file get uploaded anywhere?

    No. The file is read by your browser with the FileReader API and hashed on your device. There is no server to send it to — this page is static files.

    How large a file can it handle?

    A few hundred megabytes is comfortable on a desktop; phones give up sooner. The entire file has to sit in memory at once, so gigabyte-scale images are better hashed with a command line tool.

    Last updated September 19, 2026