Quick answer: “Execution reverted” means a smart contract checked a condition, the condition failed, and the contract cancelled everything your transaction tried to do. Your tokens don’t move. If the transaction was already mined, though, you still pay the gas it used. The fix is almost never “add more gas”. You need to find the contract’s revert reason, which is usually a missing approval, slippage, an expired deadline, a low balance or a contract rule, and fix that first.
You’ll see this error in MetaMask, Ledger Live, Rabby and most other EVM wallets. It shows up on Ethereum and on every chain that runs the Ethereum Virtual Machine (EVM), including Arbitrum, Base, Polygon, BNB Chain and Core. This guide covers what the message means, how to read the real reason on a block explorer, and the specific fix for the reasons you’ll run into most.
What “execution reverted” actually means
Smart contracts are full of checks. A typical one, written in Solidity, says “only continue if the sender has enough tokens” or “only continue if the swap returns at least X”. When a check fails, the contract runs a revert. The Solidity documentation says a revert “undoes all changes made to the state in the current call (and all its sub-calls)”. It’s all or nothing, so your transaction can’t half-complete.
That’s why the error usually isn’t your wallet’s fault. MetaMask’s error-code guide says contract execution errors mean “something went wrong inside the smart contract itself — not in MetaMask.” Etherscan’s Information Center says the same thing from the explorer side. When a transaction is marked “Fail”, the funds you meant to send stay in your wallet, but the gas fee is still deducted.
Before sending vs. after sending
You can hit this error at two different moments:
- Before you sign. Wallets simulate the transaction to estimate gas. If the simulation reverts, you may see “execution reverted” (JSON-RPC code -32000, according to MetaMask’s developer docs) or a warning that gas couldn’t be estimated and the transaction may fail. Nothing has been spent yet. This is the best time to stop and investigate.
- After it’s mined. The transaction made it into a block, the contract reverted, and the explorer shows it as failed. Your tokens didn’t move, but the fee is gone. Under the EVM’s gas rules, unused gas is returned to you, as ethereum.org explains. The gas actually used up to the revert is not returned.

How to find the real reason on a block explorer
“Execution reverted” is a category, not a diagnosis. The useful part is the reason string the contract sends back.
- Copy the transaction hash from your wallet’s activity tab. It’s the long string starting with
0x. - Open the explorer for the right chain. That’s Etherscan for Ethereum mainnet, and the matching explorer for an L2 or sidechain. A hash pasted into the wrong chain’s explorer won’t be found.
- Read the Status line. A failed contract call usually reads something like Fail with error ‘Too little received’. The text in quotes is the contract’s own reason.
- Check gas used against the gas limit. If gas used is at or almost exactly at the limit and the warning says out of gas, the limit was too low. That’s the one case where more gas helps. Etherscan lists “Out of Gas” and “Reverted” as separate failure types.
- Check the “Interacted With (To)” address. Make sure it’s the contract you meant to use, such as the real DEX router, and not a lookalike.
Some contracts revert without a message, or with a short code. Newer contracts often use “custom errors”, which explorers show as a named error like ERC20InsufficientAllowance when the contract’s source code is verified. If you get no reason at all, the contract’s docs or support channel is the next place to look.
Common revert reasons and how to fix them
The strings below come straight from widely used contract code: Uniswap v3 periphery, Uniswap v2 periphery and OpenZeppelin’s ERC-20, which many tokens are built on. Forks and other DEXs often use similar wording.
| Reason you see | What it means | What to do |
|---|---|---|
| Too little received / UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT | The swap would return less than your minimum (your slippage limit) | Get a fresh quote. Try a smaller trade. Only widen slippage if you accept a worse price. |
| Transaction too old / UniswapV2Router: EXPIRED | The swap’s deadline passed before it was mined | Start the swap over with a new quote and a normal gas fee |
| STF | Uniswap v3’s “safe transfer from” failed: usually no approval or not enough tokens | Check your token balance and approve the router for at least the amount |
| ERC20: insufficient allowance / ERC20InsufficientAllowance | The contract isn’t approved to spend that much of your token | Approve the exact amount you need, not unlimited |
| ERC20: transfer amount exceeds balance / ERC20InsufficientBalance | You’re trying to move more tokens than the wallet holds | Lower the amount. Check you’re on the right chain and account. |
| Out of gas | The gas limit was too low for the work | Retry with the wallet’s suggested limit, not a hand-trimmed one |
Slippage and deadline failures
Uniswap’s developer docs say that if the execution price falls outside your slippage range, “the transaction will fail, and the swap will not occur”. Swaps also carry a deadline, and the transaction fails if it waits longer than that. MetaMask Swaps shows the same kind of problem on the explorer as EXPIRY PASSED, and MetaMask’s advice is simply to retry the swap from the beginning.
Be careful with the urge to crank slippage way up. A wider tolerance makes a swap more likely to go through, but it also lets you accept a much worse price. If a thinly traded token keeps demanding very high slippage, treat it as a warning sign, not a setting to beat.
Approval and balance failures
Before a DEX or other app can move an ERC-20 token for you, you have to approve it. If that approval is missing, too small, or was revoked, the contract reverts. Approve the amount you plan to use instead of an unlimited allowance. If you’ve built up old unlimited approvals over time, our guide on how to revoke token approvals walks through cleaning them up.
Contract rules you can’t fix by retrying
Some reverts come from the contract’s own rules. The token might be paused, transfers might not be enabled yet, your address might be restricted, or a mint might have sold out. Etherscan notes that an ERC-20 transfer can fail when the token contract is locked and tokens aren’t transferable yet. Sending the same transaction again will fail again and cost another fee. If you’re depositing to an exchange or using a specific app, contact that platform’s support.
What not to do
- Don’t keep resubmitting. A revert caused by contract logic is deterministic. Same inputs, same state, same failure, and another fee every time.
- Don’t override a “this may fail” warning unless you understand why it appeared.
- Don’t fall for “support” DMs. Anyone who messages you offering to fix a failed transaction and asks for your Secret Recovery Phrase is a scammer. Our crypto security guide covers the common tricks.
- Don’t ignore a token you can’t sell. MetaMask’s smart contract safety guide warns that a token’s contract page showing no sell transactions may point to a honeypot scam.
A failed transaction is different from one that’s stuck. If yours is still pending rather than failed, that’s a gas or nonce problem, covered in our guide to fixing pending transactions in MetaMask. The same nonce logic applies on any EVM chain.
FAQ
Do I lose my tokens when a transaction says execution reverted?
No. A revert undoes every state change, so the tokens or coins you meant to send stay in your wallet. What you lose is the network fee for the gas used, and only if the transaction was actually mined. If the error appeared before you signed, you’ve paid nothing.
Can I get the gas fee back from a failed transaction?
Not on-chain. The validator processed the work, so the fee is spent. Unused gas above what was consumed is returned automatically.
Will raising the gas limit fix “execution reverted”?
Only when the real cause is “out of gas”. For approvals, slippage, deadlines, balances or contract rules, more gas just means a more expensive failure.
Why does a swap fail even though I have enough tokens?
The most common causes are a missing or too-small approval, a price move beyond your slippage tolerance, or a quote that expired before the transaction was mined. Read the reason string on the explorer to tell which one it is.
Disclaimer: This article is for educational purposes only and isn’t financial or investment advice. Crypto transactions are irreversible and carry risk. Always double-check contract addresses and transaction details before you sign.
