piapia123
en

File Hash Checker

Encoding

Everything runs locally in your browser — nothing is uploaded

Drop a file here, or click to choose

One file · processed entirely on your device

The file is read inside your browser only — nothing is uploaded. It keeps working offline.

Compute the hash of a file — just drop it in. The file is never uploaded; all the work happens inside your browser. The usual reason is verifying a download: the vendor or mirror publishes `sha256: 9f86d0…`, and comparing it against what you compute here tells you whether the file arrived intact or was tampered with. Release pages, firmware downloads and Linux distributions nearly always ship a digest these days. ⚠️ Large files are hashed in chunks: past 32 MB the tool switches to its own incremental implementation, reading one block at a time so memory does not grow with the file, and it shows live progress (e.g. "Processed 1.2 GB / 4.0 GB"). Smaller files still use the browser’s native digest, which is faster. The result says which route was used — never a silent switch. A 512 MB ceiling remains: pure-JS hashing is far slower than the command line, so above that size use `sha256sum`, or `certutil -hashfile <name> SHA256` on Windows. One more warning: MD5 and SHA-1 are no longer fit for tamper detection — constructing collisions is cheap enough for an ordinary machine. They are here because a great many legacy systems still use them and older guides still hand them out. If you actually need to know whether a file was altered, use SHA-256. 💡 You do not have to compare by hand: paste the line from the release page into the comparison field as it is (uppercase, `:` separators and prefixes like `SHA256(file) = …` are all handled), and the top of the result says plainly whether it matches — with both values side by side when it does not.

Features

  • Five digests at once: MD5, SHA-1, SHA-256, SHA-512 and CRC-32
  • File name, size, type and modification time alongside them
  • A copy button on every row — no dragging to select a long hex string
  • ⚠️ Paste the published digest into the comparison field and the result says plainly whether it matches — no comparing two 64-character hex strings by eye
  • Every shape is accepted: uppercase, `:` or space separated, and prefixes such as `SHA256(file) = …`. The algorithm is inferred from the digest length, so you never pick it
  • An empty file still yields a real digest rather than blank output
  • ⚠️ Past 32 MB it hashes in chunks, so memory does not grow with the file, and it shows progress (Web Crypto has no incremental interface, so chunking uses a bundled pure-JS implementation)
  • The result says whether it used chunked (low memory) or one-shot — never a silent switch
  • Past 512 MB it explains why, and names the command-line tool to use instead
  • The file is never uploaded; it keeps working offline

How to use

  1. Drop the file onto the dashed box, or click to choose one
  2. Results appear immediately, five digests stacked
  3. If the publisher gives a digest, paste that line into the comparison field — the verdict appears at the top
  4. Click the copy button on any row to take that value

FAQ

Why does my SHA-256 not match the one on the site?
Check three things in order. The download may be incomplete: an interrupted transfer sometimes leaves a plausible-looking partial file whose size differs from the real one — compare it to the size shown here. It may be a different build: versions, architectures (x64 / arm64) and mirrors all have different digests, so confirm you downloaded the exact file the page refers to. Or it really was altered: if size and version both line up and the digest still refuses to match, consider that the file may have been swapped in transit — especially if it came from an unofficial source.
Is MD5 still usable?
It depends what for. Against transfer corruption it is passable: a few bytes flipping during download will almost certainly show up, and CRC-32 would catch that too. Against deliberate tampering it is not: collisions for MD5 and SHA-1 have been constructed in practice, so an attacker can craft a malicious file sharing a digest with a genuine one — meaning a matching digest no longer proves the file is unchanged. Use SHA-256 for that. And for storing passwords it was never appropriate: that is a job for bcrypt, scrypt or Argon2.
How are large files hashed, and why is there still a 512 MB cap?
Files over 32 MB take the chunked route: a bundled incremental SHA / MD5 / CRC implementation consumes one block at a time, so memory does not grow linearly with the file, and it reports live progress. Between blocks it yields the main thread one frame, so the page never freezes. Smaller files still go to the browser’s native `crypto.subtle`, which is faster. The 512 MB ceiling stays because pure-JS hashing is much slower than a native command-line tool, and above that size `sha256sum` or `certutil -hashfile` is the better choice. ⚠️ Note also that this tool handles one file at a time — there is no two-file byte-by-byte comparison; that is the shell’s contract. To check a file, paste the published digest into the comparison field.

Related tools