Calculate MD5, SHA-1, SHA-256 and SHA-512
Get every checksum of a file or a string in one pass, and paste the expected value to see at a glance whether it matches.
Drop your files here
· up to 300 MB
More settingsFewer settings
How to Calculate Hashes
- 1
Drop a file or paste text
Up to fifty files at once, or a string typed straight in. Large files are read in chunks so memory stays flat.
- 2
Pick which algorithms to show
All four by default. Selecting fewer creates fewer hashers, which is measurably faster on a multi-gigabyte file.
- 3
Compare or copy the result
Paste the expected checksum and the matching algorithm is identified by length and checked for you.
One pass over the data, not four
The naive way to produce four checksums is to read the file four times. Here the file is read once in sixteen-megabyte chunks and each chunk is fed to every selected hasher before the next is read, so the cost of adding a second algorithm is processor time rather than another full pass over the disk. That is also why the chunked approach matters for the memory ceiling: a two-gigabyte file never exists in memory as a whole, only sixteen megabytes of it at a time, which is what makes hashing a large ISO or video in a browser tab realistic at all.
Which algorithm to use for what
For verifying that a download arrived intact, any of the four works, because accidental corruption does not construct collisions, so use whichever the publisher listed. For anything where someone might deliberately construct a matching file, MD5 and SHA-1 are both broken: practical collisions exist for MD5 and have existed for SHA-1 since 2017, so a matching MD5 no longer proves two files are the same. SHA-256 is the sensible default for integrity that must hold against an adversary, and SHA-512 is not more secure in practice but is often faster on 64-bit hardware. None of them belongs anywhere near password storage, which needs a deliberately slow function such as Argon2 or bcrypt.
Text hashing depends on the encoding
A hash is computed over bytes, and a string is not bytes until an encoding turns it into some. The word "Привет" produces one SHA-256 as UTF-8 and a completely different one as UTF-16LE, and neither is wrong; they are hashes of different byte sequences. That is why the character set is an explicit choice rather than an assumption, and why a hash you computed elsewhere may not match here until the encodings agree. UTF-8 is the default because it is what almost every modern system means by text.
The file is never uploaded
Hashing runs entirely in this browser tab. The point of checking a checksum is to trust the file rather than a service, so sending it to a server to be hashed would defeat the exercise. Nothing leaves your machine.
Frequently asked questions
Which algorithm should I use to verify a download?
Whichever the publisher published. For accidental corruption any of the four is adequate; when the concern is deliberate tampering, use SHA-256 or SHA-512, since MD5 and SHA-1 both have practical collision attacks.
Why is MD5 unsuitable for passwords?
Because it is fast, and speed is exactly what an attacker guessing passwords wants. Password storage needs a deliberately slow, salted function such as Argon2 or bcrypt; a plain hash of any speed is the wrong tool.
Why does the hash of my text change with the encoding?
Because the hash covers bytes, not characters, and UTF-8 and UTF-16LE turn the same string into different bytes. Pick the encoding that matches whatever produced the value you are comparing against.
Can I hash a very large file?
Yes. The file is read in sixteen-megabyte chunks and never held in memory as a whole, so a multi-gigabyte file works with a memory footprint of well under a hundred megabytes.
What does a mismatch mean?
That the bytes differ from what the publisher hashed. Usually the download was truncated or corrupted, so try again from the source; if it still differs, treat the file as untrustworthy.
How does the comparison know which algorithm I pasted?
By length. A hex checksum of 32, 40, 64 or 128 characters is MD5, SHA-1, SHA-256 or SHA-512 respectively. Anything else is reported as unrecognised rather than compared against the wrong value.
Is my file uploaded to check it?
No. Everything is computed locally in your browser using a WebAssembly hashing library, with no server involved at any point.