File Checksum

Files & data

Check a download against the value the publisher printed. It compares for you.

Checksum

Choose a file, paste the value the publisher printed if you have one, then press Check the file.

How to use

What it's for

Check that a file you downloaded is exactly the one its maker published — not cut short by a broken download, and not swapped for something else.

Before you start

Have the downloaded file on this device, and the checksum the publisher printed beside the download: a long string of letters and numbers, usually labelled SHA-256.

  1. Choose the file

    Press Choose a file and pick the file you downloaded, or drag it onto the box. It is read here in your browser — Nothing leaves this page.

  2. Paste the publisher's checksum

    Copy the checksum from the publisher's download page and paste it into What the publisher printed. Paste the whole line as it is: spaces, capitals, a "sha256:" in front or a file name after it are all fine. Leave the box empty if you only want the checksums themselves.

  3. Check the file

    Press Check the file. If you change the file or the pasted value afterwards, the answer is cleared and you press the button again, so what is on screen is always about what is above it.

  4. Read the answer, then copy if needed

    Read the one word at the top of Checksum, explained below. Under it are the file's SHA-256, SHA-384 and SHA-512, with a ✓ beside the one that matched; press Copy beside any you need.

Reading the result

  • Matches: the file is byte for byte the one the publisher's checksum describes. It proves what arrived, not that the publisher can be trusted.
  • Does not match: the file is different. Most often the download stopped early or the checksum is for another version — see below before you open it.
  • Not compared: what you pasted is not the length of any checksum this page makes, so nothing was compared. It does not mean your file is wrong.
  • Size: the file's size, worth comparing with the size shown on the download page.

If it goes wrong

  • Does not match: download the file again and compare its size with the download page first. If it still does not match, do not open or run it.
  • Not compared, with a note that it looks like an MD5 or a SHA-1: this page does not use those, because two different files can be made to share one. Look for the SHA-256 on the publisher's page.

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.

Keep going

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.