toolfree

Hash generator

Generate MD5, SHA-1, SHA-256, SHA-384 and SHA-512 hashes of text or a file, and compare against a published checksum. Files are never uploaded.

Runs in your browser

MD5
-
SHA-1
-
SHA-256
-
SHA-384
-
SHA-512
-

MD5 and SHA-1 are broken for security. Use them only for checksums.

Verifying a download

This is what most people want a hash for. A project publishes the SHA-256 of a release file; you compute the hash of the copy you received and compare. If they match, your copy is byte-identical to the one that was published.

Pick the file above rather than pasting text — it is read and hashed in your browser, so even a large installer never leaves your machine. Paste the published checksum into the comparison box and it will tell you which algorithm matched.

At the command line:

shasum -a 256 file.iso     # macOS, Linux
certutil -hashfile file.iso SHA256   # Windows

Which algorithm to use

AlgorithmOutputStatus
MD5128 bits, 32 hex charactersBroken. Collisions are trivial to produce
SHA-1160 bits, 40 hex charactersBroken. A practical collision was demonstrated in 2017
SHA-256256 bits, 64 hex charactersThe current default
SHA-384384 bits, 96 hex charactersSHA-512 truncated; used in some TLS suites
SHA-512512 bits, 128 hex charactersOften faster than SHA-256 on 64-bit hardware

“Broken” here means a collision can be constructed: an attacker can build two different files with the same digest. It does not mean a hash can be reversed. MD5 remains fine for detecting accidental corruption — a truncated download, a bad disk — and that is why checksums on mirrors are still sometimes published in it.

Hashes are not for passwords

A raw SHA-256 of a password is fast to compute, which is exactly the wrong property: commodity hardware tests billions of candidates per second against a stolen table. Password storage needs a deliberately slow, salted, memory-hard function — argon2id, scrypt, or bcrypt — with per-user salts. No general-purpose hash generator, including this one, should be part of that pipeline.

Why the same input always gives the same digest

A hash is a pure function of its input. There is no randomness and no key, so the same bytes produce the same digest on every machine, forever. That determinism is what makes comparison meaningful — and it is also why a hash alone proves nothing about who produced a file. For that you need a signature, which combines a hash with a private key.

Note that a trailing newline changes everything. echo hello | shasum hashes six bytes, not five, which is the usual reason a command-line digest disagrees with one computed from text pasted into a box.

Your data stays here

Digests are computed in your browser using WebCrypto, with MD5 supplied by a small module loaded on demand. Nothing you type and no file you pick is uploaded.