Revert

ABI & calldata

revert reason decoder

Decode EVM revert data: Error(string) messages, Panic(uint256) codes explained (overflow, division by zero, array out of bounds…), and custom errors by lookup or signature.

runs in your browser
try

paste revert data above, or tap an example. it decodes as you paste.

all panic codes
  • 0x00generic compiler panic
  • 0x01assert(false): an assert condition failed
  • 0x11arithmetic overflow or underflow (outside an unchecked block)
  • 0x12division or modulo by zero
  • 0x21converted a value that is too big or negative into an enum
  • 0x22accessed a storage byte array that is incorrectly encoded
  • 0x31.pop() on an empty array
  • 0x32array index out of bounds
  • 0x41allocated too much memory or created an array that is too large
  • 0x51called a zero-initialized variable of internal function type

good to know

what does 0x08c379a0 mean?

it is the selector of Error(string), what require(cond, "message") and revert("message") produce. the rest of the data is the abi-encoded message.

what is Panic(uint256) / 0x4e487b71?

solidity >= 0.8 reverts with a panic code for bugs rather than expected failures: 0x11 overflow or underflow, 0x12 division by zero, 0x32 array index out of bounds, 0x01 a failed assert.

the revert data is just 0x

a bare revert() or require(cond) without a message, running out of gas, or an invalid opcode. run the tx in a fork with a trace (forge, cast run) to see where it stopped.