Keccak / SHA3 Hasher
Free keccak256 online tool: compute 4-byte function selectors, event topic0 hashes, and EIP-55 checksum addresses. Keccak-256/512 and SHA3 in-browser.
What is Keccak / SHA3 Hasher?
Keccak / SHA3 Hasher is a free online tool to generate cryptographic hashes using Keccak and SHA3 algorithms. Keccak-256 is the hash function used by Ethereum for addresses, transaction IDs, and smart contract functions. SHA3 is the NIST standardized version with slight modifications.
This tool supports both text and hexadecimal input, and a Solidity/EVM helper panel that derives the 4-byte function selector, the 32-byte event topic0, and the EIP-55 checksum address directly from Keccak-256 — making it perfect for blockchain developers, smart contract auditors, and cryptocurrency enthusiasts. See also our Ethereum Unit Converter, SHA-512 Hash Generator, and SHA-256 Hash Generator.
Available Hash Algorithms
| Algorithm | Output Size | Use Case |
|---|---|---|
| Keccak-256 | 256 bits (32 bytes) | Ethereum addresses, transaction hashes, function selectors |
| Keccak-512 | 512 bits (64 bytes) | High-security applications, advanced cryptography |
| SHA3-256 | 256 bits (32 bytes) | NIST standard, general cryptographic hashing |
| SHA3-512 | 512 bits (64 bytes) | NIST standard, maximum security hashing |
What's the difference between Keccak and SHA3?
Keccak won the SHA3 competition in 2012, but NIST made slight modifications before standardizing it as SHA3 in 2015. Ethereum uses the original Keccak algorithm (pre-NIST), not the standardized SHA3. This means keccak256('') ≠ sha3_256('') despite both being 256-bit hashes. Always use Keccak-256 for Ethereum development.
Why does Ethereum use Keccak-256?
Ethereum chose Keccak-256 before SHA3 was finalized by NIST. It's used for: generating contract addresses from deployer address and nonce, creating transaction IDs, hashing function signatures (first 4 bytes become function selector), and deriving storage slot locations in smart contracts.
When should I use hex input mode?
Use hex input when hashing binary data like bytecode, encoded function calls, or raw transaction data. The tool converts hex strings to byte arrays before hashing. For example, hashing '0x1234' will hash the bytes [0x12, 0x34], not the text characters '0x1234'.
How to verify Ethereum addresses?
To derive an Ethereum address: 1) Take the public key (64 bytes, excluding 0x04 prefix), 2) Hash it with Keccak-256, 3) Take the last 20 bytes (40 hex characters), 4) Add '0x' prefix. The result is the Ethereum address. This tool can compute step 2.

How is an EIP-55 mixed-case checksum address derived?
EIP-55 adds a typo-resistant checksum to a 20-byte Ethereum address by mixing letter case. Take the 40 lowercase hex characters of the address (no 0x), compute keccak256 of that lowercase ASCII string, then for each address character that is a letter (a-f), uppercase it when the corresponding hex nibble of the hash is 8 or greater; digits (0-9) stay unchanged. For example, the address 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed becomes 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed. This is exactly what the Solidity/EVM helper panel computes for any 40-hex address (or a 128-hex uncompressed public key, which is first keccak256-hashed and reduced to its last 20 bytes).
How do I compute a 4-byte function selector and an event topic0?
A function selector is the first 4 bytes of keccak256 of the canonical signature (types only, no spaces or argument names). For example, keccak256('transfer(address,uint256)') = 0xa9059cbb..., so the selector is 0xa9059cbb — the 4-byte prefix of ERC-20 transfer calldata. An event topic0 is the full 32-byte keccak256 of the event signature: keccak256('Transfer(address,address,uint256)') = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, the indexed topic Ethereum logs use to filter ERC-20 Transfer events. Enter the signature in Keccak-256 single mode and the helper panel shows both instantly.
What is the exact difference between Keccak and SHA3 padding?
Both use the same Keccak-f[1600] sponge permutation; the only difference is the domain-separation byte appended during padding. Original Keccak (used by Ethereum) appends the bit pattern 0x01 then pads with 0x80 (pad10*1), while NIST SHA3 appends 0x06 (the two extra bits 01 distinguish SHA3 from SHAKE and other Keccak instances) before the same pad10*1. That single padding byte is why keccak256('') = c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 but sha3_256('') = a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a — identical permutation, different prefix-free padding. Always pick Keccak-256 for any Ethereum/Solidity work.
Is this tool safe to use?
Yes! All hashing, selector/topic derivation, and EIP-55 checksum computation happen entirely in your browser using the js-sha3 JavaScript library. No data is sent to any server. However, never hash sensitive private keys or secrets in any online tool - always use offline, audited tools for sensitive cryptographic operations.
Common Use Cases
- Smart Contract Development: Generate function selectors (first 4 bytes of keccak256 hash of function signature)
- Ethereum Address Verification: Compute Keccak-256 hash of public keys to derive addresses
- Transaction Analysis: Hash transaction data to verify transaction IDs
- Event Signature Generation: Create event topic hashes for Ethereum logs
- Storage Slot Calculation: Determine storage locations in Solidity mappings and arrays
- Data Integrity: Verify file integrity using SHA3 NIST standard hashes
- NFT Metadata: Hash metadata to create unique identifiers for NFTs
- Merkle Tree Construction: Generate leaf and node hashes for Merkle proofs
