geyserbench

Solana feed latency · measured from Frankfurt (Cherry Servers)
Built on polyphia/geyserbench (branch feat/udp-shredstream), itself based on solstackapp/geyserbench. Our respect and gratitude to both authors for their work for the community.
what this is, why, and how to use it
What. A latency benchmark for Solana transaction feeds (Yellowstone gRPC, Shredstream, raw UDP shreds, ARPC, Thor, Jetstream, Shreder). Every feed is subscribed to the same account at the same moment from one host in Frankfurt (Cherry Servers), and for each transaction we record who delivered it first and by how much.

Why. Providers quote latency their own way. Here everyone is measured under identical conditions, with a fixed set of reference feeds, and every result gets a permanent link that shows the full picture: win rate, percentiles, per-pair delay histograms, pings and hosting of each source. The benchmark runs with --private: nothing is uploaded anywhere, results live only on this page.

How to use. Quickest way: press "run the test" with the form empty — it runs on the default reference feeds alone and gives you a fresh result and a link.
  1. Submit a test (button top right): paste up to 3 [[endpoint]] blocks in geyserbench format — examples for every kind are next to the form. Your sources are measured side by side with the default reference feeds.
  2. Whitelist our IP at your provider if it filters by IP; the address is shown above the form. For raw UDP shreds start sending first to that IP and one of the ports shown there, then press run: the test listens 15 s for your packets and, if none arrive, marks that source absent and continues without it.
  3. Run. Each source is probed first (50 tx); sources that deliver nothing are skipped with the reason shown, the rest are measured on 3000 transactions. Tokens are used once and deleted. The run takes 10–60 s; the page updates itself.
Reading the results.
  • runs — list of runs; click one to open it. Every test lands here unless its submitter chose link-only.
  • Finished / Detailed resultsFirst %: share of transactions this feed delivered first. P50 / P95 / P99: how many ms behind the fastest feed it was, at the median and at the tails. Valid Tx: transactions seen by all feeds (the comparison base).
  • Ping — ICMP from the benchmark host to every source and shred sender, with ASN, hosting and location.
  • Pair comparison / Delay histogram — pick two feeds; the table says who was earlier and by how much, the histogram shows the distribution of the per-transaction difference (negative = A earlier).
runs
publicwhen (UTC)runfromfastestendpoints
submit your own source(s) for a test paste geyserbench-style config — up to 3 [[endpoint]] blocks; [config], [backend], [[histogram]] are ignored
loading your shred ports…
min 1000, max 200000 (default 3000; more transactions = longer run)
(link-only; the result is still available by its permanent link)
Your endpoints are measured against the reference feeds on the same host (Frankfurt, Cherry Servers). The field may be left empty: the test then runs on the default reference feeds alone. One test at a time; tokens are used for the run and deleted afterwards; you get a permanent link; the result is listed on this page unless you tick "don't list" above.
examples — every supported kind, exact format (values are placeholders)
# Yellowstone gRPC (Triton / Geyser gRPC)
[[endpoint]]
name = "My Yellowstone"
url = "https://grpc.example.com:10000/"
x_token = "optional-auth-token"
kind = "yellowstone"

# aRPC (Corvus-style)
[[endpoint]]
name = "My aRPC"
url = "https://arpc.example.com:20202"
kind = "arpc"

# Thor streamer
[[endpoint]]
name = "My Thor"
url = "https://thor.example.com:50051"
x_token = "thor-api-token"
kind = "thor"

# Jito ShredStream proxy (gRPC, your own proxy)
[[endpoint]]
name = "My Jito ShredStream"
url = "http://203.0.113.10:10000"
kind = "shredstream"

# Shreder (gRPC)
[[endpoint]]
name = "My Shreder"
url = "https://shreder.example.com:9000"
kind = "shreder"

# Jetstream (gRPC)
[[endpoint]]
name = "My Jetstream"
url = "https://jetstream.example.com:443"
kind = "jetstream"

# Raw UDP shreds: send them to OUR address 88.216.182.12 on one of YOUR
# ports shown above the form (valid 1 h). Start sending BEFORE you press run:
# the test listens 15 s, then goes on without a silent source.
# (url is not needed — we listen on 0.0.0.0:.)
[[endpoint]]
name = "My raw shreds"
port = 21437
kind = "udpshredstream"
Only public hosts are accepted. Names that look like our reference feeds are prefixed with "user".