Tx Doctor / EVM error library

Why did my EVM transaction fail?

A revert is one of a handful of things: the contract's own check failed, the gas ran out, an ERC-20 allowance or balance was short, the swap slipped past your limit, or the nonce was already used. Each entry below explains how to tell them apart — and what actually fixes it.

Diagnose my transaction

Chains this tool reads

Ethereum 1Base 8453Arbitrum One 42161OP Mainnet 10Polygon 137BNB Chain 56

The chain is detected from the hash itself, so there is no network switch to get wrong. Unsupported chains are named explicitly instead of guessed.

Execution reverted (no reason string)

EVM · reverted — The contract rejected the call and returned no message. That usually means a require() without a reason, a custom error the decoder does not know, or…

Out of gas

EVM · gas — The gas limit was consumed before the call finished, so the EVM rolled everything back — but the gas itself was still charged.

Intrinsic gas too low

EVM · gas — The gas limit you supplied is smaller than the flat cost of the transaction itself (21,000 plus calldata), so it was rejected before execution.

Insufficient funds for gas

EVM · balance — The sending address cannot cover value plus gas at the price it set, so the node refused to accept the transaction.

Nonce too low

EVM · nonce — A transaction with this nonce is already mined, so the node treats the new one as a duplicate and drops it.

Replacement transaction underpriced

EVM · nonce — You tried to replace a pending transaction but the new fee was not high enough to outbid it — most nodes require roughly 10% more.

ERC-20 transfer exceeds balance

EVM · token — The token contract rejected the transfer because the sending address holds less than the amount requested — often because a fee-on-transfer token…

ERC-20 allowance too low

EVM · token — The router or contract was not approved to spend that many of your tokens, so the transferFrom call reverted.

Safe transfer failed (STF / TF / TransferHelper)

EVM · router — The router could not pull tokens from your wallet. Uniswap-style routers report this as the three-letter code STF (safeTransferFrom failed) or TF,…

Slippage exceeded on a swap

EVM · DEX — The pool returned less than your minimum output (or took more than your maximum input), so the router reverted instead of filling at a worse price.

Swap deadline expired

EVM · DEX — The transaction was mined after the deadline you set, so the router refused to execute it.

Contract paused, frozen or blacklisted

EVM · token — The token or protocol is deliberately blocking transfers right now. No fee change or retry will help — the restriction is set by the contract owner.

Solidity panic (arithmetic or bounds error)

EVM · Panic — The contract hit a compiler-inserted panic: an overflow, a division by zero, an out-of-bounds array read or a failed assert(). It is a contract-side…

Unknown custom error selector

EVM · custom — The revert data starts with a 4-byte selector that is not part of the ERC-20 / Panic standards. Custom errors are defined per contract, so the…