This decoder needs JavaScript (runs locally in your browser).
Note: the decoder only recognizes functions present in the ABI you pasted — it can't "guess" unknown calldata. Example uses a made-up address, no real funds.
How ABI decoding works
Every Ethereum function call starts with a 4-byte selector — the first 4 bytes of the Keccak-256 hash of the function signature (e.g. transfer(address,uint256)). The selector tells the contract which function is meant; everything after that is the ABI-encoded parameters, in 32-byte words.
Static types (address, uint256, bool) sit directly in those words. Dynamic types (string, bytes, arrays) instead contain an offset pointing to the actual data further back in the calldata — which is why decoding needs the right types, not just the raw bytes.
This tool uses the same vetted library (ethers.js) that powers the Message Verifier: paste the ABI, paste the calldata, and the selector is automatically matched against every function in the ABI.
Frequently asked questions
What is a selector?
What if no function matches?
Can I paste a full ABI JSON?
Does my input leave the browser?
?abi=…&data=…) — only actively sharing that link leaves the browser.Calldata decoded — what about the rest of the transaction?
The ABI Decoder explains the function parameters. For nonce, gas and recipient of the full transaction: the Transaction Decoder.