SHA-3 / SHAKE / Keccak Hash Calculator
EncodingEverything runs locally in your browser — nothing is uploaded
Three hash families built on the same permutation, covered in one place. They share a single implementation and differ only in a padding byte — and their outputs are entirely unrelated. That is the trap: SHA3-256 and Keccak-256 are not the same thing. When NIST finalised SHA-3 in 2015 it changed the padding from 0x01 to 0x06, and that one byte makes the two produce completely different digests. Ethereum has used original Keccak-256 from day one — contract addresses, transaction hashes, event topics and ERC-20 method selectors are all built on it, so checking them against SHA3-256 gives you something perfectly well-formed that nobody recognises. Each family has its own place; the dropdown is grouped accordingly.
Features
- Ten variants: SHA3-224/256/384/512, SHAKE128/256 and Keccak-224/256/384/512
- SHAKE output length is configurable (1–512 bytes); the others are fixed by the standard
- Original Keccak listed separately from SHA-3 — Ethereum uses the former
- Output as hexadecimal (upper or lower case) or Base64
- Non-ASCII text hashed as UTF-8 bytes, matching openssl and Ethereum tooling
- Implemented here, so it does not depend on which SHA-3 variants the browser offers
How to use
- Paste your text into the input box
- Choose the variant (pick Keccak-256 for anything Ethereum-related)
- Set the output length if you chose a SHAKE variant
- Press Ctrl/⌘ + Enter or click Run, then copy the result
FAQ
- What is the difference between SHA3-256 and Keccak-256?
- One padding byte, and completely different results. Both use the same Keccak-f[1600] permutation and the same 136-byte block size; the only difference is the byte appended at the end of absorption. Original Keccak appends 0x01, NIST-finalised SHA-3 appends 0x06. For the empty string, Keccak-256 gives c5d24601… while SHA3-256 gives a7ffc6f8… — both well-formed, not one byte in common. Ethereum uses original Keccak throughout, so you must select Keccak-256 when verifying contract addresses or transaction hashes.
- What is SHAKE, and why can its output length vary?
- SHAKE is an extendable-output function (XOF) — it can squeeze out any amount of output on demand, rather than a fixed 32 bytes like SHA-256. This is not truncation; it falls out of the sponge construction, which permutes again each time a block is squeezed and can keep going indefinitely. It suits cases that need variable-length output, such as deriving several keys from one seed, and it is used heavily in KMAC and post-quantum signatures. The cap here is 512 bytes, which is far beyond practical use.
- Which of the ten variants should I pick?
- By purpose. For anything Ethereum or blockchain related, always Keccak-256 — never SHA3-256. For new designs following NIST standards, pick SHA3-224/256/384/512 by the length you need, with 256 the most common. For variable-length output such as key derivation or random-number expansion, pick SHAKE128 (faster) or SHAKE256 (more security margin). Keccak-224/384/512 come up mainly when reproducing older systems or comparing implementations.
- Is SHA-3 more secure than SHA-256, and should I migrate?
- There is no need today. SHA-256 has no practical attack, and SHA-3 matters for a different reason: it is structurally unrelated. SHA-2 builds on Merkle–Damgård, SHA-3 on a sponge, so their weaknesses do not overlap. SHA-3 is therefore insurance against a future break in SHA-2 rather than a stronger choice right now. Either is fine for new systems; SHA-256 has better compatibility and broader hardware support.
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.
RIPEMD-160
EncodingCompute RIPEMD-160 digests, or switch to HASH160 — the SHA-256 then RIPEMD-160 step behind Bitcoin addresses. Output as hex or Base64.
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.
HTML Entities
EncodingTurn < > & and quotes into HTML entities and decode them back in a single pass, so &lt; becomes <, not an angle bracket. Runs in your browser.