IndexCrypto
Educational only. Not financial, tax or legal advice, and nothing here is a recommendation to buy anything.

Stuck Crypto Transactions: Causes and Fixes

Learn why crypto transactions get stuck, how nonces work, and how to speed up or cancel a pending transaction. Understand the risks and what not to do.

A transaction that stays pending for hours or days is a common experience on public blockchains. The transaction is not lost, but it is waiting for a miner or validator to include it in a block. This page explains what causes a transaction to get stuck, what the nonce has to do with it, and the two ways to resolve it: replacing it with a higher fee, or cancelling it with a zero-value transaction at the same nonce. It also covers what people often get wrong about stuck transactions, and why the common misdiagnosis is a natural mistake rather than a stupid one.

Why Transactions Get Stuck

A transaction needs two things to be confirmed: a valid signature and a fee that is attractive enough for a miner or validator to pick it up. If the fee is too low relative to the network’s current demand, the transaction may sit in the mempool (the pool of pending transactions) for a long time. The network does not guarantee that every transaction will be confirmed; it only guarantees that a transaction with a high enough fee will be confirmed eventually.

Several factors can cause a transaction to be stuck:

  • Fee too low: The fee you set is below the current market rate. Miners prioritize transactions with higher fees per byte.
  • Network congestion: When many users are sending transactions, the mempool fills up, and miners can only include a limited number per block. Low-fee transactions are left behind.
  • Nonce issues: In Ethereum and other accounts-based chains, each transaction from an account has a nonce, a sequential number. If a transaction with a lower nonce is stuck, all subsequent transactions with higher nonces will also be stuck, even if they have higher fees. This is because the network processes transactions in nonce order.
  • Replacement rules: Some networks implement a rule that a replacement transaction must have a fee increase of at least a certain percentage (e.g., 10% on Ethereum). If the increase is too small, the network rejects the replacement.

The Role of the Nonce

In accounts-based blockchains like Ethereum, every transaction from a given address has a nonce, which is a counter starting at 0 for the first transaction. The nonce ensures that transactions are processed in order and prevents double-spending. When you send a transaction, the network expects the next transaction from your address to have the next nonce. If a transaction with nonce 5 is stuck, a transaction with nonce 6 cannot be processed until nonce 5 is confirmed or replaced. This is a common cause of multiple transactions being stuck at once.

Two Ways Out: Speed Up or Cancel

When a transaction is stuck, you have two options: speed it up or cancel it. Both involve sending a new transaction with the same nonce.

Speeding Up a Transaction

To speed up a stuck transaction, you send a new transaction with the same nonce but with a higher fee. The new transaction replaces the old one in the mempool. The network will then consider the new transaction for inclusion. The old transaction is discarded if the new one is confirmed.

How to do it:

  1. In your wallet, find the stuck transaction.
  2. Look for an option like “Speed up” or “Replace” (most wallets offer this).
  3. The wallet will create a new transaction with the same nonce and a higher fee, often suggested as a percentage increase.
  4. Confirm the new transaction.

If your wallet does not have a speed-up option, you can do it manually by using a custom nonce and a higher fee, but this requires technical knowledge.

Cancelling a Transaction

To cancel a stuck transaction, you send a new transaction with the same nonce, but with a value of 0 (or a very small amount) to yourself, and with a higher fee. This new transaction replaces the original in the mempool. Once confirmed, the original transaction is effectively cancelled because it can no longer be processed (the nonce is used).

How to do it:

  1. In your wallet, look for a “Cancel” option (some wallets have it).
  2. If not, you can manually create a transaction with the same nonce, sending 0 to yourself, with a higher fee.
  3. Confirm the cancellation transaction.

Note: Cancelling is not guaranteed to work if the original transaction is already included in a block. But if it’s still pending, it usually works.

Speed up or cancel a stuck transaction

SituationSpeed UpCancelWhen NOT to Use
Transaction stuck due to low feeYesYesIf the transaction is already confirmed, neither works.
Transaction stuck due to nonce gapYes (if you replace the lowest nonce)Yes (if you replace the lowest nonce)If you replace a higher nonce, the lower nonce will still block.
Transaction stuck due to network congestionYesYesIf the network is extremely congested, even a high fee may not confirm quickly.
Transaction stuck because it was replaced by a higher-fee transactionNoNoThe original is no longer in the mempool; nothing to do.
Transaction stuck because the fee is too low and you don’t want to pay moreNoYesIf you are willing to wait indefinitely, you can leave it.
Transaction stuck due to a wallet bugYesYesIf the wallet is malfunctioning, you may need to use a different wallet.

