File Checksum

[ CHECKSUM ]

Choose a file to hash it.

[ WHAT THIS IS ]

Nobody reads sixty-four hex characters. People check the first four and the last four — and that is precisely the check a substituted file is built to pass.

So the machine does the comparing here. Paste the line the publisher printed and one word comes back.

And there is a limit to what a match means, which is printed too. It says the file is byte for byte the one whose digest that was. It says nothing about whether the publisher is trustworthy, and nothing about whether the page you copied the digest from was really theirs — somebody able to replace a download can usually replace the line printed beside it.

A signature proves who published something. A checksum only proves what arrived.

And there is no MD5 here, deliberately. Two different files can be constructed with the same MD5, so a match no longer proves they are the same file. Offering it beside SHA-256 without a word would let somebody verify a download with a check a capable attacker can defeat — and believe they had verified it.

[ QUESTIONS ]

Is my file uploaded anywhere?

No. It is read from your disk into this browser tab and hashed there. There is no upload and no server, which matters here for an unusual reason: a checksum page that uploaded your file would have to be trusted not to substitute the answer, and then the check would prove nothing at all.

Why paste the published value instead of just reading the digest?

Because nobody reads sixty-four hex characters. People check the first four and the last four, and a substituted file is built to pass exactly that glance. Paste the line the publisher printed and the comparison is done character by character, which is the only version of this check that is worth doing.

It says my file does not match. What now?

Before assuming the worst: the commonest causes are a download that stopped early, a digest copied from a different version of the same thing, or a file that something opened and re-saved on the way. Check the file size against the one on the download page, then download it again. If it still disagrees, do not run it.

What does a match actually prove?

That the file is byte for byte the one whose digest you pasted. That is all. It says nothing about whether the publisher is trustworthy, and nothing about whether the page you copied the digest from was really theirs — somebody able to replace a download can usually replace the line printed beside it. A signature proves who published something; a checksum only proves what arrived.

Why is there no MD5?

Because it is broken for this job. Two different files can be constructed with the same MD5, so a matching digest no longer proves two files are the same file — and offering it beside SHA-256 without a word would let somebody verify a download with a check a capable attacker can defeat, and believe they had verified it. SHA-1 is out for the same reason. Where a publisher offers only an MD5, the honest answer is that the publisher should print something better.

Which one should I use if the publisher offers several?

SHA-256 is the right default and is what almost everything publishes now. SHA-512 is not meaningfully more secure for this purpose — it is faster on 64-bit machines and produces a longer string. If a publisher offers SHA-256 and MD5, use the SHA-256 and ignore the other one.

Does the file name or date affect the result?

No. A hash is computed from the contents alone, so renaming a file, changing its timestamp or moving it between drives never changes its digest. That is what makes the check useful: it survives everything except a change to the bytes themselves.

Why are the hashes computed here rather than by the browser?

Because the browser’s own crypto is asynchronous, and this site’s calculation engine is built entirely from pure synchronous functions — one await would have changed the shape of the whole layer. So SHA-256 and SHA-512 are written out by hand in it. The dividend is that they behave identically in every browser and work with no connection at all.

[ THE MATHS ]
How long each digest is
MD532 hex — broken
SHA-140 hex — broken
SHA-25664 hex
SHA-38496 hex
SHA-512128 hex
A value that is not the length of anything computed here is not reported as “does not match” — it was never compared to anything. Those are two different answers.
[ WHY THIS PAGE COMPUTES THEM ITSELF ]

The browser’s own crypto is asynchronous, and this site’s calculation engine is built entirely from pure synchronous functions — one await would have changed the shape of the whole layer. So SHA-256 and SHA-512 are written out by hand in it. The dividend: identical behaviour in every browser, and it works with no connection at all.

[ NEXT ]
60Hash GeneratorThe same hashes, over text you paste
86Image Metadata RemoverAlso byte work, also in your browser
47Secret Key GeneratorWhen you need a value rather than a check
44Base64 Encoder / DecoderFor moving bytes through text
[ IMPORTANT ]

The file is read in your browser and nothing about it is transmitted or stored. A matching checksum proves the file is the one whose digest you pasted — it does not prove the publisher is trustworthy, or that the digest itself came from them. Nothing you type here is sent to our servers — the calculation runs entirely in your browser.