Skip to content

Decode event log topics and data into the event name and typed arguments using an ABI or known events.

Loading tool

About Event Log Decoder

Decode an event log's topics and data into the event name and typed arguments. Paste a log object from eth_getLogs or a receipt, or the topics and data separately. With an ABI the decode is exact; without one, topic0 is matched against bundled common events and each indexed/non-indexed layout that fits is tried. Decoding is fully offline.

Common uses

  • Read Transfer, Approval or Swap events from a transaction receipt
  • Decode logs returned by eth_getLogs when building an indexer
  • Tell apart ERC-20 and ERC-721 Transfer events, which share topic0
  • Debug events emitted in a test

FAQ

What are topics and data in an Ethereum log?
Topics hold up to four 32-byte values: topic0 is the hash of the event signature (unless the event is anonymous) and the rest are indexed parameters. Non-indexed parameters are ABI-encoded in the data field.
Why can't I read an indexed string or array?
For dynamic types such as string, bytes and arrays, the indexed topic stores the keccak256 hash of the value, not the value itself, so the original cannot be recovered from the log.
How do I decode an anonymous event?
Anonymous events have no topic0 signature hash, so they cannot be matched automatically. Provide the event in a JSON ABI marked anonymous.