Skip to content
Fundamentals11 min read

Solana TPS Explained: Real Throughput vs the Headline Number

Solana's TPS counts user transactions only since Alpenglow, with 200 ms slots and 50 million compute units per block. This guide explains how TPS is counted today, why real and theoretical figures differ, and the throughput that actually matters for your application.

Sourav Mishra · OrbitFlare
Solana TPS Explained: Real Throughput vs the Headline Number

Summary: Solana's transactions per second (TPS) number is one of the most cited and, at the same time, most misunderstood metrics in the crypto space. The theoretical cap is in the tens of thousands, while the sustainable mainnet number is in the low thousands. Starting October 21, 2026, thanks to the Alpenglow upgrade, all transactions are user transactions because validator votes never go through the blocks anymore. For your application, there are three critical numbers: TPS during peak times, how much throughput you get during the network congestion, and the latency between submission and finality. This article explains the way TPS is counted on the current Solana network, why there is such a huge difference, and how to think about throughput for your application.

Key Takeaways

  • Solana's TPS numbers do not include any transactions other than user transactions. Since the introduction of the Votor consensus (Alpenglow) on mainnet on October 21, 2026 (epoch 1064), every transaction is a user transaction as validator votes are exchanged peer-to-peer and aggregated into BLS certificates, so no vote transaction ever enters a block. TPS figures from before that date included votes and are not comparable.
  • A Solana block occurs every 200 ms (starting October 9, 2026) and finality is targeted at about 150 ms after the block (compared to about 12.8 seconds with TowerBFT). confirmed and finalized describe the same state now.
  • The throughput cap on Solana is measured in compute units per block and per account, not transactions per block. The limit is 50 million compute units per 200 ms block (the 100 million of SIMD-0286 was set for 400 ms blocks and scales with slot time) and 20 million per writable account.
  • The congestion on Solana is localized to the hot accounts: thousands of transactions can go through while just one pool is saturated. The per-account write budget is the bottleneck on Solana.
  • For your application, throughput is a function of the priority fee and a staked submission path, not the network TPS.

How TPS is counted

Each Solana block (slot occurs every 200 ms) carries a list of transactions. The TPS number is a simple calculation of the number of transactions in recent blocks divided by the elapsed time. There are three aspects that may affect this calculation significantly:

User transactions only. The introduction of the Votor consensus (Alpenglow) on mainnet on October 21, 2026, shifted voting off-chain: the validator sends its vote to other validators directly, votes are aggregated into a BLS certificate, and the block finalizes once at least 80% of the stake notarizes the block in the first round (or 60% in the second round in case the fast path is missed). Proof of History no longer regulates the block production, and the tick entries stop appearing in the shred stream. As a result, each transaction inside a block is a transaction that a user or a program sends. If an explorer still shows a separate "non-vote" or "true" TPS line, that distinction is historical: the two lines are now the same number. Before October 21, 2026, the TPS data included votes, which constituted about two-thirds of the total, so a chart that spans the upgrade shows a drop that is an accounting change, not a loss of throughput.

Fails are counted. A transaction that runs and fails because of slippage checks, program errors, and so on takes up space in a block and is counted. At volatile times, many of the DEX transactions may fail, thus the TPS number looks high although successful user throughput is much lower.

Choosing the period of averaging makes a difference. A spike in one second versus the average over one day are very different things and with Solana blocks every 200 ms, the one-second period covers only five blocks.

Theoretical versus real throughput

Theoretical versus real TPS

There is a difference between the theoretical max and the real performance because of three reasons: real transactions are heavier than benchmark transactions, real networks have latency between leaders, and the limit is the per-block compute budget, not the transactions per block.

The real limit: compute units, not transaction count

Solana does not enforce a transactions-per-block limit. Solana enforces the compute-per-block limit and the per-account compute limit inside a block. A block can have up to 50 million compute units at today's 200 ms slots: SIMD-0286 raised the limit to 100 million on 29 July 2026 for 400 ms blocks, and SIMD-0525 scales the per-block limits with the slot time, so the capacity per second of 250 million units is unchanged. A single writable account can use up to 20 million per block, meaning one hot account can occupy at most 40% of a block. Anza has proposed raising the per-block limit back to 100 million; that is a discussion, not an active change. Each transaction requests and consumes compute units: a simple transfer transaction uses a few hundred units while a complex DEX route can cost hundreds of thousands of units. With blocks every 200 ms, the network offers those 50 million units five times a second.

Two important conclusions follow from the above:

First, heavy transactions lower the TPS. A block with many swaps can accommodate fewer transactions than the block with simple transfers. Therefore, the TPS is partially reflecting the workload of the network rather than the capacity.

Second, hot accounts create local congestion. Each account has its per-block write budget, and one hot pool or token can be saturated, while other parts of the network have a lot of capacity. That is the reason why one memecoin launch can saturate one DEX pool, making the trading unfeasible while other transfers go well. Congestion on Solana is localized, and so is the fee market. Priority fee estimation must take into account the accounts you interact with, not the global average. Solana transaction fees explained covers that market.

What TPS means for your application

The aggregate TPS tells you almost nothing about the chances of success of your transaction. Three numbers matter the most:

Priority relative to other transactions that target the same accounts. Trading the hot pool, you compete with everybody else who accesses that pool for its write budget and your priority is determined by the priority fee. Estimate the fees per pool, not globally.

