See it coming.
Then see it land.
Every Solana transaction as soon as it is rebuilt from shreds, before it executes, with its lookup tables resolved. The Yellowstone SubscribeDeshred stream, in every plan.
Deshredded copy against the executed update of the same transaction, across 8 DEX programs:
Frankfurt, 2 November 2026: 262,463 transactions on pump.fun, pump AMM, Raydium AMM, CPMM and CLMM, Meteora DLMM and DAMM v2, and Orca, both streams read by one client and timed on arrival. Figures are averaged over the 8 programs; pooled over every transaction the median lead is 0.25 ms, since pump.fun, the busiest, has the smallest.
Signature and the transaction exactly as it is in the block: its signatures and message.
The writable and read-only addresses its lookup tables load, already resolved, so a filter on an account matches wherever the account appears.
The slot and the range of shreds it was rebuilt from, plus slot statuses on the same stream.
No status, balances or logs: the transaction has not run yet. It can still fail, and it can be on a fork that is later dropped.
| DESHRED | EXECUTED | |
|---|---|---|
| Call | SubscribeDeshred | Subscribe |
| Arrives | When rebuilt from shreds | When executed |
| Carries | Transaction, lookup-table addresses | Transaction with status meta, account updates |
| Filters | accountInclude, accountRequired, accountExclude | The same, plus failed and signature, and account filters |
| Failed transactions | Included: nothing has run yet | Filter on them |
| Use it to | See a transaction coming and act on it | Know what it did |
Same endpoint.
Same token.
SubscribeDeshred in TypeScript (@triton-one/yellowstone-grpc 5.0.7 or later) and Rust (yellowstone-grpc-client 12.1 or later)
Full examples in TypeScript and Rustconst stream = await client.subscribeDeshred();
stream.on("data", (u) => console.log(u.deshredTransaction?.slot));
stream.write({
deshredTransactions: {
swaps: {
accountInclude: ["pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"],
accountExclude: [],
accountRequired: [],
},
},
slots: {},
});
let (mut tx, mut stream) = client.subscribe_deshred().await?;
tx.send(SubscribeDeshredRequest {
deshred_transactions: HashMap::from([(
"swaps".to_owned(),
SubscribeRequestFilterDeshredTransactions {
account_include: vec!["pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA".into()],
..Default::default()
},
)]),
..Default::default()
})
.await?;
Solana deshred pricing
IN EVERY PLAN. NO EXTRA.Full feed, both streams. Measure it against your current best source.
For a proper benchmark run.
About 29 USDC a day.
About 22 USDC a day.
Deshred is not sold separately: every plan and the trial include it, next to the executed gRPC stream. Two locations: Frankfurt and Amsterdam. Billing
Deshred, answered.
What it is, what it is not.
What is a deshredded transaction?
A block travels as shreds. Once enough of them arrive, the entries they carry can be rebuilt and the transactions read out, before anything executes. SubscribeDeshred sends each transaction at that moment, with its lookup-table addresses resolved.
Is it the same as raw shreds?
No. Raw shreds are fragments you would reassemble and decode yourself. The deshred stream does that for you and sends whole transactions, filtered by the accounts you name.
Does it include failed transactions?
Yes. Nothing has executed yet, so a transaction that will fail looks like any other. Use the executed stream when you need to know the outcome.
Which clients support it?
TypeScript @triton-one/yellowstone-grpc 5.0.7 or later (subscribeDeshred), Rust yellowstone-grpc-client 12.1 or later (subscribe_deshred), or any client built on yellowstone-grpc-proto 12.1 or later. Slot statuses on the stream need proto 12.7, which TypeScript 10.0.0 and Rust 13.5 have. Client versions
Does it cost extra?
No. Every plan and the free 3-hour trial include it, on the same endpoint and token as the executed stream, within the same stream limits.