// septim forge tools · ethereum · keccak-256

Keccak-256 Hash Tool — the one Ethereum uses

client-side · no network calls during use · no wallet · no login

Keccak-256 is not FIPS SHA-3-256. They look similar, accept the same input size, and produce a 256-bit output — but they use different padding and produce different hashes. Solidity's 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.
// compute keccak-256
Input text
Input will be UTF-8 encoded before hashing — the same encoding Solidity uses for keccak256(abi.encodePacked("string")).
// keccak-256 hash (256 bits / 64 hex chars)
// verify zero network calls during use

All hashing happens in your browser.

// devtools network tab

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.

// the sha-3 vs keccak-256 distinction

Why your SHA-3 library gives the wrong answer for Ethereum.

This trips up developers regularly. Here is the full story.

The NIST padding change. Keccak was designed by Bertoni, Daemen, Peeters, and Van Assche and submitted to the NIST SHA-3 competition. When NIST standardized it in 2012, they added a two-bit domain-separation suffix to the message padding — changing 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.
AlgorithmPadding byteUsed byHash 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.

// ethereum use cases

Where Keccak-256 shows up in Ethereum development

Use caseHow Keccak-256 is usedExample
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
// working on solidity?

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.

Septim Tether — $19 lifetime →