ABI encode function call: build calldata from a signature and arguments
Type a function signature, then one value per argument: the encoder builds the calldata a wallet or a multisig needs, with the selector and the canonical signature. Arrays and structs are entered as JSON, and max stands for the largest unsigned value.
How to use it
- 1Type the signature, e.g. transfer(address to, uint256 amount).
- 2Fill in each argument: numbers in decimal or hex, addresses as 0x…, arrays and structs as JSON.
- 3Copy the calldata into your transaction, multisig or script.
How ABI encoding works
Calldata starts with the 4-byte selector of the function. The arguments follow in order: static types (address, uint, bool, bytes32) each take one 32-byte word, padded; dynamic types (string, bytes, arrays) are written as an offset first and their contents after the static part.
Structs are encoded as tuples of their members. The encoder does all of this for you with viem's encodeFunctionData.
Frequently asked questions
How do I enter an array or a struct?
As JSON: [1, 2, 3] for uint256[], ["0x…", "0x…"] for address[], and an array of objects or arrays for a struct array, e.g. [{"to": "0x…", "amount": "5"}].
Does the encoder send a transaction?
No. It only builds the calldata; you send it with your wallet, multisig or script.
How do I check what I encoded?
Paste the calldata into the calldata decoder: it reads the function and arguments back.
Is what I type 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.
Can I get an alert when this function is called?
Yes. Add the contract and pick the method: every successful call reaches you within seconds of confirmation, with conditions on its arguments if you like.
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.