multichain
/index /tools /28 evm-event-topics
live

Event log
decoder.

Known
28
standard events, hashed locally
Custom
Any
hash any signature
Network
None
zero requests
Auth
None
no wallet, no signup
/28EVENT TOPIC DECODER
optional
/log — topics, one per line
0 words

/notes

01
A full hash, not a selector.
Event topic0 is the complete 32-byte keccak-256 of the signature, unlike function selectors which truncate to 4 bytes. That is why a topic can be matched with certainty while calldata selectors can collide.
02
Indexed arguments live in topics.
Up to three indexed parameters get their own topic slots for efficient filtering; the rest are ABI-encoded into data. Indexed strings, bytes, and structs are stored only as hashes, so those values are unrecoverable from the log alone.
03
Verify, never trust.
Every hash in the local table is computed from signature text at load time by the same keccak you can poke at in the hash playground. Nothing here is a hardcoded constant that could silently rot.

/faq

01

What is topic0?

The first entry in an event log's topics array: the keccak-256 hash of the full event signature, like Transfer(address,address,uint256). Unlike function selectors it is the whole 32-byte hash, not truncated to 4 bytes.

02

Why does my topic0 not match anything?

The local table covers the highest-traffic standard events (ERC-20, 721, 1155, WETH, Uniswap, proxies, access control). For anything else, paste the event signature from the contract's source or ABI and the tool hashes it for comparison.

03

How are indexed arguments stored?

Each indexed argument becomes its own topic (topics 1 to 3), and everything else is ABI-encoded into the data field. Indexed strings, bytes, and structs are stored as their keccak hash, so their original value cannot be recovered from the log.

04

Why show each word as both address and number?

The event signature alone does not record which arguments were indexed, so the decoder shows every 32-byte word with its plausible readings: raw hex, an address when the top 12 bytes are zero, and the unsigned integer value.