What People Get Wrong About Stuck Transactions

The most common misdiagnosis is that the transaction is “lost” or “stolen.” In reality, a stuck transaction is simply waiting in the mempool. It is not lost, and it will eventually either be confirmed (if the fee becomes competitive) or be dropped from the mempool after a certain time (usually days). The fear of losing funds leads some people to try to “resend” the transaction by creating a new one with a higher fee but without considering the nonce. This creates a second pending transaction with the same nonce, which can cause confusion and may not help. The natural mistake is to think that sending another transaction with a higher fee will override the old one, but because of the nonce rule, the network will only process one transaction per nonce. The correct approach is to replace the original transaction with a new one at the same nonce, not to send an additional transaction.

Another common mistake is to assume that a stuck transaction means the network is broken. In reality, it is a normal consequence of fee markets. The network is working as designed: it prioritizes transactions that pay more. The misdiagnosis is natural because users are used to instant confirmations, and the concept of a mempool is not widely understood.

What Not to Do

  • Do not send the same transaction again with a higher fee without using the same nonce. This will create a second pending transaction and may cause one to be stuck forever.
  • Do not try to “cancel” by sending a transaction to the recipient with a negative amount. This is not possible and will be rejected.
  • Do not attempt to use a transaction accelerator service that claims to guarantee confirmation. These services may not work and could be scams.
  • Never enter your seed phrase or private key on a website that promises to fix a stuck transaction. Legitimate wallets never ask for your seed phrase.

Technical Commands (For Advanced Users)

If you are comfortable with the command line, you can use tools like geth or ethers.js to replace a transaction. The following examples use ethers.js.

Speed Up a Transaction

const tx = {
  to: recipient,
  value: ethers.utils.parseEther("1.0"),
  nonce: stuckNonce,
  gasLimit: 21000,
  gasPrice: newGasPrice // higher than original
};
const signedTx = await wallet.signTransaction(tx);
const response = await provider.sendTransaction(signedTx);

This sends a new transaction with the same nonce and a higher gas price. The output will be a transaction hash, which you can check on a block explorer.

Cancel a Transaction

const tx = {
  to: wallet.address, // send to yourself
  value: 0,
  nonce: stuckNonce,
  gasLimit: 21000,
  gasPrice: newGasPrice // higher than original
};
const signedTx = await wallet.signTransaction(tx);
const response = await provider.sendTransaction(signedTx);

This sends a zero-value transaction to yourself with the same nonce and a higher fee. Once confirmed, the original transaction becomes invalid.

Why transactions get stuck and how they clear

A stuck transaction is a temporary state caused by a fee that is too low or a nonce gap. The solution is to replace the transaction with a new one at the same nonce, either with a higher fee (speed up) or with a zero-value transaction (cancel). Understanding the nonce is key to resolving the issue correctly. Always use the wallet’s built-in features if available, and never share your private keys or seed phrase with any third party.

Common questions

Why is my crypto transaction stuck?

A transaction gets stuck when the fee you set is too low compared to the network's current demand, or when there is a nonce gap. Miners prioritize transactions with higher fees, so low-fee transactions may wait in the mempool until the fee becomes competitive or the transaction is dropped.

How do I speed up a stuck transaction?

Most wallets have a 'Speed up' option that automatically creates a new transaction with the same nonce and a higher fee. If not, you can manually send a new transaction with the same nonce and a higher gas price. This replaces the original in the mempool and increases the chance of confirmation.

How do I cancel a pending crypto transaction?

To cancel, you send a new transaction with the same nonce, a value of 0, and a higher fee. This replaces the original and, once confirmed, makes the original invalid. Some wallets have a 'Cancel' button, but you can also do it manually with a custom nonce.

Will a stuck transaction eventually go through?

It depends. If the network congestion decreases and your fee becomes competitive, it may confirm. However, if the fee is extremely low, the transaction may be dropped from the mempool after a certain period (often days). At that point, the funds return to your wallet, and you can resend with a higher fee.

What is a nonce in crypto?

A nonce is a sequential number assigned to each transaction from a specific address. It ensures transactions are processed in order and prevents double-spending. If a transaction with a lower nonce is stuck, all subsequent transactions with higher nonces will also be stuck until the lower nonce is resolved.

Read next