Hash and checksum
Hash generator: MD5, SHA-256 and file checksum verification
Paste text and all five hashes appear at once, as you type. Or drop a file — any size at all — and its checksum is computed by reading it in chunks from your own disk, ready to compare against the one whoever gave it to you published.
Verifying a download by uploading it somewhere else would be absurd. Here the file does not move.
Here "nothing is uploaded" is not a slogan: it is the whole point
In the other tools on this site, keeping your file on your machine is a matter of privacy. In this one it is also the only thing that makes the tool make sense. Picture the real situation: you have just downloaded a 4 GB ISO or a program installer and you want to check it arrived complete and untampered. A site that asked you to upload that file to compute its checksum would take longer than the original download, eat your entire connection, and solve nothing at all.
Here the file is read in two-megabyte chunks from your own disk, each chunk folded into the calculation and discarded. There is no request carrying anything anywhere: load the page, disconnect from the internet and check.
How it works, in 3 steps
-
Text or file
Paste text and the five hashes appear on their own. Or go to the file tab, tick the algorithms you need and drop the file on it.
-
Watch the bar
With big files you get progress, the real speed and time remaining. Tick several algorithms and the file is still read only once.
-
Compare
Paste the checksum the provider published underneath. The algorithm is worked out for you and you get a green or red answer.
What people use it for
- Verifying an ISO or an installerThe classic: you download Ubuntu or a recovery image and want to know it arrived complete before burning it to a USB stick.
- Checking two copies are identicalThe same file on two disks or two servers. If the hash matches they are equal byte for byte; no need to compare them in full.
- Signing API requestsPlenty of services want an HMAC of the request with your secret key. Compute it by hand here to debug why the server keeps rejecting yours.
- Preparing an integrity attributeThe Base64 SHA-384 that script tags carry so the browser rejects an altered file.
- Finding duplicatesTwo photos with different names and the same SHA-256 are the same photo, whatever the dates claim.
- Checking a backupStore the hash alongside the file and recompute it months later to find out whether the disk quietly corrupted it.
A hash is not encryption, and cannot be reversed
This is the confusion most people arrive with, so let us clear it first. Encryption is reversible by design: with the right key you get the original back, because the original is in there. A hash is not reversible at all, and not because nobody has found the trick yet, but because the information is not there.
The fastest way to see it: a 4 GB file and the word "hello" produce exactly the same 64 characters of SHA-256. It is impossible for those 64 characters to contain the 4 GB. A hash is a fingerprint of the content, not a wrapper: it identifies without storing.
And the sites promising to "decrypt MD5"? They decrypt nothing. They hold an enormous table of ordinary texts with their hashes already computed and look yours up inside it. With 123456 they hit instantly, because it is in the table. With a long unique password they never hit, because it cannot be.
MD5 and SHA-1 are broken, and they are still here
"Broken" means something specific: two different files can be deliberately crafted to share a hash. That completely destroys any use where the hash must prove authorship or authenticity — digital signatures, certificates, passwords — and there MD5 and SHA-1 must not be used under any circumstances. For MD5 this was demonstrated in 2004 and today a collision takes seconds; for SHA-1, in 2017 with two different PDFs sharing a hash.
What it does not destroy is the job of catching accidental corruption. If your download was cut short or a byte flipped in transit, the MD5 changes anyway: making two files share a hash requires building them on purpose, and line noise builds nothing. So they stay, and for an even more down-to-earth reason: half the internet still publishes the MD5 of its downloads, and if your provider gives you an MD5, you need to compute an MD5 to compare it.
The tool labels them so you know where you stand. If you get to choose the algorithm and nobody is imposing one, use SHA-256.
Why this tool can handle a 4 GB file
The browser ships its own hashing functions, but they have two limits that rule them out here: they do not include MD5, and they only compute in one go, over a whole file loaded into memory. With 4 GB that does not fit.
So all five algorithms are implemented here in a form that accepts the file in chunks: read a piece from disk, fold it into the calculation, discard it, move on. The memory needed is one chunk's worth, whether the file is four gigabytes or forty.
There is one detail of such implementations that almost nobody tests and that breaks precisely on large files: the internal length counter. Many home-grown versions keep it in a 32-bit number, which overflows at exactly 512 MiB and returns a wrong checksum with no warning whatsoever. In other words: they fail from the size at which this tool starts being useful. Here that counter is kept differently, and it is verified by processing 513 MiB of data and checking the result against a reference implementation. Every algorithm is also checked against the test vectors published in its standard and against an independent implementation at every length from 0 to 300 bytes, which is where padding bugs hide.
When the checksum does not match
Before getting alarmed, rule out the boring explanation, which is what happens nine times out of ten: having pasted the checksum of another version, another architecture or another format of the same program. In a download table with eight rows, copying the neighbouring one is extremely easy.
The second most common cause is an interrupted download. Compare the file's size against the one the page advertises first: if they disagree, that is your answer and re-downloading fixes it.
If the size is exact and the checksum still does not match, then yes: do not run that file. And keep the limit of all this in mind: a checksum is only worth something if it comes from a trustworthy source. If it was handed to you on the same page you downloaded from, and that page were compromised, the attacker would have changed both. That is why serious projects sign the checksum file separately.
HMAC, for whoever signs requests
Anyone can compute an ordinary hash, so it proves nothing about who made it. HMAC adds a shared key: only someone holding it can produce the signature, and only someone holding it can check it. It is what many APIs require to authenticate requests — you sign the request string with your secret key and the server repeats the calculation — and what payment gateways use in their notifications, so you can verify the message came from them.
The HMAC tab accepts the key as text or as hexadecimal, since a fair number of providers hand it over that way. If what you want is to generate a key or a password rather than sign with one, that is what the password generator does. And if you need the result in Base64 to drop into a header, the Base64 tool explains that format in detail.
The limits, stated before they bite
There is no size cap: read in chunks, size affects time rather than memory. On an ordinary machine SHA-256 runs around 200-300 MB per second, so a 4 GB ISO is about twenty seconds. SHA-512 runs about six times slower — it works with 64-bit numbers that JavaScript does not have and must be emulated — so if you tick it on a big file, plan for that. Ticking several algorithms is worth it: the file is read once and all of them are fed in the same pass.
And one warning that is about use rather than size: this is not for storing passwords. These algorithms are designed to be fast, which is exactly what you do not want there: a graphics card computes billions of SHA-256 per second. Passwords need deliberately slow, salted algorithms such as bcrypt, scrypt or Argon2.
Frequently asked questions
Is a hash the same as encryption? Can it be reversed?
No and no. Encryption is reversible by design: with the key you get the original back. A hash is not reversible at all, and not because the trick is still missing, but because the information is not there.
A 4 GB file and the word "hello" produce the same 64 characters of SHA-256: those 64 characters cannot possibly contain the 4 GB. It is a fingerprint, not a wrapper.
Sites offering to "decrypt MD5" decrypt nothing: they hold a huge table of common texts with hashes precomputed. With 123456 they hit instantly; with a long unique password, never.
If MD5 and SHA-1 are broken, why are they still here?
Because "broken" means two different files can be deliberately crafted to share a hash. That destroys signatures, certificates and passwords, and there they must not be used under any circumstances.
But it does not destroy catching corruption: if the download was cut short, the MD5 changes anyway. And they stay for a very down-to-earth reason: half the internet still publishes MD5s, and comparing an MD5 requires computing one. The tool labels them so you know where you stand.
Is the file really not uploaded?
Really. It is read in two-megabyte chunks from your disk, each chunk folded into the calculation and discarded. No request carries anything anywhere: load the page, disconnect from the internet and check.
Think about it the other way round: a site uploading your 4 GB ISO to compute a checksum would take longer than the original download. Verifying a download by uploading it somewhere else is absurd by definition.
How large a file can it handle?
No cap: size affects time, not memory. SHA-256 runs around 300 MB per second on an ordinary machine, so 4 GB is fifteen to twenty seconds. SHA-512 runs about six times slower.
Tick several algorithms and the file is still read once, feeding all of them together. There is a progress bar with speed and time remaining, and a cancel button.
The checksum does not match. Have I been served something bad?
The boring explanation first, which covers nine cases out of ten: you pasted the checksum of another version or another architecture. Copying the neighbouring line in a download table is extremely easy.
Second, an interrupted download: compare the size against what the page advertises. If it matches and the checksum still does not, do not run that file.
And mind the limit: a checksum is only worth something if it comes from a trustworthy source. Handed to you on the same compromised page you downloaded from, both would be fake.
What is HMAC for?
For signing a message with a shared key. Anyone can compute an ordinary hash; an HMAC can only be produced by someone holding the key.
It is what many APIs require to authenticate requests and what payment gateways use in their notifications, so you can check the message came from them. The key can be entered as text or as hexadecimal here.
Can I use this to store passwords?
No. These algorithms are designed to be fast, which is precisely the property you do not want there: a graphics card computes billions of SHA-256 per second, so working through an entire dictionary is a matter of minutes.
Passwords need deliberately slow, salted algorithms such as bcrypt, scrypt or Argon2. A plain SHA-256 is not secure storage however much it looks like it.
Hexadecimal or Base64?
The same result written two ways. Hexadecimal is what nearly everyone publishes as a checksum and what sha256sum, certutil and Get-FileHash return.
Base64 is shorter and is the format of the web's integrity headers, the ones carrying sha384-…. The comparator recognises both.