How to Decode ABI-Encoded Calldata and Event Logs
Every EVM transaction carries ABI-encoded data. Here's how to turn raw hex into human-readable function calls and event parameters — without writing a single script.
What Is ABI-Encoded Data?
When you call a smart contract function, your wallet encodes the function name and arguments into a hex string called calldata. It starts with a 4-byte function selector followed by 32-byte encoded arguments.
0xa9059cbb 0000000000000000000000005B38Da6a701c568545dCfcB03FcB875f56beddC4 0000000000000000000000000000000000000000000000000de0b6b3a7640000 → transfer(address, uint256) to: 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4 amount: 1000000000000000000
Event logs work similarly — they contain indexed topics (used for filtering) and ABI-encoded data fields. Without the ABI, these are just opaque hex blobs.
The Hard Way: Decoding by Hand
The traditional approach to decoding calldata or event logs requires development tooling:
- →Extract the 4-byte selector and look it up in a signature database
- →Use ethers.js Interface.decodeFunctionData() or web3.js to parse the arguments
- →For events, match topic[0] against known event signatures and decode the data fields
- →Handle edge cases: proxy contracts, custom errors, packed encoding
- →Write and run a script every time you need to inspect a transaction
The Easy Way: ABI Page Builder
ABI Page Builder includes two built-in decoders that work instantly in your browser:
Calldata Decoder (Overview tab)
- Paste your ABI and generate a contract page
- Open the Overview tab
- Paste raw calldata hex into the Calldata Decoder
- See the decoded function name, parameter names, types, and values
If no matching function is found, a raw fallback mode extracts the 4-byte selector and splits data into 32-byte slots.
Event Log Decoder (Events tab)
- Switch to the Events tab on your contract page
- Enter a transaction hash to fetch logs, or paste raw log JSON
- See decoded event names, indexed parameters, and data fields
When Would You Use This?
- Debugging a failed transaction — see exactly which function was called and with what arguments
- Auditing contract interactions — verify that a multisig payload matches the intended action
- Investigating on-chain activity — decode MEV bot transactions or suspicious contract calls
- Verifying governance proposals — confirm that encoded execution data matches the proposal description
- Inspecting event history — decode raw logs to understand what happened in a transaction
Manual Decoding vs ABI Page Builder
| Criteria | Manual (script) | ABI Page Builder |
|---|---|---|
| Setup time | 5–15 min | 30 seconds |
| Dependencies | Node.js, ethers.js | None |
| Error handling | Write your own | Built-in fallback |
| Event log support | Extra code needed | Built-in |
| Shareable | No | Yes (IPFS link) |
👉 Got calldata to decode?
Try It Now