Official site — always check you are on kripicard.comVerify
Web3 tools
Decode Ethereum calldata into a readable function call with named arguments. Common ERC20, NFT and router signatures are built in, so most transaction input decodes without supplying an ABI.
Paste calldata to decode it, or try an example.
Every contract call is a hex string with a fixed structure. Reading it by hand is possible once you know where the boundaries fall.
| Part | Size | What it holds |
|---|---|---|
| Selector | 4 bytes | First 4 bytes of keccak256 of the signature |
| Static arg | 32 bytes each | Addresses, uints and bools, each right-aligned in a full word |
| Dynamic arg | 32-byte offset | Strings, bytes and arrays store a pointer; the contents sit later in the payload |
This is why an address argument appears padded with 24 zero bytes: a 20-byte address still occupies a full 32-byte word. It is also why argument count alone cannot tell you the length of the calldata.
Calldata is the input field of an Ethereum transaction. The first 4 bytes are a selector identifying which function is being called, and everything after it is the ABI-encoded arguments, packed into 32-byte words.
Yes. Transfers, approvals, NFT transfers and common router and permit calls are all in the built-in signature table, so pasting the calldata is usually enough. Supply an ABI only for a contract with custom functions.
It is the first 4 bytes of the keccak-256 hash of the function signature, for example transfer(address,uint256). It identifies the function but is not reversible, so an unknown selector cannot be recovered without an ABI.
Token amounts are integers in the token's smallest unit. 1 USDC is 1000000 because USDC has 6 decimals. Check the token's decimals before reading the number.
Decoding happens on this site's own server and nothing is stored or forwarded to a third party. No wallet connection is needed and no signature is ever requested.