#️⃣ 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. Both produce a 256-bit (32-byte) digest, shown as 64 hexadecimal characters. 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.
How long is a Keccak-256 hash?
Always 256 bits, 32 bytes, written as 64 hexadecimal characters, no matter how long or short the input is. The empty string, for instance, hashes to a fixed 64-character value, and a one-character change to the input produces a completely different digest.
Can I recover the input from the hash?
No, Keccak-256 is a one-way function. The only way to find an input matching a given hash is to try candidates until one matches, which is computationally infeasible for anything unpredictable. That one-way property is what makes it usable for commitments, content addressing and selectors.
Is my input uploaded?
No, hashing runs entirely in your browser.