Selector lookup
Decode the hex code your failed transaction shows
When a modern contract reverts with a custom error and the block explorer does not know the contract's ABI, all you see is a 4-byte hex selector like 0x118cdaa7. This reference maps 44 common selectors back to their named error, with what it means and the fix.
Selector not listed, or want the full story? Paste the transaction hash instead.
Decode a transactionSolidity built-in
OpenZeppelin 5
0x118cdaa7OwnableUnauthorizedAccount0x1e4fbdf7OwnableInvalidOwner0xe450d38cERC20InsufficientBalance0xfb8f41b2ERC20InsufficientAllowance0x96c6fd1eERC20InvalidSender0xec442f05ERC20InvalidReceiver0x94280d62ERC20InvalidSpender0x7e273289ERC721NonexistentToken0x177e802fERC721InsufficientApproval0xe2517d3fAccessControlUnauthorizedAccount0xd93c0665EnforcedPause0x8dfc202bExpectedPause0x3ee5aeb5ReentrancyGuardReentrantCall0xcd786059AddressInsufficientBalance0x1425ea42FailedInnerCall0x5274afe7SafeERC20FailedOperation0xf645eedfECDSAInvalidSignature0xf92ee8a9InvalidInitializationUniswap Permit2
Uniswap Universal Router
Uniswap V3 core
Common DeFi convention
How selectors work: a custom error like OwnableUnauthorizedAccount(address) is identified on-chain by the first 4 bytes of the keccak256 hash of its signature. Every selector on this page was computed from its signature with that method. A selector identifies a signature exactly; in rare cases two different signatures can share the same 4 bytes, which is why pasting the full transaction into a decoder is always the more precise answer.
Got a plain-English message instead of hex? See the transaction error reference.