#️⃣ Keccak-256 / SHA-3 Hash & Function Selector
Hash text with Keccak-256 (the hash Ethereum actually uses) or NIST SHA3-256 — shown side by side so you never confuse them — and compute a contract’s 4-byte function selector.
Keccak-256 (Ethereum — pad byte 0x01)
0x1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8
SHA3-256 (NIST FIPS 202 — pad byte 0x06)
0x3338be694f50c5f338814986cdf0686453a888b84f424d792af4b9202398f392
⚠ These differ! Ethereum uses Keccak-256 (the original submission), which is not the same as the finalised NIST SHA3-256 — they use a different padding byte and produce different hashes. Most tools blur this; pick the right one for your use.
How the keccak-256 / sha-3 hash & function selector works
Ethereum uses Keccak-256, the original Keccak submission, which is NOT the same as the finalised NIST SHA3-256 standard — they use a different internal padding byte and produce different digests for the same input. This tool computes both and labels each, so you use the right one. The function-selector mode takes a canonical function signature like transfer(address,uint256) and returns the first 4 bytes of its Keccak-256 hash — the selector that prefixes calldata.
The exactness wedge: most “SHA-3” tools quietly give you one or the other. This shows both, correctly labelled. It is a hashing/dev utility — no keys, no funds, no financial advice.
Frequently asked questions
Is Keccak-256 the same as SHA3-256?
No — and this is a common, costly confusion. Ethereum uses Keccak-256 (the original submission, padding byte 0x01). NIST later standardised SHA3-256 with a different padding byte (0x06), so the two produce different hashes for the same input. This tool shows both, labelled.
What does Ethereum use?
Keccak-256 — for address checksums (EIP-55), function selectors, event topics, storage slots and more. When Solidity code calls keccak256(), it means the Keccak variant, not NIST SHA3-256.
What is a 4-byte function selector?
The first 4 bytes of the Keccak-256 hash of a function’s canonical signature (e.g. transfer(address,uint256) → 0xa9059cbb). It prefixes the calldata so a contract knows which function to run.
What is a “canonical” signature?
The function name and parameter types with no spaces and no parameter names — transfer(address,uint256), not transfer(address to, uint256 amount). The selector is computed from that canonical form.
Is my input uploaded?
No — hashing runs entirely in your browser.