Keccak-256 Hash Tool — the one Ethereum uses
client-side · no network calls during use · no wallet · no login
keccak256() and Ethereum's address/storage derivations all use the pre-NIST variant. This tool uses Keccak-256. Most SHA-3 libraries and online SHA-3 tools use FIPS SHA-3-256 — they will give you a different hash.
keccak256(abi.encodePacked("string")).All hashing happens in your browser.
Open DevTools (F12 or Cmd+Option+I) and click the Network tab. The only outbound requests you will see are the CDN load for [email protected] (on page open) and the Google Fonts request. After the page loads, paste any input and click "Compute hash" — zero additional network requests fire. The Keccak-256 permutation runs inside the sha3 library, entirely within the browser's JavaScript engine. No input leaves your machine.
Why your SHA-3 library gives the wrong answer for Ethereum.
This trips up developers regularly. Here is the full story.
0x01 to 0x06. The result is FIPS FIPS-202 SHA-3-256. Ethereum was designed before standardization and locked in the original Keccak padding (0x01). Both accept the same input. Both produce 256-bit output. They produce different hashes for every input.
| Algorithm | Padding byte | Used by | Hash of empty string |
|---|---|---|---|
| Keccak-256 | 0x01 | Ethereum (keccak256()), Solidity, address derivation, storage slot hashing, CREATE2, EIP-712 |
c5d24601... |
| FIPS SHA-3-256 | 0x06 | NIST standard, most crypto libraries (hashlib.sha3_256 in Python, crypto.createHash('sha3-256') in Node), most online SHA-3 tools |
a7ffc6f8... |
If your function selector doesn't match what Solidity produces, or your storage slot hash is wrong, check which algorithm your library is using. This tool always uses pre-NIST Keccak-256.
Where Keccak-256 shows up in Ethereum development
| Use case | How Keccak-256 is used | Example |
|---|---|---|
| Function selectors | First 4 bytes of keccak256(functionSignature) |
transfer(address,uint256) → 0xa9059cbb |
| Event topic IDs | Full 32-byte hash of the event signature | Transfer(address,address,uint256) → 0xddf252ad... |
| Ethereum addresses | Last 20 bytes of keccak256(publicKey) |
The last step of deriving an EOA address from a secp256k1 public key |
| Storage slot hashing | keccak256(abi.encode(key, slot)) for mappings |
EVM uses this to locate a mapping value; Foundry's cast storage uses the same formula |
| CREATE2 address | keccak256(0xff ++ deployer ++ salt ++ keccak256(initcode)) |
Predetermines a contract's address before deployment |
| EIP-712 typed data | Hashes struct types and values for structured signing | keccak256(encodeType(typeHash)) for each type in the struct |
Septim Tether ships 3 pre-commit hooks that catch common Solidity bugs before commit — unchecked return values, missing reentrancy guards, and direct transfer() calls with hardcoded 2300 gas stipend. Pay once.