Jito vs Firedancer: Which Solana Client Actually Cuts Latency?
Jito vs Firedancer compared on real block-production and propagation latency — what each Solana client actually speeds up, and which to run.
"Jito vs Firedancer" gets asked like it's one question. It isn't. Jito is a fork of the existing validator client with an MEV pipeline bolted on; Firedancer is a from-scratch rewrite of the client itself, in C, with a different threading model, a different networking stack, and a different theory of where the bottlenecks actually are. They solve adjacent but distinct problems, and conflating them is how teams end up running the wrong stack for what they're actually trying to fix.
If you're chasing latency because your bot's fills are getting sandwiched or your fastest transaction still lands third in a slot, you need to know which layer is slow before you pick a client.
What Jito Actually Changes
Jito-Solana is a fork of Agave (the client formerly maintained as solana-labs/solana) that adds a parallel path for transaction ordering. The core pieces:
- Block engine — an off-validator service that simulates bundles, ranks them by tip value, and hands the winning set to the leader.
- Bundles — atomic groups of up to 5 transactions that either all land in the same slot or none do. This is what makes arbitrage and liquidation strategies viable without race conditions against your own transactions.
- ShredStream — a low-latency shred relay that lets you receive leader shreds before they'd normally reach you via Turbine, shaving tens of milliseconds off block-visibility time.
- Tip distribution — validators running Jito split MEV tips with stakers, which is why the vast majority of mainnet stake runs Jito-Solana today, not because it makes the base client faster.
None of this touches signature verification throughput, QUIC packet ingestion, or Turbine propagation fan-out. Jito's latency win is specifically in the auction-and-inclusion path: how fast your bundle gets seen, ranked, and included relative to competing bundles. If you're building for a market maker or an arb bot, this is the layer that matters, and it's the reason most serious Solana market-making infrastructure is built assuming Jito bundles rather than plain sendTransaction.
What Firedancer Actually Changes
Firedancer, built by Jump Crypto (Firedancer LLC), doesn't touch the auction layer at all — it rewrites the plumbing underneath every validator, Jito included eventually. The architecture is a pipeline of independent processes called tiles, each pinned to its own CPU core, communicating over a lock-free shared-memory message bus called Tango. Packet ingestion, QUIC/TLS handshake, dedup, signature verification, and banking each get their own tile instead of competing for time on a shared thread pool the way Agave's TPU pipeline does.
The number that gets quoted constantly is signature verification throughput — Firedancer's fd_sigverify tile has been benchmarked north of a million verifications per second in isolation, using batched AVX-512 Ed25519 verification instead of one-at-a-time checks. Mainnet doesn't actually need a million TPS of signature checks today (real non-vote throughput sits in the low thousands), but that headroom matters the moment you hit a congestion event — an NFT mint, a token launch, a coordinated spam attack — where the bottleneck isn't consensus, it's the validator falling over trying to triage the packet flood.
The practical rollout path is Frankendancer: Firedancer's networking, QUIC, dedup, and sigverify tiles running in front of the existing Agave runtime and banking stage. It's been live on a growing share of mainnet-beta stake, and it's the version you'll actually run before the full native Firedancer runtime (including its own banking/execution stage) reaches general availability.
A Rough Way to Reason About the Gap
You can estimate where your own transactions are losing time without touching either client's source, just by timing the path yourself:
# Time from tx submission to observed inclusion, sampled over N slots
solana confirm -v <SIGNATURE> --url https://api.mainnet-beta.solana.com
# Cross-reference against slot leader schedule to see if you're
# hitting a Jito-enabled leader or a vanilla Agave leader
solana leader-schedule --url https://api.mainnet-beta.solana.com | grep <SLOT>
If confirmation time correlates with which leader you hit rather than when you submitted, your bottleneck is client-side (propagation, sigverify queueing) — that's Firedancer's problem to fix. If it correlates with tip size and bundle competition, that's the Jito auction — no client rewrite fixes a bidding war.
Jito vs Firedancer: Side by Side
| Dimension | Jito-Solana | Firedancer / Frankendancer |
|---|---|---|
| What it is | Fork of Agave with MEV extensions | Ground-up client rewrite (C, tile architecture) |
| Latency target | Bundle inclusion, tip auction, ordering | Packet ingestion, sig verify, propagation, resilience under load |
| Mainnet status | Majority of stake, production for years | Frankendancer live on growing stake; full native runtime rolling out |
| Helps MEV/arb bots | Directly — atomic bundles, tip routing | Indirectly — faster propagation, no bundle logic |
| Helps under network stress | Somewhat (relay path) | Significantly — dedicated tiles avoid pipeline stalls |
| Requires new mental model | No — same runtime, added modules | Yes — different process/threading model, ops differ |
| Client diversity benefit | Low (still Agave-derived) | High — reduces single-client risk to the network |
Where the Real Bottleneck Usually Lives
Before you rebuild anything around client choice, check the layer above the validator entirely. A huge share of "latency" complaints from trading teams trace back to how they're consuming chain data, not to the validator client at all — polling a JSON-RPC endpoint instead of subscribing to a streaming feed adds latency that dwarfs anything Firedancer saves on sigverify. We've written about that gap directly in our comparison of Yellowstone gRPC against websocket RPC, and it's usually the first thing worth fixing before touching validator infrastructure. The same principle shows up off-chain too — systems like Hyperliquid's HLP vault or UMA's optimistic oracle dispute window are built around the assumption that data pipelines, not base-layer consensus, are where most latency actually accumulates; see how the HLP vault manages fill latency and how UMA's dispute resolution handles the same tradeoff with a longer time horizon.
If you're running validator or RPC infrastructure yourself, both client choice and the ingestion layer above it are part of the same tuning problem — it's worth treating them together rather than optimizing one in isolation, which is the kind of work covered under infrastructure and data pipeline builds.
Which to Pick When
Run Jito-Solana if: you or your users care about MEV — arbitrage, liquidations, sandwich protection via private bundles, or you're a validator operator who wants tip revenue. This is not optional for anyone doing serious on-chain trading; nearly every competitive searcher already assumes bundle access, so skipping it just means losing races to people who have it.
Run Frankendancer if: you operate validator or RPC infrastructure and your pain point is packet-flood resilience during congestion events, or you want to reduce client concentration risk. It's a superset of Jito eventually — the roadmap explicitly includes merging bundle support into the Firedancer runtime, so this isn't a permanent either/or.
Run both, when Firedancer + Jito support matures: for anyone building latency-sensitive trading systems at scale, the end state is a Firedancer-based validator with Jito's MEV path integrated on top, paired with a streaming data layer instead of polling RPC. Until that merge lands broadly, most production trading infra runs Jito-Solana for the auction path and treats Firedancer/Frankendancer adoption as a validator-operator decision that indirectly benefits everyone through better propagation and less network-wide latency variance.
If your stack is duct-taped together from RPC polling, a validator you're not tuning, and no visibility into where your fills are actually slipping, the fix usually isn't picking a client — it's instrumenting the whole pipeline with a real trading dashboard so you can see which layer is costing you milliseconds before you spend engineering time chasing the wrong one.
Need someone to actually build and tune this instead of debating it — talk to us about your infrastructure and data pipeline.
Need a bot like this built?
We design, build and run trading bots on Solana, Hyperliquid and Polymarket.
Start a projectMore from the blog
Public vs Paid RPC: How to Run a Fair Benchmark
A fair comparison of public and paid RPC endpoints must account for quotas, workload, freshness and support guarantees.
Read articleRPC Benchmark Percentiles Explained: p50, p95 and p99
Why averages hide the latency spikes that break trading bots, wallets and production blockchain applications.
Read articleHyperliquid REST vs WebSocket Benchmark: What to Measure
A benchmark plan for Hyperliquid market data that separates request latency from streaming freshness and recovery.
Read article