MD5 Reverse Lookup
EncodingEverything runs locally in your browser — nothing is uploaded
Work backwards from an MD5 digest to a possible plaintext. ⚠️ First, the honest part: MD5 is one-way and there is no such thing as decrypting it. The services advertised as "MD5 decrypt" do exactly what this tool does — hash candidate plaintexts one by one and see which digest matches. So what comes out is never "your original text", only some string that happens to share the digest. The range here is a common password list, plain digits up to 5 characters, and plain lowercase up to 4. Anything beyond that will not be found — not through poor implementation, but because that is the ceiling of this approach. The real "decrypt sites" run hundreds of gigabytes of rainbow tables on GPU clusters, which is a server-side affair — and a salted hash defeats any table, however large. Everything here runs locally; the digest you look up never leaves this device.
Features
- A common password list (the entries that top weak-password statistics)
- Numeric enumeration to 5 digits, lowercase enumeration to 4 letters
- Reports how many candidates were tried, so "found" and "not found" have a scale
- When nothing matches, says so plainly and explains that this is normal rather than a fault
- A wrong digest length is named directly (SHA-1 is 40 characters, SHA-256 is 64)
- Computed locally — no upload, no online database
How to use
- Paste the 32-character hex digest (prefixes like `hash:` are tolerated)
- Pick a search range — the default common list is instant
- Press Ctrl/⌘ + Enter or click Run
- You get an explanation whether or not it matched
FAQ
- Why insist it is not decryption?
- Because MD5 is one-way by design: it compresses input of any length into 128 bits, and that process is not reversible — no inverse function exists. Every "decryption" is guesswork: hash candidates and compare. So what comes out is merely some string with the same digest, and in principle countless others share it (though constructing one is impractical). This matters: if the digest is your own password, it means the password appeared in some leak and was weak to begin with. If it belongs to someone else, you are doing little more than guessing.
- Why is my digest not found?
- Almost always because the password is longer than the enumeration depth or mixes case and symbols — both outside this tool's range. One further case is worth knowing: if the hash is salted (`md5(password + salt)`), no dictionary or rainbow table will ever find it, because the salt changes the digest — which is precisely the point of salting. A salted hash can only be recomputed by someone who knows the salt.
- How is this different from the "MD5 decrypt" websites?
- Far less coverage, but the privacy runs the other way. Those sites sit on hundreds of gigabytes of rainbow tables and GPU clusters and will find far more — at the price of you having to send them the hash (sometimes for a fee). This tool runs locally only, uploading nothing and querying nothing, so its coverage stops at weak passwords. Which to choose depends on whether your hash is sensitive: for your own weak password either works; for anything tied to a real account, keeping it local is the safer call.
Related tools
Hash
EncodingCompute MD5, SHA-1, SHA-256, SHA-512 or MD4 digests of any text, hashed as UTF-8 bytes so they match openssl exactly. Runs in your browser.
File Hash
EncodingDrop in a file to get its MD5, SHA-1, SHA-256, SHA-512 and CRC-32 — to verify a download or spot a modified file. Nothing is uploaded; all local.
Bcrypt
EncodingGenerate bcrypt password hashes ($2y$ prefix) or verify a password against an existing one. The cost factor is adjustable; everything runs locally.
HMAC
EncodingSign a message with a secret key using HMAC and get a result matching Node, Java and Python. The key never leaves your browser — nothing is uploaded.
Base64
EncodingConvert text to Base64 and back, with correct UTF-8 handling for accents, CJK and emoji. Runs entirely in your browser — nothing is uploaded.
URL Encode
EncodingEscape text into %XX form and back again, treating a whole URL and a single parameter value as different jobs. Runs entirely in your browser.