LocalFirstTools.com — data tools that never leave your device
No upload — everything runs on your device

MD5 hash

MD5 produces a fixed 128-bit digest — 16 bytes, 32 hex characters. Web Crypto deliberately omits it (the API ships only algorithms considered secure), so this page uses the js-md5 library — still entirely in your browser. MD5 has been broken for collision resistance since 2004: use it to match legacy checksums, never for security.

The break is not theoretical: crafting two different inputs with the same MD5 digest takes under a second on ordinary hardware, and chosen-prefix collisions — two meaningful colliding documents — are within hobbyist budgets. What still holds is second-preimage resistance: nobody can produce a file matching your existing file's MD5, which is exactly why MD5 remains serviceable for detecting accidental corruption and nothing more. The empty string's digest, d41d8cd9…ecf8427e, is worth recognizing in logs: it means something hashed nothing.

SHA-256
SHA-1
MD5

When it goes wrong

If an MD5 does not match the published value, check the byte-level suspects first (trailing newline, CRLF, BOM), and count characters: a 40-hex value against your 32-hex output means the source published SHA-1, not MD5. If you are choosing an algorithm rather than matching one, stop here and use SHA-256 — same tool, one row up.

When to use this

Only where a legacy system demands MD5: old checksum files, an ETag scheme you cannot change, cache keys in an existing format.

This page is a focused view of theHash Generator (SHA-256 / MD5), which has the full set of options.

Frequently asked questions

Is MD5 safe to use at all?

For non-adversarial jobs, yes — detecting accidental corruption or keying a cache is fine. It is unsafe wherever an attacker benefits from crafting two inputs with the same hash: signatures, certificates, password storage.

Why doesn't the browser support MD5 natively?

The Web Crypto API only ships algorithms considered secure; MD5 and SHA-1 checksum use cases are left to libraries. That is why this page uses js-md5 while SHA-256 uses crypto.subtle.

Can I get the original text back from an MD5 hash?

Not by reversing it, but common short inputs are trivially found in precomputed lookup tables — another reason never to “hash” secrets with bare MD5.