No file chosen. Files are hashed in your browser and never uploaded.
Checksums only. MD5 has practical collision attacks, so never use it for passwords, signatures or tamper detection. Use SHA-256 or stronger for security.
Inputs are stored after the # in the link, which browsers do not send to the server. Untick the box if your input is sensitive. Files are never added to a link.
Modern Security & Hashing Utilities
Hash Algorithm Reference
| Algorithm | Sample digest of abc | Spec | Digest / Block | Security status |
|---|---|---|---|---|
| MD5 | 900150983cd24fb0d6963f7d28e17f72 | RFC 1321 | 128 bit / 512 bit | Broken: practical collisions since 2004. Never use for security. |
| SHA-1 | a9993e364706816aba3e25717850c26c9cd0d89d | FIPS 180-4, RFC 3174 | 160 bit / 512 bit | Collision attacks are practical (SHAttered, 2017). NIST is retiring it by 2030. |
| SHA-256 | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | FIPS 180-4, RFC 6234 | 256 bit / 512 bit | No known practical attacks. About 128-bit collision resistance. |
| SHA-384 | cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 | FIPS 180-4, RFC 6234 | 384 bit / 1024 bit | No known practical attacks. Truncated SHA-512 family. |
| SHA-512 | ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f | FIPS 180-4, RFC 6234 | 512 bit / 1024 bit | No known practical attacks. Faster than SHA-256 on 64-bit CPUs. |
| SHA3-256 | 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532 | FIPS 202 | 256 bit / 1088-bit rate | Keccak sponge design. No known practical attacks. |
Sample input for all rows: abc (3 bytes, UTF-8). MD5 is fine for quick checksums and legacy compatibility. Choose SHA-256 or stronger whenever someone could tamper with the data.
MD5 Test Vector Dataset (30 Vectors & Standards)
RFC 1321 test vectors, reference strings, padding boundaries, a real collision pair and output formats. Click Copy next to any hash. Enter the same input in the tool above to verify your own implementation. Every value was computed with Python hashlib and the RFC ones match the published suite.
| Identifier / Standard Name | Sample MD5 Hash | Underlying Algorithm | Technical Specs / Input | Output Length |
|---|---|---|---|---|
| 1. RFC 1321 Test Suite | ||||
| RFC 1321: empty string | d41d8cd98f00b204e9800998ecf8427e | MD5 (RFC 1321) | Input "" (0 B); the hash of nothing | 32 chars |
| RFC 1321: a | 0cc175b9c0f1b6a831c399e269772661 | MD5 (RFC 1321) | Input "a" (1 B) | 32 chars |
| RFC 1321: abc | 900150983cd24fb0d6963f7d28e17f72 | MD5 (RFC 1321) | Input "abc" (3 B) | 32 chars |
| RFC 1321: message digest | f96b697d7cb7938d525a2f31aaf161d0 | MD5 (RFC 1321) | Input "message digest" (14 B) | 32 chars |
| RFC 1321: abcdefghijklmnopqrstuvwxyz | c3fcd3d76192e4007dfb496cca67e13b | MD5 (RFC 1321) | Input "abcdefghijklmnopqrstuvwxyz" (26 B) | 32 chars |
| RFC 1321: ABCDEFGHIJKL... | d174ab98d277d9f5a5611c2c9f419d9f | MD5 (RFC 1321) | Input "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" (62 B); full string is part of the RFC test suite | 32 chars |
| RFC 1321: 123456789012... | 57edf4a22be3c955ac49da2e2107b67a | MD5 (RFC 1321) | Input "12345678901234567890123456789012345678901234567890123456789012345678901234567890" (80 B); full string is part of the RFC test suite | 32 chars |
| 2. Common Reference Strings | ||||
| Reference: hello world | 5eb63bbbe01eeed093cb22bb8f5acdc3 | MD5 (RFC 1321) | Input "hello world" (11 B) | 32 chars |
| Reference: Hello, World! | 65a8e27d8879283831b664bd8b7f0ad4 | MD5 (RFC 1321) | Input "Hello, World!" (13 B) | 32 chars |
| Reference: The quick brown fox jumps over... | 9e107d9d372bb6826bd81d3542a419d6 | MD5 (RFC 1321) | Input "The quick brown fox jumps over the lazy dog" (43 B); classic pangram | 32 chars |
| Reference: The quick brown fox jumps over... | e4d909c290d0fb1ca068ffaddf22cbd0 | MD5 (RFC 1321) | Input "The quick brown fox jumps over the lazy dog." (44 B); one extra period changes the whole hash | 32 chars |
| Reference: The quick brown fox jumps over... | 1055d3e698d289f2af8663725127bd4b | MD5 (RFC 1321) | Input "The quick brown fox jumps over the lazy cog" (43 B); one letter changed (dog to cog), completely different hash | 32 chars |
| Reference: test | 098f6bcd4621d373cade4e832627b4f6 | MD5 (RFC 1321) | Input "test" (4 B) | 32 chars |
| 3. Padding Boundaries and Encoding Edge Cases | ||||
| 55-byte message | ef1772b6dff9a122358552954ad0df65 | MD5 (RFC 1321) | Input "a" x55 (55 B); longest message that fits one block with padding | 32 chars |
| 56-byte message | 3b0c8ac703f828b04c6c197006d17218 | MD5 (RFC 1321) | Input "a" x56 (56 B); padding no longer fits, so a second block is added | 32 chars |
| 63-byte message | b06521f39153d618550606be297466d5 | MD5 (RFC 1321) | Input "a" x63 (63 B); one byte short of a full block | 32 chars |
| 64-byte message | 014842d480b571495a4a0363793f7367 | MD5 (RFC 1321) | Input "a" x64 (64 B); exactly one full block of data, padding makes a second | 32 chars |
| 65-byte message | c743a45e0d2e6a95cb859adae0248435 | MD5 (RFC 1321) | Input "a" x65 (65 B); spills into a second block | 32 chars |
| Trailing newline | 0bee89b07a248e27c83fc3d5951213c1 | MD5 (RFC 1321) | Input "abc" + LF (4 B); echo adds the LF, printf and echo -n do not | 32 chars |
| Windows line ending | c13b6afecf97ea6b38d21a8f5167fa1e | MD5 (RFC 1321) | Input "abc" + CR LF (5 B); differs from LF-only | 32 chars |
| Single NUL byte | 93b885adfe0da089cdf634904fd59f71 | MD5 (RFC 1321) | Input hex 00 (1 B); use Hex bytes input type | 32 chars |
| Unicode NFC (precomposed e-acute) | 07117fe4a1ebd544965dc19573183da2 | MD5 (RFC 1321) | Input "caf" + U+00E9 (UTF-8: 63 61 66 c3 a9, 5 B) | 32 chars |
| Unicode NFD (e + combining acute) | 10a85865ce7a7d2f0dc3faf37c617a8d | MD5 (RFC 1321) | Input "cafe" + U+0301 (UTF-8: 63 61 66 65 cc 81, 6 B); looks identical, hashes differently | 32 chars |
| Emoji (4-byte UTF-8) | 2a02eac39d716a70ecf37579185927b6 | MD5 (RFC 1321) | Input U+1F600 grinning face (UTF-8: f0 9f 98 80, 4 B) | 32 chars |
| All byte values 0x00-0xFF | e2c865db4162bed963bfaa9ef6ac18f0 | MD5 (RFC 1321) | Input hex 00 01 02 ... fe ff (256 B); use Hex bytes input type | 32 chars |
| 4. Known Collision Pair (why MD5 is broken) | ||||
| Collision message A (Wang et al. 2004) | 79054025255fb1a26e4bc422aef54eb4 | MD5 (RFC 1321) | Input hex d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f8955ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5bd8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70 (128 B); paste into Hex bytes mode | 32 chars |
| Collision message B (differs in 6 bytes) | 79054025255fb1a26e4bc422aef54eb4 | MD5 (RFC 1321) | Input hex d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f8955ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5bd8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70 (128 B); same MD5 as message A, proof that MD5 cannot detect tampering | 32 chars |
| 5. Output Formats (digest of abc) | ||||
| Hex uppercase | 900150983CD24FB0D6963F7D28E17F72 | MD5 + Hex | Same 16 digest bytes as uppercase hex; hex comparison is case-insensitive | 32 chars |
| HTTP Content-MD5 header (RFC 1864) | kAFQmDzST7DWlj99KOF/cg== | MD5 + Base64 | 24 characters including == padding, the format used by Content-MD5 headers and some object stores | 24 chars |
| Base64URL (RFC 4648 section 5) | kAFQmDzST7DWlj99KOF_cg | MD5 + Base64URL | 22 characters, URL-safe alphabet, no padding | 22 chars |
FAQ
Not for anything an attacker could tamper with. Practical MD5 collisions have been known since 2004, and chosen-prefix collisions were used to forge a rogue CA certificate in 2008 and in the Flame malware in 2012. MD5 is acceptable only for non-adversarial uses such as quick checksums, cache keys and de-duplication. Use SHA-256 or stronger when integrity matters.
Can an MD5 hash be reversed or used to store passwords?MD5 is a one-way function, but it is so fast that GPUs test billions of guesses per second and precomputed tables cover most weak passwords, so a leaked MD5 password hash is effectively plain text. Never store passwords with MD5. Use Argon2id, bcrypt or PBKDF2 with a unique salt, as the OWASP Password Storage Cheat Sheet advises.
How long is an MD5 hash and why do two tools give different results?MD5 produces 128 bits: 16 bytes, shown as 32 hex characters or 24 Base64 characters. Different results almost always mean different input bytes: a trailing newline (echo adds one, echo -n does not), CRLF versus LF line endings, Unicode normalization (NFC versus NFD) or another text encoding. This tool hashes the exact UTF-8 bytes you type.