MD5 Generator

Generate a 128-bit MD5 digest — 32 hexadecimal characters. Useful for matching legacy checksums and detecting accidental corruption; not suitable for anything security-sensitive.

{{ textCount }}

Encoding The same text in a different encoding is different bytes, so it produces a different digest. UTF-8 unless you are matching a legacy system.
Format
Or just start typing…
{{ r.label }} {{ r.bits }} bits · {{ format }} {{ r.secLabel }}

{{ r.value }}

{{ legacyNames }} {{ legacyNames.indexOf(' and ') === -1 ? 'is' : 'are' }} selected. Practical collisions are public for both, so treat the result as a checksum for spotting accidental corruption — not as evidence that a file is authentic.

Export

Drop files here to hash them

or

Up to 100 files · any size · read in 4 MB chunks, never uploaded

Files are read, not uploaded. Each one is streamed through the hash function in chunks straight from disk, so a multi-gigabyte image never lands in memory and never leaves your device.

Encoding The same text in a different encoding is different bytes, so it produces a different digest. UTF-8 unless you are matching a legacy system.
Format
{{ status }}
{{ f.name }} {{ fmtBytes(f.size) }} Done Hashing {{ f.progress }}% Queued Failed

{{ f.error }}

{{ r.label }} {{ r.bits }} bits

{{ r.value }}

Export

The key never leaves this page. It is not sent to a server, not saved to local storage, and not written into the exported files.

Algorithm
Key as Signing secrets from webhook providers are usually published as hex or Base64. Hashing those characters as literal text produces a different, wrong MAC.
Encoding The same text in a different encoding is different bytes, so it produces a different digest. UTF-8 unless you are matching a legacy system.
Format
HMAC-{{ label(hmacAlgo) }} {{ format }}

{{ hmacResult }}

HMAC is not a hash with the key glued on the front. It runs the key through the hash twice with two different pads, which is what makes it resistant to the length-extension attacks that break a naïve hash(key + message).

Drop the file you want to check

or

Hashed in your browser · never uploaded

{{ vFile.name }} {{ fmtBytes(vFile.size) }}
Algorithm A {{ expectedLen }}-character hash could be either of these — pick the one the publisher used. Identified from the hash length.

Hash matches

The {{ vResult.label }} digest of {{ vFile.name }} is identical to the hash you supplied, so this is the file that checksum describes. Letter case and surrounding whitespace were ignored.

Both {{ vResult.computed }}

Hashes match

Both are the same {{ cmpResult.len }}-character value, so they identify identical content. Ignored while comparing: letter case, spaces, line breaks, and any sha256:-style prefix.

Both {{ cmpResult.a }}

Length {{ cmpResult.len }} — consistent with {{ cmpResult.guess }}.

Text, files and secret keys are hashed in your browser. Nothing you enter is ever uploaded to a server.

About MD5

MD5 produces 128 bits, written as 32 hexadecimal characters. Ron Rivest designed it in 1991 and for a decade it was the default choice for checksums and even for password storage. It is now comprehensively broken for anything an adversary could touch.

What broke, and what did not

In 2004 researchers demonstrated practical collisions: two different inputs with the same MD5. By 2008 a team had used the technique to forge a certificate authority signature. That means an MD5 match is not evidence that a file is the one you wanted — someone able to influence the content can produce a different file with the same digest. What has not been broken is preimage resistance: given only a digest, recovering the input is still infeasible.

Where MD5 is still reasonable

Detecting accidental corruption in transit, deduplicating files you control, cache keys, and verifying checksums that were published as MD5 and cannot be reissued. In all of those the threat is a flipped bit, not an attacker. It is also fast, which is occasionally the point.

MD5 and passwords

Consumer hardware tests billions of MD5 candidates per second, so an MD5 password database is effectively plaintext for any common password. Salting slows a bulk attack but does not fix the speed. Use Argon2id, bcrypt, scrypt or PBKDF2 instead.

See also the SHA-256 generator.

What does MD5 produce?

128 bits, written as 32 hexadecimal characters, for any input from an empty string to a multi-gigabyte file.

Is MD5 safe to use?

Not for security. Producing two different files with the same MD5 has been practical since 2004, so an MD5 match is not evidence that a file is authentic. It is still fine for spotting accidental corruption, and for matching checksums that were published as MD5.

So what is MD5 still good for?

Cache keys, deduplication, detecting a truncated transfer, and verifying legacy checksums where you have no choice. Anywhere an adversary might be involved, use SHA-256.

Can MD5 be reversed?

No. It is one-way and lossy. Services claiming to crack MD5 are looking the value up in tables of pre-computed hashes of common inputs — which is exactly why MD5 must never be used to store passwords.

Why do I get a different hash than another tool?

Almost always the input differs: a trailing newline, a different text encoding, or trailing whitespace. Check the byte count shown under the input box against what you expect.