Skip to content
100% in your browser. Nothing you paste is uploaded — all processing runs locally. Read more →

SHA-256 Checksum — How to Verify a File Download

On this page
  1. What a checksum is (and what it isn’t)
  2. Why SHA-256 for download integrity
  3. Where publishers put the hash
  4. How to verify in your browser
  5. What a mismatch means
  6. Related: hashing vs encryption, and which hash

A publisher posts a SHA-256 next to a download. You recompute that digest from the file on your disk and compare. If the two strings match, you have the same bytes they hashed. If they don’t, the file is not the one that digest describes.

That is a SHA-256 checksum check (often written sha256 checksum) and it is how to verify a file download with SHA-256. It is a file integrity checksum, not a lock and not a signature. You can do it in the browser. Nothing is uploaded. There is no signup.

What a checksum is (and what it isn’t)

A checksum is a fixed-size fingerprint of some bytes. For SHA-256 the digest is 32 bytes, usually written as 64 hexadecimal characters. The function is deterministic: the same input always produces the same digest. Two different inputs almost never collide. And for practical purposes it is one-way — you cannot reconstruct the file from the hex string.

Verification is one comparison. Hash the downloaded bytes. Compare that digest to the publisher’s published hash. Hex is case-insensitive; the characters must otherwise match. A match means: these bytes produce that digest.

It is not the other things people load onto the word “checksum”:

Treat the checksum as a tape measure: same bytes or not. It does not tell you who stacked them.

Why SHA-256 for download integrity

Download pages used to list MD5 or SHA-1. Those still catch a truncated transfer. They are a weak choice if someone might want two different files to share a hash. MD5 collisions are cheap; SHA-1 collisions have been shown in the wild.

SHA-256 is the usual published digest now: projects already ship it, 64 hex characters fit in a README or a “Compare to” field, and browsers already compute it with crypto.subtle.digest("SHA-256", bytes) — Web Crypto, no CLI required. If a project publishes both MD5 and SHA-256, compare SHA-256. SHA-512 is also fine (64-byte / 128 hex-character digest) when that is what was posted. Do not mix algorithms.

Picking a hash for passwords, ETags, or HMAC is a different decision. This page is only download integrity. The picker is which hash function should you use.

Where publishers put the hash

The hash has to come from somewhere you trust at least as much as the file.

Release notes and download pages. GitHub Releases, project sites, and vendor tables often list SHA-256 next to each asset. Match the filename. tool-1.2.0-linux-amd64 and tool-1.2.0-darwin-arm64 are different files and have different hashes.

.sha256 and SHASUMS files. Common names: SHA256SUMS, checksums.txt, *.sha256, SHASUMS256.txt. A typical line is <64 hex chars> filename.ext. Hash the file you actually saved, not a sibling asset in the same list.

Package pages. npm, PyPI, crates.io, Homebrew bottles, and distro packages publish a digest per artifact. Copy the line for the exact version and platform you installed.

If you pulled the file from a mirror, compare against the hash on the original publisher’s page. A tampered mirror that rewrites its own checksum file will still look internally consistent. No published hash means you cannot do this check.

How to verify in your browser

You do not need sha256sum on the PATH. This host already has the tool. The explainer is this page. The calculator in file mode is /file. The SHA-256-only view is /sha256.

  1. Copy the publisher’s SHA-256. Sixty-four hex characters. If the line also has a filename, take only the digest.
  2. Paste it into Compare to on the file hash calculator. Hex compare is case-insensitive.
  3. Pick the downloaded file. The tool reads the bytes in your browser and computes SHA-256 with Web Crypto. The file is not uploaded. There is no account.
  4. Read the result. ✓ Match means your file produces that digest. No match means the bytes and the published hash disagree.

That is how to verify SHA-256 without sending the download anywhere. For a string instead of a file, use the same compare field on the SHA-256 generator. Multi-gigabyte ISOs can exceed tab memory — then sha256sum, shasum -a 256, or certutil -hashfile <file> SHA256. Same bytes, same digest.

Verify a file in your browser →

What a mismatch means

A failed check is specific. The bytes you hashed are not the bytes that produced the published digest.

Corrupt or incomplete download. The usual one. The transfer stopped early, a proxy truncated the body, or “Save as” did not finish. Re-download and check again. A match the second time was a bad transfer, not a bad publisher.

Wrong file. You hashed the .zip and the published hash is for the unpacked binary — or the reverse. You grabbed win-x64 and the hash is for linux-arm64. You compared 1.2.1 to the 1.2.0 line. Confirm filename, version, and platform before you assume an attack.

Wrong algorithm or encoding. Comparing SHA-256 (64 hex chars) to MD5 (32) or SHA-512 (128) always fails. So does hex versus Base64 of the same digest. Count the characters first.

Attack, or a compromised publish path. Possible; less common than the three above. A match still would not prove the publisher is honest — only that your bytes match the digest you copied. If an attacker replaced both the file and the published hash, the check passes. That is why critical downloads pair the hash with a signature.

A match is evidence of integrity, not authenticity. A mismatch is evidence you should not run the file until you know why.

Hash vs encryption — hashing fingerprints bytes; encryption hides them. You do not “decrypt” a SHA-256, and a matching digest does not keep the file secret.

Which hash function should you use — for a published download checksum, use whatever the publisher posted (almost always SHA-256). Passwords, ETags, and HMAC are a different tree.

Ready to check a download? Open the file hash calculator or hash text with SHA-256. Browser-only, Web Crypto, nothing uploaded.