UtilityToolsLab

© 2026 UtilityToolsLab. Built and maintained by the UtilityToolsLab Team.

Free eBooks·About·Changelog·Privacy Policy·Terms of Service·Report a bug
HomeBlockchain EncodingKeccak-256

Related Tools

RLP EncoderBase58 EncoderEIP-55 ChecksumSatoshi/BTC

Keccak-256 Hash Generator

Compute the Keccak-256 hash of text or raw hex bytes entirely in your browser — the Ethereum variant, not NIST SHA-3. No uploads, ever.

You Might Also Like

All Blockchain Encoding

Function Selector

Compute the 4-byte Ethereum function selector from a Solidity signature using Keccak-256, entirely in your browser. Paste names or types.

RLP Encoder

Decode a raw Ethereum RLP payload into its fields, or serialise a nested structure back into bytes. Shows every item, length prefix and nesting level.

Base58 Encoder

Encode bytes or text to Base58 and Base58Check, or decode a Base58 string back to hex with a full checksum check. Runs entirely in your browser.

EIP-55 Checksum

Apply or validate the EIP-55 mixed-case checksum on any Ethereum address. Shows checksummed, lowercase, and uppercase forms with instant copy.

Two hash functions share a name in casual conversation but not in output. Keccak, the algorithm Ethereum standardised on before NIST finished ratifying SHA-3, and SHA-3 itself pad their input differently, so hashing the same bytes through each gives two different 32-byte digests. This tool computes the one Ethereum actually uses, the one keccak256() means inside a Solidity contract, using a from-scratch implementation rather than a browser API that either doesn’t exist or answers the wrong question.

Reach for it to hash a string the way a contract would, to check a storage slot or an ENS label by hand, or to confirm that a value computed somewhere else in a pipeline actually matches what the chain will compute. Switch to hex mode when the input is already bytes rather than text, since ABI-encoded calldata is not a string and shouldn’t be hashed as UTF-8.

Worked Example: Hashing a Finance Team Sentence

Click Load Sample and the input fills with “The finance team met with Dr. Alvarez before the 9 a.m. review.” That exact sentence, treated as UTF-8 text, hashes to 0xe4735482d3e9b587e56ced5f84c3f1969f10be7481c5317218fe280c7f22114f. Paste that same sentence into any other correct Keccak-256 implementation and you get the identical 64 hex characters back; that reproducibility, not the specific digits, is what makes a hash function useful as a fingerprint.

Format Notes: Text Versus Hex Bytes

  • Text (UTF-8) encodes exactly what you typed, spaces and punctuation included, before hashing. Two visually identical strings in different Unicode normalisation forms will hash differently, because the raw bytes differ.
  • Hex Bytes parses the input as raw bytes instead. A leading 0x is optional and stripped either way, and whitespace between bytes is ignored, but the digit count after that must be even; deadbee triggers “Hex input must have an even number of digits.”
  • A character outside 0-9 and a-f in hex mode is rejected by name rather than silently dropped: deadbeeg reports “Invalid hex character: "g" — only 0-9 and a-f are allowed.”

Edge Cases: The Empty Input and Byte Boundaries

An empty input in either mode still hashes to a real value: 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470, the Keccak-256 of zero bytes, which shows up often enough as a constant in Ethereum client source that it’s worth recognising on sight. Internally, input is absorbed 136 bytes at a time; nothing about that boundary is visible in the output, and every length up to and including several megabytes hashes in milliseconds in a modern browser tab.

0 bytes (UTF-8)

Keccak-256
0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

This is Keccak-256, the version Ethereum uses for function selectors, storage slots and ENS namehash — not the NIST-standardised SHA-3, which pads differently and gives a different digest for the same input. Switch to Hex Bytes when you need to hash raw ABI-encoded data instead of a literal string; the 0x prefix is optional either way.