Cancel or Replace a Stuck Transaction in MetaMask

Try Tangem secure wallet →

Table of contents


Quick overview

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.

Why transactions get stuck (quick primer)

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.

Built‑in fixes in MetaMask: Speed Up vs Cancel

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.

Speed up transaction (MetaMask)

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):

  1. Open MetaMask extension and click the account with the pending tx.
  2. Go to Activity and find the pending transaction.
  3. Click "Speed Up".
  4. Adjust the gas settings (you can pick a higher tip / max fee) and confirm.

Step-by-step (mobile):

  1. Open the MetaMask app → Activity → pending tx.
  2. Tap "Speed Up" and slide or edit the gas price.
  3. Confirm the transaction.

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.

MetaMask cancel transaction

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):

  1. Find the pending transaction in Activity.
  2. Tap "Cancel".
  3. Confirm the gas settings and submit.

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.

Manual replace with custom nonce (advanced)

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.

  1. Enable custom nonce: MetaMask → Settings → Advanced → turn on "Customize transaction nonce".
  2. Find the stuck tx's nonce (open the transaction details in MetaMask or look it up on the block explorer for your network).
  3. Create a new transaction: simplest is 0 ETH sent to your own address. In the Confirm screen, go to Advanced and set the nonce equal to the stuck tx's nonce.
  4. Increase gas fees (make the priority fee and/or max fee higher than the original). Then confirm.

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.

How I tested these steps (replicable methodology)

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:

  1. Create a fresh MetaMask account (extension on Chrome and the mobile app on Android). Follow create-metamask-wallet if you need setup help.
  2. Switch to a testnet and fund the account from a faucet with a small amount of test ETH.
  3. Intentionally send a transaction with a low priority fee (edit Advanced gas settings to a lower tip) so it stays pending.
  4. Wait a few blocks to confirm it remains pending. Then try the built-in Speed Up first. Record whether the replacement mined and how many blocks it took.
  5. Repeat by creating a pending transaction again, then use Cancel. Observe results.
  6. For manual testing, enable custom nonce, find the pending tx nonce in the block explorer, and submit a 0 ETH tx to yourself with that nonce and a higher fee.

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.

When cancel or replace fails — troubleshooting

If you have multiple pending transactions blocked by an earlier stuck nonce, clear the earliest one first.

Quick comparison: Speed Up vs Cancel vs Manual Replace

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

Best practices to avoid stuck transactions

FAQ

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).

Conclusion and next steps

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).

Try Tangem secure wallet →