How to use the SHA-3 and Keccak hash generator
- Enter your data in Text to hash.
- Choose the Variant for the main result: SHA3-224, SHA3-256 (default), SHA3-384, SHA3-512, or Keccak-224, Keccak-256 (Ethereum), Keccak-384, Keccak-512.
- Set Input is to Text (UTF-8), Hex bytes or Base64 bytes.
- Pick the Output:
hex,HEXorBase64. - Copy the main digest, or use the table below it, which lists all eight variants for the same input.
What it does and when to use it
SHA-3 is the newest NIST hash family, built on the Keccak “sponge” design that won a public competition in 2012. Before NIST finalised it in 2015, it changed the padding rule, and by then Ethereum had already adopted the earlier Keccak. That is why two almost identical algorithms are in use today, and why mixing them up is a common bug in blockchain code.
Use this page to compute an Ethereum function selector or event topic, check a SHA-3 test vector, or work out which variant a library is really using by comparing its output with the table. For the SHA-2 family, see the SHA-256 generator and the SHA-512 generator. To see SHA-3 next to MD5, BLAKE3 and others at once, use hash all.
How it works
The hash-wasm library runs the Keccak-f[1600] permutation as WebAssembly in your browser. The input bytes are absorbed into a 1,600-bit state in chunks, the state is shuffled with 24 rounds after each chunk, and the digest is squeezed out at the end. Bigger outputs absorb smaller chunks per round, which is why SHA3-512 is slower than SHA3-256.
The only difference between the two families is the padding: FIPS 202 SHA-3 adds the domain bits 0x06 to the end of the message, original Keccak adds 0x01. One changed bit at the start of padding gives a completely different digest.
Worked examples
FIPS 202 example. abc with SHA3-256 gives 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532. The table shows Keccak-256 of the same abc as 4e03657a…a12d6c45, a completely different value.
Ethereum’s empty hash. With Input is set to Hex bytes, nothing typed and Keccak-256 selected, the result is c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. This value appears in Ethereum as the code hash of accounts with no code.
A function selector. Keccak-256 of transfer(address,uint256) is a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b. Its first four bytes, a9059cbb, are the selector at the start of every ERC-20 token transfer.
Limits and tips
- Write function signatures with no spaces and canonical types (
uint256, notuint), or the selector will be wrong. - Text is hashed as UTF-8. For a hex string that represents bytes, such as an address, switch Input is to Hex bytes.
Frequently asked questions
Is Keccak-256 the same as SHA3-256?
Is SHA-3 more secure than SHA-256?
Can I use SHA-3 for passwords?
Does this tool support SHAKE128 or SHAKE256?
Sources
- FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions — NIST, accessed 2026-10-07
How do we know nothing is uploaded? Test it yourself on the privacy proof page.