Your submission path. During the congestion, the network leader prioritizes the transactions that came via staked connections first. Unstaked submissions are dropped first, regardless of the network capacity. A stake-weighted QoS lane or a Jito bundle preserves your throughput during TPS spikes. See Solana MEV relayers compared for the options.

Latency to finality. The transaction that lands in the next slot (200 ms) versus the transaction that is five slots behind are two different throughput numbers for your application even if the TPS is the same. Region matters: the distance to the current leader determines the minimum time. Alpenglow targets finality about 150 ms after a block is produced, so waiting for finalized takes almost nothing extra and confirmed is the same state (note: confirmed will be removed from the RPC in a later release; use finalized in new code). One effect of faster slots is that a blockhash still expires in 150 blocks, or about 30 seconds. So offline signing workflows have less time margin now.

For the read-heavy applications, the relevant question becomes how quickly you observe changes, which is dependent on your choice of data feed rather than TPS. Geyser and gRPC feeds now have a bank_id next to each slot, so the consumer application should buffer by both slot and bank. What is Shredstream covers the earliest possible observation point.

How to measure throughput that matters to you

  1. Landing rate: during the busy hour, out of transactions that you submit, how many of them land within two slots (400 ms)? That number reflects your effective throughput.
  2. Slot delta: the distribution of the gap between submitted and landed slots. The tail of the distribution is what your users actually experience.
  3. Failure rate: among your landed transactions, how many of them fail to execute because of the slippage or the stale state? Every failed transaction consumes the fee without any benefit.
  4. Compute units per transaction: are you requesting way too many compute units? Overrequesting adds to your cost and congests the blocks.

Tightening your compute budgets, estimating the priority per account, and submitting transactions via the staked connection path will increase your effective throughput much more than any network-wide change.

Why the headline number still matters

Aggregate TPS is a reasonable proxy for the health of the network and its ability to handle the load without degradation. Sustainable TPS in the thousands with the subsecond finality allows consumer applications to treat Solana as a transactional backend. Network upgrades of 2026 (100 million compute unit blocks in July, 200 ms slots in October, Alpenglow consensus on October 21, and new validator clients such as Firedancer) continuously increase the ceiling. Phase two of Alpenglow, Rotor, is still to come as the replacement of Turbine block propagation. But please, do not confuse the ceiling with your own throughput. The latter is engineered by you.

Conclusion

Solana's TPS headline is a single figure that mixes fails and light transactions and tells you almost nothing about your application. The throughput that matters to you is localized: the write budget of the accounts you access, your priority fee relative to others accessing the same accounts, and whether your transactions go through a staked path to a nearby leader. Measure landing rate during peak hours, tune the compute and priority fees, and engineer your own throughput, not the network's.

If you need the submission path that is resilient to the peaks in the headline TPS, OrbitFlare RPC plans provide the staked transaction landing in eleven regions.

Frequently asked questions

What is Solana's real TPS?
Sustained throughput on mainnet is in the low thousands of transactions per second in a busy hour, with peaks of several thousand. Since Alpenglow (21 October 2026) every counted transaction is a user transaction; validator votes no longer go through blocks. Theoretical figures in the tens of thousands are lab numbers and not representative.
Why did Solana's reported TPS drop in October 2026?
Alpenglow moved validator voting out of the ledger. Before 21 October 2026 vote transactions were roughly two thirds of the headline number; since then they are exchanged between validators directly and never enter a block. The drop is an accounting change, not a loss of user throughput.
Why do explorers show different TPS numbers?
Some count failed transactions, some do not, and they average over different windows. Charts that span 21 October 2026 also mix the old count, which included votes, with the new one. Compare like with like.
Does high TPS mean my transaction will land fast?
No. Landing depends on the write budget of the accounts you touch, your priority fee relative to competitors on those accounts, and whether you submit over a staked path. The network can be mostly idle while your pool is saturated.
How fast is finality on Solana now?
Blocks arrive every 200 ms and Alpenglow targets finality about 150 ms after a block, compared with about 12.8 seconds under the old TowerBFT consensus. The confirmed and finalized commitment levels now describe the same state, so new code should ask for finalized.
Is Solana's TPS limited by hardware?
Partly. Validator hardware and network bandwidth set practical limits, which is why the client requirements rise over time. The binding limits in normal operation are the compute budgets: 50 million compute units per 200 ms block and 20 million per writable account.
How do I increase my own throughput on Solana?
Request only the compute you use, estimate priority fees per account, batch where the program allows, and submit through a staked lane or bundles from a region near the leader. See [network infrastructure for low-latency trading](/blog/fundamentals/network-infrastructure-for-low-latency-solana-trading).

About the author

Sourav Mishra

Solutions Engineer · OrbitFlare

Sourav Mishra help build low-latency Solana infrastructure at OrbitFlare — shred streaming, gRPC pipelines, and eBPF-powered networking, mostly in Rust. He writes the kind of deep dives he wishes existed when he started: what a shred actually is, why Solana's VM shares a lineage with the packet filter in your kernel, and how to get transaction data out of the network before everyone else does.

More articles by Sourav Mishra
Thanks for reading.Back to all articles

Code. Build. Stream. Without Limits.

Build something that moves.

Choose your infrastructure. We’ll help you find the right setup.

A useful starting point

Edit the brief, then copy it and open your assistant. Paste it into a new chat to get started.

Official sources included. You choose when to send.