Tool · runs in your browser

Decode event logs: topics and data back to named arguments

Paste one log from a receipt or eth_getLogs: its topics and data, or the whole JSON object. The decoder matches topic0 against your ABI or the events in our catalog, reads the indexed arguments from the topics and decodes the rest from the data.

Event log
The topics and data of one log, as eth_getLogs or a receipt returns them.

Without one, the decoder tries every event in our catalog.

How to use it

How to use it

  1. 1Copy a log from a transaction receipt, a block explorer's Logs tab or an eth_getLogs response.
  2. 2Paste the topics (one per line) and the data, or the whole log object. Add the ABI if the event isn't in our catalog.
  3. 3Read the event and its arguments, then open the event's page for its layout, code and ready-made alerts.
Explained

How a log is encoded

A log carries the emitting contract's address, up to four topics and a data field. topic0 is the keccak-256 hash of the event's signature; each indexed argument takes the next topic as a 32-byte value; every other argument is ABI-encoded in the data.

Decoding works backwards: topic0 names the event, the ABI says which arguments are indexed, and the data is decoded with the types of the rest. An indexed string or array is only its hash, so its value can't be recovered.

Explained

ERC-20 or ERC-721 Transfer?

Both standards emit Transfer(address,address,uint256), so their logs share topic0. An ERC-20 log has three topics and the amount in the data; an ERC-721 log has four topics, the last being the token id, and empty data. The decoder tries both and picks the one that fits.

FAQ

Frequently asked questions

Where do I find a log's topics and data?

In the transaction receipt (logs array), on a block explorer's Logs tab, or in the result of eth_getLogs. Each log has a topics array and a data field.

Why does my log not decode?

Either topic0 isn't in the ABI you pasted, or the ABI's indexed flags don't match the log: the number of topics must equal one plus the indexed arguments, and the data must hold the rest.

Can I paste the whole log JSON?

Yes. Paste the object with topics and data, as a receipt or eth_getLogs returns it, and leave the data field empty.

Is what I paste sent anywhere?

No. The tool runs entirely in your browser: what you paste is never sent to a server and there is no sign-up.

How do I get an alert when a contract emits this event?

Open a ready-made rule from the result: the events the app knows link to rules with the contract and the conditions filled in. Sign in, pick your chat and click Create.

Keep exploring

More tools and alerts

Know the moment it happens on chain

Turn any event into an alert. The Beta plan is free: one wallet and one contract, no credit card.