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.
Solidity 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.