If you have a transaction stuck in MetaMask (a "metamask pending transaction"), there are three reliable ways to proceed: use the built-in Speed Up, use the built-in Cancel, or manually replace the transaction by reusing the same nonce with higher gas. I use all three regularly. What I've learned is that each method has trade-offs depending on whether the original tx is a simple ETH transfer or a contract interaction.
This guide shows step-by-step instructions for each approach, explains why they work (under the hood), and describes how I tested them so you can reproduce the same results on a testnet before trying on mainnet.
Short version: miners/validators prioritize transactions with higher effective gas payment (EIP-1559: base fee + priority fee). If your tip is too low relative to the current base fee and network demand, miners might ignore your transaction and leave it pending. Another cause: a nonce gap — earlier pending transactions block later ones because nonces must be processed in order.
A nonce (transaction counter) is assigned per account and must be unique. If transaction #5 is stuck, transaction #6 will sit in Pending until #5 is confirmed or replaced. That’s why canceling or replacing the earliest stuck transaction is often the fastest fix.
MetaMask offers two easy buttons when you tap a pending transaction in Activity: Speed Up and Cancel. They both create a new transaction with the same nonce. The difference is in intent.
What it does: resends the same transaction (same to/value/data) but with a higher gas offer so miners pick it up faster.
Step-by-step (extension):
Step-by-step (mobile):
Notes: Speed Up is effectively "resend transaction metamask". It keeps the same payload so it’s safe for simple transfers and most contract calls. But if the original depended on off-chain state, double-check the logic before resending.
What it does: sends a new 0 ETH transaction to your own address (or a minimal replacement) with the same nonce and usually a higher gas offer to replace the original. If the cancel is confirmed first, the original pending transaction becomes invalid.
Step-by-step (both extension and mobile):
Limitations: Cancel works best for simple ETH transfers. If the stuck tx is a contract interaction (for example a token swap), a cancel may not always block side effects if the original ultimately confirms first.
If the built-in buttons don't appear or you want full control, you can replace a stuck transaction by setting the same nonce manually.
Why this works: the new transaction uses the same nonce but offers more gas, so the network will accept whichever replacement arrives first in a block. This is essentially how "nonce metamask cancel" works under the hood.
Caveat: manual replacement requires care with gas parameters under EIP-1559 (set both maxPriorityFee and maxFee sufficiently high). And if you get the nonce wrong, you could create more pending transactions.
I like to test on a public Ethereum testnet first (pick a current testnet like Sepolia or Goerli). Here’s exactly what I did so you can repeat it:
I repeated the steps across the extension and mobile app. The behavior matched: Speed Up and manual replace are functionally the same (resend with a higher fee). Cancel sends a different payload (0 ETH to self) but still replaces by nonce.
If you have multiple pending transactions blocked by an earlier stuck nonce, clear the earliest one first.
| Method | What it sends | Pros | Cons | When to use |
|---|---|---|---|---|
| Speed Up | Same tx, higher gas | Simple UI, keeps same payload | Not available for some tx types | When you want same action to happen faster |
| Cancel | 0 ETH to self (replacement) | Quick way to invalidate a pending simple tx | Might not stop complex contract effects | When you just want to stop a simple transfer |
| Manual Replace | Any tx with same nonce and higher gas | Full control over nonce and gas | Advanced, risk of mistakes | When built-in buttons aren’t available or you need custom control |
Q: Is it safe to cancel a pending transaction in MetaMask? A: If the tx is still pending, yes — canceling submits a replacement with the same nonce. But if the original confirms first, the cancel is moot. For contract calls, double-check side effects.
Q: How do I check the nonce for my address? A: Open the pending tx details in MetaMask and view "Nonce" or search your address on a block explorer to see the nonce column.
Q: What if my cancel also gets stuck? A: Resend another replacement with the same nonce and a higher gas offer. If problems persist, switch RPC endpoints or consult troubleshooting.
Q: Can I resend transaction MetaMask if the UI buttons aren’t present? A: Yes. Enable custom nonce in Settings → Advanced and submit a replacement transaction manually.
Q: What happens if I lose my phone while a transaction is pending? A: Losing a device doesn’t affect transactions on-chain — they remain pending until mined or replaced. But you should protect your seed phrase (see backup-and-recovery-seed-phrase).
Stuck transactions are annoying, but they’re solvable. Use Speed Up when you want the same action to finish faster. Use Cancel to invalidate a simple pending transfer. Use manual nonce replacement when you need full control. I recommend practicing these steps on a testnet first so you understand how nonce and gas interact.
If you want a deeper refresher on gas mechanics and how EIP‑1559 changes fee behavior, check the gas guide: Gas fees, EIP‑1559, and L2. And if you often work from both phone and browser, read about syncing mobile and desktop: sync-mobile-desktop.
Try these steps with a tiny test transaction and you’ll get the hang of it quickly. Good luck, and stay cautious with contract approvals (see token-approvals-and-revoke if you need to clean up allowances).