File Hash & Checksum Verifier
This tool computes a file's SHA-256, SHA-512, SHA-384 and SHA-1 digests and compares them to a checksum you paste, telling you whether the file is byte-for-byte what was published. The file is read by your browser and never uploaded — which is the only arrangement that makes sense for a tool whose job is establishing that a file has not been tampered with.
- ✓ Runs in your browser — nothing uploaded
- ✓ No sign-up
- ✓ Free, no limits
What a checksum actually proves
A cryptographic hash reduces a file of any size to a fixed-length fingerprint. Change one bit anywhere in the file and the digest changes completely — not slightly, completely, because that avalanche behaviour is what the function is designed for. So if the digest of your download matches the one on the publisher's page, the file you have is bit-for-bit the file they built.
That is a narrower guarantee than people often assume, and the distinction matters. A matching checksum proves integrity: nothing corrupted the file in transit and nobody swapped it on a mirror. It does not prove authenticity, because an attacker who can replace the download can usually also replace the checksum printed next to it. For authenticity you want a signature — GPG, or a hash published somewhere the attacker does not control.
Even so, integrity is worth checking, and hardly anybody does. Corrupted downloads are still common on flaky connections, mirrors do go stale, and the check costs about ten seconds.
Pasting the checksum in whatever shape you found it
Published checksums arrive in a dozen formats, and a verifier that reports "no match" because of a stray space teaches people to stop checking. This one takes the digest out of whatever you paste.
e3b0c44298fc1c14...b7852b855 bare digest
E3B0C44298FC1C14...B7852B855 uppercase
e3b0c442...852b855 ubuntu-24.04.iso sha256sum output
e3b0c442...852b855 *ubuntu-24.04.iso binary mode
sha256: e3b0c442...852b855 algorithm prefixThe algorithm is inferred from the digest's length rather than taken from a dropdown, so pasting a SHA-512 checksum compares against SHA-512 even if you were looking at the SHA-256 row. That removes the most common cause of a false mismatch — comparing two different algorithms and concluding the file is bad.
All four digests are computed at once when you choose the file, because you usually do not know in advance which one the publisher used, and computing the rest costs a few milliseconds even on a large file.
Why uploading a file to check its hash defeats the point
There is a circularity in server-side checksum tools that is easy to miss.
You are checking a file because you are not yet sure you can trust it — or because you cannot fully trust the channel it came through. Uploading it to a third-party website to answer that question means transferring the very file you are suspicious of to another party, and then trusting *that* party's answer about it. You have not removed a trust assumption; you have added one, and the new one is less accountable than the original.
The files people check make this concrete: an operating system image, an installer, a firmware blob, an encrypted archive, a database backup, a legal document whose integrity is the whole point. Uploading a multi-gigabyte ISO to a website is also just impractical, which is why most such tools quietly cap the file size and the ones you would most want to check are the ones you cannot.
Computing locally has neither problem. `crypto.subtle` is built into your browser, the file is read from your disk, and nothing is transmitted. There is no size cap beyond your device's memory. Verify the claim the same way as anywhere else here: Network tab, or disconnect from Wi-Fi and hash a file anyway.
Which algorithm, and why there is no MD5
SHA-256 is the right default and what almost every project publishes. SHA-512 is not meaningfully more secure for this purpose but is slightly faster on 64-bit hardware and some projects prefer it. SHA-384 appears occasionally, mostly in certificate contexts.
SHA-1 is included because a great deal of existing infrastructure still publishes SHA-1 checksums — Git object ids, older release pages, legacy vendor downloads — and you need to be able to check them. It should not be trusted against a deliberate attacker: practical collisions have been demonstrated, meaning someone can construct two different files with the same SHA-1. For catching accidental corruption it remains perfectly serviceable.
MD5 is deliberately absent, and not by oversight. The Web Crypto API does not implement it, precisely because it is comprehensively broken — collisions can be produced in seconds on ordinary hardware. Offering it would mean shipping a separate implementation in order to provide a check that gives false confidence. If a publisher offers only an MD5 checksum, treat it as a corruption check and not as evidence of anything more, and prefer a source that publishes SHA-256.
One practical note: the digest is of the file's exact bytes. An archive re-created from the same contents, or a text file whose line endings changed between Windows and Unix, produces a completely different digest even though the content looks identical. That is the function working correctly, not a fault.
Frequently asked questions
How do I verify a downloaded file's checksum?
Choose the file here, then paste the checksum from the publisher's download page. The algorithm is worked out from the digest length, and you get a plain match or no-match. It takes about ten seconds and catches corrupted downloads and stale mirrors.
Does a matching checksum mean the file is safe?
It means the file is byte-for-byte what was published — that is integrity, not authenticity. Someone who can replace the download can often replace the checksum beside it too. For real authenticity you want a GPG signature, or a checksum published somewhere the attacker does not control.
Why is there no MD5 option?
Because the Web Crypto API does not implement MD5, and it is right not to: collisions can be produced in seconds, so a matching MD5 proves very little against a deliberate attacker. If a publisher only offers MD5, treat it as a corruption check and prefer a source that publishes SHA-256.
Is my file uploaded to compute the hash?
No, and uploading would defeat the purpose — you are checking a file precisely because you are not yet sure of it, and sending it to a third party adds a trust assumption rather than removing one. Everything is computed in your browser, with no size cap beyond your device's memory.
Should I use SHA-256 or SHA-512?
Use whichever the publisher gives you, and paste it — the algorithm is inferred from its length. If you are choosing, SHA-256 is the standard and is what nearly everything publishes. SHA-512 is not meaningfully stronger here, though it is slightly faster on 64-bit hardware.
Why does the same content give a different hash?
Because the digest covers exact bytes, not apparent content. An archive re-created from the same files, or a text file whose line endings changed between Windows and Unix, will hash differently even though it looks identical. That is the function behaving correctly.