Ethereum Transaction Stuck Pending? How to Speed Up or Cancel It
By Merunas Grincalaitis, founder of MEV DAO and a developer who builds MEV, sniping and trading bots on Ethereum. Last updated: Oct 31, 2026.
TL;DR: An Ethereum transaction gets stuck as "pending" when its max fee is below the current base fee, or when an earlier transaction from the same address (a lower nonce) hasn't confirmed yet. You fix it by sending a replacement with the same nonce and a higher fee: "Speed up" re-sends the same transaction with more gas, and "Cancel" sends 0 ETH to yourself with that nonce. On Geth nodes, the replacement has to raise both the max fee and the priority fee by at least 10%, or it's rejected as "replacement transaction underpriced".
Stuck transactions are one of the most common messages I get, usually from someone who tried to swap during a busy launch, set a stingy gas limit in a bot, or is fighting a sweeper on a compromised wallet. The good news is that a pending transaction is not lost money. Until it's in a block, nothing has happened on-chain, and you have more control over it than most wallets make obvious. Here's how I think about it and how I fix it.
Why is my Ethereum transaction stuck pending?
Almost always for one of two reasons: your fee is too low for current demand, or an earlier transaction from your address is still waiting. Less often, the transaction never reached the network at all, or it was dropped.
To understand why, you need two terms:
- Nonce: a counter attached to every transaction from an address. The first transaction has nonce 0, the next 1, and so on. Ethereum only accepts them in order, so nonce 5 can't be mined until nonce 4 is. The ethereum.org transactions page covers this.
- Base fee: since the London upgrade (EIP-1559), every block has a protocol-set base fee per gas that rises when blocks are more than half full and falls when they're less, by at most 12.5% per block. Your transaction sets a max fee per gas (the most you'll pay in total) and a priority fee (the tip to the block builder).
With those in mind, these are the usual causes:
| Cause | What you see | Fix |
|---|---|---|
| Max fee below the current base fee | Pending for minutes or hours, often after a gas spike | Speed up with a higher max fee, or wait for the base fee to drop |
| Priority fee too low | Pending while others with the same max fee confirm | Speed up with a higher tip |
| Nonce gap or earlier pending tx | Newer transactions all stuck "queued" behind one | Fix or cancel the lowest pending nonce first |
| Never broadcast or dropped by nodes | Etherscan can't find the hash | Resend with the same nonce, or just send again if the nonce is still free |
| Sent through a private RPC | Not visible on public mempool explorers | Check the private RPC's status page; wait or replace |
How do I check what's actually happening?
Paste the transaction hash into Etherscan and look at the status, the nonce and the fee fields. That tells you which of the cases above you're in.
- If Etherscan shows it as Pending, compare its "Max Fee Per Gas" with the current base fee (Etherscan's Gas Tracker shows it). If your max fee is lower, that's your answer.
- Check the nonce. Open your address page and look at the last confirmed transaction's nonce. If your stuck transaction's nonce is more than one higher, a transaction in between is missing or stuck, and that one is the real blocker.
- If Etherscan says the hash can't be found, the network may never have received it, or nodes dropped it. Geth, for example, drops queued transactions that sit in its pool too long (the
--txpool.lifetimesetting, 3 hours by default, per the Geth command-line docs), and pools evict the cheapest transactions when they fill up during busy periods. - If it shows Dropped & Replaced, another transaction with the same nonce got mined first. That's normal after a speed-up or cancel.
How do I speed up a pending transaction?
Send the same transaction again with the same nonce and a higher fee, and the network keeps whichever one gets mined. Most wallets have a button for this.
In MetaMask, open the pending transaction in the Activity tab and choose Speed up. MetaMask re-submits it with a higher gas fee. Rabby, Rainbow and most other wallets have the same option under a similar name.
Two details matter here:
- The bump has to be big enough. A node won't swap an existing pending transaction for a new one unless the new one pays meaningfully more. In Geth the default is a 10% increase (
--txpool.pricebump), and for EIP-1559 transactions both the max fee and the priority fee have to go up by that much. If you only raise one, you'll seereplacement transaction underpriced. Other clients use similar rules, so I just bump both by 15–20% to be safe. - Raise the max fee above the base fee, not just the tip. If the base fee doubled while you waited, a bigger tip alone won't get you in. The max fee has to cover the base fee plus the tip.
How do I cancel a pending Ethereum transaction?
You can't delete a transaction, but you can replace it with one that does nothing. A "cancel" is a 0 ETH transfer from your address to your own address, with the same nonce and a higher fee. If the cancel gets mined first, the original is dead, because its nonce is used up.
In MetaMask, the Cancel button on a pending transaction does exactly this. Keep in mind:
- A cancel still costs gas, because the replacement transaction gets mined. It's a cheap 21,000-gas transfer, but it isn't free.
- It's a race. If the original already made it into a block, the cancel fails and you'll see the original confirmed. Etherscan then shows the cancel as dropped.
- It only works while the original is still pending. Once a transaction is confirmed, there's no undo on Ethereum.
How do I fix a nonce gap or a "queue" of stuck transactions?
Deal with the lowest pending nonce first, and the rest will follow. Every transaction after it is waiting on it, so speeding up the newest one does nothing.
- Find the lowest nonce that isn't confirmed (your last confirmed nonce plus one).
- If that transaction is visible and pending, speed it up or cancel it.
- If it's missing entirely (it was dropped, or you broadcast from a script that crashed), send any transaction with that exact nonce, such as a 0 ETH self-transfer. MetaMask lets you set it manually once you turn on Customize transaction nonce in its settings; its support guide notes you may need to switch off Smart Transactions first to see the nonce box.
- Once that nonce confirms, the queued transactions behind it become valid and start confirming in order, if their fees are still high enough.
If your wallet's internal state is confused (it keeps showing ghost pending transactions that Etherscan doesn't know about), MetaMask's Clear activity tab data option resets its local history without touching anything on-chain.
What if I sent it through Flashbots Protect or another private RPC?
Then it isn't in the public mempool, and public explorers may not show it until it's mined. Private RPCs like Flashbots Protect send your transaction straight to block builders to keep it away from sandwich bots. The tradeoff is that you track it through the provider. Flashbots Protect has a status page at protect.flashbots.net/tx/<hash> that shows whether it's still pending, included or failed.
Private transactions that never land eventually expire, and you can still replace them by sending a new transaction with the same nonce. I compared the main options in Flashbots Protect vs MEV Blocker.
How do I avoid stuck transactions in the first place?
Set your max fee with headroom and let the priority fee do the bidding. You only pay the base fee that's actually charged plus your tip, so a generous max fee costs nothing extra if it isn't needed. The EIP-1559 rules refund the difference automatically.
What I do for my own bots and wallets:
- Set the max fee to about 2x the current base fee. Since the base fee can rise at most 12.5% per block, that covers roughly six full blocks in a row, which is over a minute of extreme demand.
- Use a normal tip for normal transfers and a bigger one only when timing matters, such as a snipe or a rescue. I wrote about tip sizing in sniper bot gas settings.
- In scripts, track nonces yourself and never fire a new transaction while an older one is pending unless you mean to replace it.
- Keep a little extra ETH in the wallet. A surprising number of "stuck" transactions are really accounts that can't afford the higher fee. How much ETH you need for gas has rough numbers.
Frequently asked questions
How long can an Ethereum transaction stay pending?
There's no protocol limit. A pending transaction stays in a node's pool until it's mined, replaced or evicted, and nodes drop cheap or long-waiting transactions (Geth's default lifetime for queued ones is 3 hours), so in practice it usually disappears within hours if fees stay too low.
Does cancelling a pending transaction cost gas?
Yes. A cancel is a real transaction (0 ETH to yourself with the same nonce), so you pay gas for it, typically for a simple 21,000-gas transfer at the higher fee you set.
Why do I get "replacement transaction underpriced"?
Your replacement didn't raise the fees enough. Geth requires both the max fee and the priority fee to rise by at least 10% over the pending transaction, so bump both by 15–20%.
Can I get my ETH back from a pending transaction?
Nothing has left your wallet while it's pending. If you cancel it successfully, the funds stay with you minus the cancel's gas fee; if the original confirms, it executes as signed.
What does "Dropped & Replaced" mean on Etherscan?
Another transaction with the same nonce from your address was mined instead, usually your own speed-up or cancel. The replaced one will never execute.
Why is my transaction pending but Etherscan says it's not found?
Etherscan's nodes never saw it or already dropped it. Resend it, or send a self-transfer with the same nonce so later transactions aren't blocked.
Related guides
- How much ETH do you need for gas? Swaps, snipes and rescues
- Do you need ETH to send USDT or USDC? Gas for token transfers explained
- Sniper bot gas settings: priority fees and builder tips
- Wallet drained? What to do in the first hour
- What is the Ethereum mempool? How bots see pending transactions
One special case: if your transactions keep getting "replaced" by ones you didn't send, that isn't a fee problem. Someone else has your key and a sweeper bot is using your nonces. Normal speed-ups won't win that race, and that's the situation the MEV DAO Token Rescue Bot was built for.