Sometimes a transaction neither succeeds nor fails — it just sits there, "pending", occasionally for ages. It's unsettling, but it's usually fixable from your wallet.
Why it hangs
When you submit a transaction it enters the mempool, a waiting room of pending transactions. Validators pick the most profitable ones first, so if your priority fee is too low relative to current demand, yours can wait — sometimes for hours.
The nonce: why order matters
Each account's transactions are numbered by a nonce, and they must process in order. If transaction #5 is stuck, #6 and #7 can't go through behind it, even if you paid them more. That's why one stuck transaction can seem to freeze your whole wallet — clearing #5 unblocks the queue.
Your two tools: speed up and cancel
Most wallets let you replace a pending transaction by resubmitting it at the same nonce with a higher fee:
- Speed up — rebroadcast the same transaction with a higher priority fee so validators pick it up.
- Cancel — replace it with a $0 transaction to yourself at the same nonce and a higher fee, voiding the original.
Both work by out-bidding the stuck transaction at its own nonce; whichever the network confirms first wins.
Practical guidance
- Don't blindly submit a brand-new trade to "try again" — that creates a second transaction at the next nonce, not a replacement.
- Use the wallet's own speed-up or cancel button so the nonce is reused correctly.
- If the network is deeply congested, the calmest move is sometimes just to wait.
This is far more of an Ethereum-mainnet concern than an L2 or Solana one, where fast finality means pending transactions rarely linger.
- Submitting a fresh trade to 'try again' while the first is still pending, creating a second transaction.
- Setting the priority fee very low during congestion, then wondering why it's stuck.
- Forgetting that one stuck low-nonce transaction blocks everything queued behind it.