Overview
Introduction
MD6 is Ron Rivest's 2008 entry in the NIST SHA-3 competition, a Merkle-tree-structured hash built for parallel computation and arbitrary output lengths, a sharp departure from the sequential, single-line design of his earlier MD4/MD5.
This tool computes MD6's 256-bit digest of any text you provide, entirely in your browser, using the algorithm's default parameters (unkeyed, fully hierarchical mode).
What Is MD6 Hash Calculator?
MD6 is a cryptographic hash function designed by Ronald Rivest and collaborators, submitted to NIST's SHA-3 competition in 2008, producing a digest shown here as 64 hexadecimal characters at its common 256-bit output size.
Rather than processing one sequential block after another, MD6 splits the message into 512-byte blocks, compresses each one independently at the bottom of a tree, then combines every four resulting chunks one level up, repeating until a single root chunk remains, a structure that naturally supports parallel computation and tunable tree depth.
How MD6 Hash Calculator Works
Your UTF-8 encoded input is split into 512-byte blocks (the last one zero-padded as needed) and each is compressed via MD6's 89-word-input, 16-word-output compression function, run for a number of rounds derived from the requested output length.
Each level's four-chunk groups get compressed again one level up the tree, cascading until only one 128-byte chunk remains; the last 256 bits of that final chunk become the hex-encoded digest this tool returns.
When To Use MD6 Hash Calculator
Use this when you specifically need to reproduce an MD6 digest, exploring the SHA-3 competition's design space, working with software that adopted MD6 despite it not becoming the standard, or comparing tree-based hash constructions against sequential ones.
For new general-purpose hashing needs, SHA-256, SHA-3, or BLAKE3 are the standard, far more widely supported choices; MD6 never became a standard and has minimal library support outside research contexts.
Often used alongside SHA-256 Hash Calculator and BLAKE3 Hash Calculator.
Features
Advantages
- Naturally parallelizable Merkle-tree structure, unlike sequential Merkle-Damgard hashes.
- Supports arbitrary output lengths (1 to 512 bits) and an optional key from a single unified design.
- No known practical break; it exited the SHA-3 competition by its own designers' choice, not due to a discovered weakness.
Limitations
- Never became a standard (Keccak won SHA-3), so it has far less library, hardware, and tooling support than SHA-2, SHA-3, or BLAKE3.
- Significantly more complex to implement correctly than a sequential hash, given its tree construction and variable rounds/levels.
- Practically irrelevant outside of specific legacy adopters or SHA-3-competition-era research and comparison work.
Examples
Best Practices & Notes
Best Practices
- Use MD6 specifically to match or reproduce a value from a system that already relies on it, not as a new general-purpose default.
- Remember this tool fixes MD6 at 256-bit output with default (unkeyed, fully hierarchical) parameters; a different output length or keyed mode will produce a different digest.
- For new designs without a specific MD6 compatibility requirement, prefer SHA-256, SHA-3, or BLAKE3, all of which have far broader support.
Developer Notes
This tool ports Ron Rivest's official public-domain MD6 reference implementation (md6.hpp / md6_compress.cpp / md6_mode.cpp) to TypeScript using native BigInt 64-bit arithmetic, reproducing its exact Merkle-tree recursion, compression function, and padding. It's verified against that same reference implementation (compiled locally from source and run directly) across all four standard digest sizes, several block-boundary message lengths, and a 20000-byte message that exercises multi-level tree recursion, not just single-block inputs.
MD6 Hash Calculator Use Cases
- Reproducing a known MD6 value while studying the SHA-3 competition's design space
- Working with legacy software that specifically adopted MD6 before Keccak was selected as SHA-3
- Comparing tree-based (parallel) hash construction against sequential Merkle-Damgard hashes on identical input
- Confirming an MD6 implementation against a known-correct reference value
Common Mistakes
- Assuming MD6 is SHA-3; it competed for that title but was withdrawn before the final rounds and is a distinct algorithm from the Keccak-based SHA-3 standard.
- Expecting a match against another MD6 tool that uses a different output length, key, or tree-depth (L) parameter; all three change the resulting digest.
- Choosing MD6 for a brand-new design without a specific compatibility reason, given its minimal real-world tooling support.
Tips
- If you need a different MD6 output length or a keyed digest, note that this tool intentionally only exposes the common 256-bit, unkeyed, default-parameter configuration.
- Use the SHA-256 or BLAKE3 tools alongside this one to compare a sequential and a tree-based/parallel hash on the same input.