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

  1. Open Keccak-256 in the Toolbox101 app.
  2. Paste the text, signature, or encoded value to hash into the Input box.
  3. The 64-character digest appears in the Output box as you type.
  4. Click Copy to 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

abc

Output

4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45

Check 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.

Use Keccak-256 now

Runs in your browser. Nothing you type is uploaded.