All articles
Infrastructure·February 7, 2026·6 min read

Solana Shreds Direct Feed: How It Cuts Trading Latency

Shred-level data arrives 200–400 ms before a block is confirmed — this guide explains how to subscribe to a shred feed, reconstruct partial slots, and act on order-book signals before competing bots see finalized state.

If you're running a Solana trading bot and reacting to confirmed blocks, you're trading yesterday's news. The Solana shreds direct feed is the mechanism that lets you see transaction data as the validator is still assembling the block — typically 200–400 ms before finalization — and for latency-sensitive strategies that gap is the whole game.

What Shreds Actually Are

Solana validators don't produce blocks in one shot. The leader breaks each block into shreds: fixed-size coded pieces (roughly 1,228 bytes each) that are broadcast over UDP using a turbine tree. A full slot contains ~25,600 shreds for a max-size block. The validator sends them as it produces them, not after.

Two shred types matter here:

  • Data shreds — carry actual transaction payload (up to 1,051 bytes each)
  • Coding shreds — Reed-Solomon parity pieces for reconstruction

You need ~50 % of the data shreds for a given FEC (forward error correction) set to reconstruct the transactions inside it. In practice, for transactions at the front of a block you can often reconstruct with the first few hundred shreds, which arrive well before the slot closes.

Subscribing to a Shred Feed

There are two practical approaches in production:

1. Co-locate and subscribe to the turbine tree directly. Run a node in the same datacenter as the validators (Equinix DA11 in Dallas is the main cluster). Configure it to receive shreds from the leader's turbine neighbors. This gives you raw UDP shred delivery before they're even gossip-propagated.

2. Use a shred-streaming service. Providers like Jito's ShredStream and a few private infra shops expose a gRPC or WebSocket endpoint that relays shreds from co-located nodes. You subscribe, receive a stream of ShredData messages, and handle reconstruction yourself — or use the callback they provide when an FEC set completes.

A minimal gRPC subscription in Rust looks roughly like this:

let mut client = ShredstreamClient::connect(endpoint).await?;
let request = SubscribeShredsRequest { slots: vec![] }; // all slots
let mut stream = client.subscribe_shreds(request).await?.into_inner();

while let Some(shred_msg) = stream.message().await? {
    process_shred(shred_msg);
}

The hard part isn't subscribing — it's what happens next.

Reconstructing Partial Slots

Each FEC set covers 32 data shreds + 32 coding shreds. You can reconstruct the 32 data shreds from any 32 received pieces (data or coding). In practical network conditions with a co-located node you receive FEC sets in roughly 10–30 ms windows.

Your reconstruction pipeline needs to:

  1. Index incoming shreds by (slot, fec_set_index, shred_index). Shreds arrive out of order over UDP.
  2. Trigger Reed-Solomon recovery the moment you have 32 pieces in a set.
  3. Deserialize the transaction payload from the recovered data shreds. Solana's wire format: each entry is a u64 num_hashes + Hash + a length-prefixed list of Transaction.
  4. Filter for your signal — a specific AMM instruction, a large swap, a liquidity deposit — before submitting your own transaction.

The key implementation detail: you don't need a complete slot. A swap on Raydium or Orca typically appears in an early batch of entries. If the signal is in FEC set 12 out of 400, you can be acting on it while sets 50–400 are still in flight.

Latency Numbers in Practice

From a co-located node in DA11 reacting to a leader on the same cluster:

Stage Typical delay
First shreds received after slot start ~15 ms
FEC set 0–15 complete, early txns reconstructed ~60–120 ms
Signal detected + your tx built and signed +5–10 ms
Jito bundle submitted to block engine +2–5 ms
Total: signal visible to your bot ~80–140 ms
RPC getBlock confirms slot ~400–600 ms

That 300–500 ms advantage is real and consistent on mainnet. For strategies like backrunning a large swap or reacting to a pool deposit, you're submitting your bundle before any non-shred-aware bot even knows the triggering transaction exists.

The Trade-Offs and Failure Modes

This isn't free. A few things to plan for:

Partial reconstruction failures. Network drops or turbine propagation hiccups mean you occasionally miss shreds and can't reconstruct an FEC set in time. Build a fallback: if you don't reconstruct within X ms, fall back to a Geyser account subscription or a fast RPC for that slot. Your hit rate on early reconstruction will be 90–95 %+ from a good co-location, not 100 %.

Leader rotation. Each slot has a different leader, and turbine paths shift accordingly. Your shred-feed provider needs to track the leader schedule and switch sources — handle this transparently or your feed goes dark every 400 ms.

False signals from failed transactions. Reconstructed transactions haven't been executed yet. A swap you detect in shreds might fail (slippage, insufficient funds, compute limit). You need to simulate the transaction or use a conservative reaction strategy that still profits even if your triggering tx reverts.

Jito bundle timing. If you're submitting a Jito bundle to follow the triggering tx in the same block, you need to win the leader's attention before the slot closes (~400 ms total). With 80–140 ms reaction time you typically have ~250 ms to build, sign and land your bundle — tight but workable.

For our Solana MEV and arbitrage bots we use shred feeds as the primary signal path, with Geyser account subscriptions as the hot fallback. The combo covers the edge cases without paying the latency penalty of going RPC-first.

When Shred Feeds Are Worth the Complexity

The infra cost is real: you need a co-location arrangement or a paid shred-stream subscription, a reconstruction library (write in Rust, not TypeScript — you need the throughput), and careful failure-mode handling. That's a few weeks of engineering for a team that hasn't done it before.

The payoff is clear for:

  • Backrunning swaps — detect a large trade 300 ms early, land an arb bundle in the same block
  • Sniper bots — see a pool creation in shreds, not confirmed state, and get an earlier queue position in the Jito block engine
  • Copy-trading — mirror a target wallet with a 300 ms head start over bots watching confirmed blocks

For strategies that aren't competing on raw speed — funding harvesting, grid strategies, event-driven signals from external data — the complexity doesn't pay for itself and a Geyser-based infra pipeline is the right call.

If your edge depends on being first in the block, shred-level data is the correct input. Everything else is waiting in line.


If you want shred-feed integration built into your Solana bot, or you're evaluating whether the latency gain is worth it for your specific strategy, reach out and let's scope it.

Need a bot like this built?

We design, build and run trading bots on Solana, Hyperliquid and Polymarket.

Start a project
#Infrastructure#Solana#Latency#MEV#Trading Bots#Geyser#Shreds