Hashing
Keccak-256 hash generator
Keccak-256 hash generator computes the 64-character Keccak-256 digest of text you paste, entirely in your browser. Solidity and web3 developers use it to reproduce function selectors, event topics, and signature hashes locally, then compare them with on-chain values without running a node. This is the original Keccak padding Ethereum standardized on, not NIST SHA3-256, which differs for the same input. Output is lowercase hex, always 64 characters.
How to use Keccak-256
- Open Keccak-256 in the Toolbox101 app.
- Paste the text, signature, or encoded value to hash into the
Inputbox. - The 64-character digest appears in the
Outputbox as you type. - Click
Copyto copy the digest, then compare it with your on-chain or reference value.
Worked example
Keccak-256 returns the output below for this input.
Input
abcOutput
4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45Check it yourself: open Keccak-256 and enter the same input.
Frequently asked questions
Is Keccak-256 the same as SHA3-256?
No, though both are Keccak sponge instances. NIST changed the padding when finalising SHA-3 (0x06 and a suffix instead of Keccak's 0x01), so the digests differ for the same input. Ethereum and Solidity's keccak256 use the original padding, which is what this tool computes; the SHA3-256 tool here follows the NIST standard and gives a different result.
What is keccak256 used for in Ethereum?
Constantly. Function selectors are the first four bytes of keccak256 of a signature string, event topics hash the event signature, addresses are the last 20 bytes of keccak256 of the public key, and contracts call keccak256(abi.encodePacked(...)) for deterministic ids. Reproducing any of these locally and comparing with verified on-chain values is the typical use.
Why is a keccak256 hash always 64 characters?
Keccak-256 emits 256-bit digests (32 bytes) and each byte renders as two hex characters, so output is always 64 lowercase characters whatever the input length. A useful landmark: the empty string hashes to c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470, the zero-data hash you will see in contract code.
Can I use this to check a Solidity function selector?
Yes. Paste the full signature, like transfer(address,uint256), and hash it: the selector is the first eight hex characters of the digest: a9059cbb for that signature. Then compare with the 4-byte selector your frontend or explorer shows. Signatures must match exactly, including spaces and capitalization.