in-solana by Supanode

Solana TPS (Live)

Solana TPS (transactions per second) measures network throughput. Reported numbers vary widely depending on whether validator vote transactions are included.

Vote vs non-vote TPS

Solana validators submit vote transactions every slot (~400ms). These inflate the headline TPS number significantly.

MetricTypical rangeIncludes
Total TPS3,000–5,000All transactions including votes
Non-vote TPS1,000–3,000User transactions only
Successful non-vote TPSLowerUser transactions that did not fail

When evaluating Solana throughput, non-vote TPS is the meaningful number for application developers.

What affects TPS

Account contention. Transactions touching the same writable accounts serialize through Sealevel, reducing effective parallelism. Hot accounts (popular AMM pools, oracle price feeds) create bottlenecks.

Compute per transaction. A block has a fixed compute unit budget. Complex transactions (DeFi swaps, program deployments) consume more compute units, reducing the number of transactions that fit per block.

Network conditions. Leader performance, block propagation speed via Turbine, and congestion all affect realized throughput.

Querying TPS data

Use getRecentPerformanceSamples to query recent TPS. Each sample covers a 60-second window:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getRecentPerformanceSamples",
  "params": [5]
}

The response includes numTransactions and numSlots per sample. Divide transactions by the sample duration (roughly 60 seconds) for TPS.

Theoretical vs real-world

Solana’s theoretical maximum exceeds 50,000 TPS under ideal conditions (simple transfers, no contention). Real-world workloads with complex transactions and shared writable accounts produce the 1,000–3,000 non-vote TPS range observed on mainnet.

FAQ

Why does the explorer show 4,000+ TPS but apps feel slow? The explorer typically shows total TPS including votes. Actual user transaction throughput is lower. During congestion, transactions compete for block space and many are dropped before reaching the leader.

How do I get TPS without votes? There is no single RPC method for non-vote TPS. Filter getBlock results to exclude transactions where the first instruction targets the Vote program (Vote111111111111111111111111111111111111111).

Updated: