Contract Event Decoder is a free online tool that turns raw EVM event logs into readable parameters — paste a contract ABI and a log's topics and data, and it matches the event by its Keccak-256 signature hash, then decodes every indexed and non-indexed value. No wallet, no RPC call, nothing leaves this page.
1 · Contract ABI
Paste a JSON array of event objects, or a full contract ABI — only the events are used. Tuple / struct types are not supported in this version.
2 · Event log
Paste a raw log object with topics and data (extra fields like address are ignored) — or paste just a topics array and put the data below.
Decoded event
Name
Type
Indexed
Value
Indexed string, bytes and array values are never stored on-chain — only their Keccak-256 hash appears in the topic, so the original value cannot be recovered from the log.
How it works
Signature hash — every event has a signature like Transfer(address,address,uint256). Its Keccak-256 hash is topics[0]; matching that hash against the ABI identifies the event.
Indexed vs. data — indexed parameters live in topics[1…] (one 32-byte word each); the rest are packed as 32-byte words in data. Dynamic types (string, bytes, arrays) are stored as an offset plus length plus payload.
Local only — Keccak-256 and the ABI decoder are implemented in this page with no libraries. Your ABI and log never leave the browser.