Skip to main content
TLDR:
  • Pending transactions are in the pool ready to be included in a block.
  • Queued transactions are sitting locally because their account nonce is out of sequence; they don’t propagate until the gap is filled.
  • Inspect the pool with txpool_status / txpool_content; subscribe to new pending transactions with eth_subscribe; fix a queued transaction by filling the nonce gap.

Pending vs queued

A transaction submitted through an EVM node has one of two states before it lands in a block:
  • Pending — in the node’s transaction pool and ready to be included in the next block.
  • Queued — held in the local pool because the account nonce is out of sequence.
Each transaction has an account nonce (not the block nonce). The account nonce starts at 0 and must increase by one per transaction from that address. A transaction whose nonce is in sequence goes straight to pending. A transaction with a nonce gap waits in queued until the missing nonces are filled.

Example

Inspect the local pool

Use the txpool JSON-RPC namespace to inspect the mempool of a node you have access to. On Chainstack, mempool access requires an Archive node with Debug and trace APIs enabled — see Mempool configurations for protocol-by-protocol availability.
To check the current confirmed nonce for an address:

Subscribe to new pending transactions

For real-time delivery of new pending transactions, subscribe over WebSocket:
Each push notification over WebSocket counts as one request unit. For sustained high-volume pending-transaction subscriptions, consider an Unlimited Node which uses RPS-tiered flat-fee pricing instead of per-request billing.

HTTP-polling alternative

If you can’t use WebSocket, poll an HTTP filter with eth_newPendingTransactionFilter and eth_getFilterChanges:
Filters expire after about five minutes of inactivity — see Fix Ethereum’s filter not found error.

Fix a queued transaction

If you have a queued transaction stuck behind a nonce gap, fill the gap by sending the missing nonces. The simplest path is to send no-op self-transfers at the missing nonces until the queued nonce becomes the next pending one.

Diagnose the gap

  1. Get the confirmed nonce: eth_getTransactionCount("0xYourAddress","latest").
  2. Get the queued transaction’s nonce from txpool_content or from the transaction object: eth_getTransactionByHash.
  3. The gap is everything between them.

Fill the gap

Send a transaction at each missing nonce. A 0-value self-transfer with explicit nonce is enough:
Once the missing nonces confirm, the previously queued transaction moves to pending and is mined.

Alternative: cancel by replacement

If you’d rather drop the queued transaction altogether, send a replacement at the same nonce with a higher gas price — most clients require the new gas price to be at least 10% higher (txpool.pricebump).

See also

Last modified on May 19, 2026