MD5 Hash Generator
Compute MD5 checksums of text, hex or Base64 bytes and files up to 64 MB — entirely on this device.
How the pasted characters become bytes before hashing.
The MD5 digest appears here as you type.
Press ? for shortcuts
Do it offline:$ printf '%s' 'hello' | md5sum
How to use it
- Paste whatever needs a fingerprint — the digest recomputes on every keystroke.
- Tell the tool how to read the box: UTF-8 text, hex bytes or Base64 bytes. Switching re-hashes what is already there.
- For a file, drag it onto the page or use the picker; anything up to 64 MB streams through the hasher with visible progress.
- Copy the hex or Base64 row, download the digest, or share a link — by default the link carries only the result, never your input.
Plenty of working systems still expect an MD5 checksum: mirror manifests, Content-MD5 headers, cache keys, dedupe indexes. Paste text — or raw bytes written as hex or Base64 — and the 128-bit digest updates live: 32 hex characters plus the 24-character Base64 form. Drop a file up to 64 MB to checksum it the same way. Everything runs on this device; nothing uploads.
Examples
hello5d41402abc4b2a76b9719d911017c592hello encodes to five bytes, and MD5 always answers with sixteen — shown here as 32 hex digits. The Base64 spelling of those same sixteen bytes is XUFAKrxLKna5cZ2REBfFkg==, the form Content-MD5 headers carry.
d41d8cd98f00b204e9800998ecf8427eEmpty input is valid, not an error — the famous d41d8cd98f00b204e9800998ecf8427e means zero bytes went in. Spot it in a checksum manifest and you have found a file that was never written.
hello
b1946ac92492d2347c6235b4d2611184One extra byte rewrites the whole digest. echo hello pipes exactly this input — string plus newline — which is why terminal results disagree with web pages so often; the CLI line below uses printf '%s' to leave the newline out.
68656c6c6f5d41402abc4b2a76b9719d911017c592Under the hex interpretation these ten characters collapse to the five bytes of hello, so the digest matches example 1. One input box, two byte streams — that is the distinction the selector is for.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
Know what MD5 is still for
MD5 is cryptographically broken (collisions since 2004). Fine for checksums and cache keys; never for passwords (→ Bcrypt G175) or signatures (→ SHA-256 G157).
Identical-looking text can hash apart
ü as one precomposed code point is two UTF-8 bytes; as u plus a combining diaeresis it is three. MD5 digests bytes, so those two spellings share nothing — this page deliberately skips Unicode normalization rather than second-guess your input.
Hex mode reaches bytes a textarea cannot hold
Paste 00 under the hex interpretation and exactly one zero byte is hashed — MD5 treats NUL as data like any other value. Whitespace between byte pairs is ignored and declared in a chip, so hexdump-style pastes work unedited.
Past 64 MB the page refuses before reading
Files hash inline in 4 MB slices, keeping memory flat at any size within the ceiling. A bigger file is never partially hashed — a partial checksum is worse than none — so the refusal points to the File Checksum Verifier instead.
Uppercase hex is presentation, not a different digest
Hex digits carry no case information, so the uppercase toggle restyles the display while the engine keeps emitting lowercase. The Base64 row never toggles — its case is meaningful, and changing it would corrupt the value.
Common errors
Input is not valid hex: `g` at position 5 — use hex digits only, or switch the interpretation to UTF-8 text.- The paste behind this one was deadgbeef — g is not a hex digit, and positions count from one. Usually the input is ordinary text that merely looks hex-shaped; reading it as UTF-8 text hashes it as typed.
Odd number of hex digits — byte 4 is incomplete; every byte needs two digits.- Seven digits cannot form whole bytes: the last one in deadbee has no partner. A clipped copy is the usual culprit — check whether the tail of the value survived the clipboard.
Input is not valid Base64: `-` at position 8 — use the standard alphabet (A-Z, a-z, 0-9, +, /), or switch the interpretation to UTF-8 text.- A dash means base64url, the variant JWTs and web APIs emit, which swaps + and / for - and _. Translate those two characters back before hashing the bytes, or hash the token as text if the literal string is what you meant.
Input is larger than the 1 MB paste limit for this tool. Drop it as a file instead — up to 64 MB here — or use the CLI: md5sum file.txt- The paste box refuses past 1 MB rather than hash a silently clipped buffer. File mode raises the ceiling to 64 MB without the clipboard in the way, and md5sum handles anything larger locally.
FAQ
Can you decrypt an MD5 hash back to the original text?
No, and no service can: MD5 is a one-way digest, not encryption — sixteen bytes out whatever goes in, so infinitely many inputs share every hash. Sites offering md5 decrypt query giant tables of already-hashed strings; a value nobody has hashed before simply is not in them.
Why does echo give a different MD5 than this page?
echo appends a newline before the pipe, hashing six bytes where this page hashes five — compare examples 1 and 3. Pipe through printf '%s' for the bare string; and when your own input ends in a newline, a chip under the output says the digest includes it.
Does Unicode normalization change an MD5 hash?
It changes the bytes, so it changes everything: NFC and NFD spell the same visible character as different byte sequences, and MD5 digests bytes. This page hashes precisely what you typed — if two systems disagree over accented text, normalize on both sides before comparing checksums.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Recompute the digest immediately.
- ⌘/Ctrl + S
- Save the digest as a .txt file.
- ⌘/Ctrl + C
- With nothing selected, copy the hex digest as displayed.
- ⌘/Ctrl + Shift + C
- Copy the hex digest regardless of any selection.
- t
- Switch the color theme.
- ? or ⌘/Ctrl + /
- Open the keyboard help overlay.
- Esc
- Dismiss the topmost dialog.