Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions benchmarks/arbitrum-rpc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ slug: arbitrum-rpc
number: "045"
title: Fastest free Arbitrum RPC, live no-key endpoint latency
seo_title: "Fastest free Arbitrum RPC 2026"
seo_description: "{{best_name}} leads free Arbitrum RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 8 no-key providers measured every 15s from 3 regions."
subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Arbitrum RPC endpoint, audited every 15 seconds from 3 regions.
seo_description: "{{best_name}} leads free Arbitrum RPC at {{best_p50}} (eth_getBlockByNumber p50, 24h). 8 no-key providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for eth_getBlockByNumber against every free, no-key public Arbitrum RPC endpoint, audited every 60 seconds from 3 regions.

category: RPCs
status: live
Expand All @@ -14,13 +14,13 @@ unit: ms
higher_is_better: false

seo_intro: |
Arbitrum is the second-largest cohort in the cluster: 8 no-key providers including the Arbitrum Foundation's own `arb1.arbitrum.io/rpc`, and one of the few chains where Lava and MeowRPC still compete on a free tier. Foundation endpoints are documented best-effort, and our data shows what that means in practice: a respectable median with a p99 roughly ten times worse. Every provider answers the identical `eth_getBlockByNumber` probe every 15 seconds from us-east, eu-west and Singapore.
Arbitrum is the second-largest cohort in the cluster: 8 no-key providers including the Arbitrum Foundation's own `arb1.arbitrum.io/rpc`, and one of the few chains where Lava and MeowRPC still compete on a free tier. Foundation endpoints are documented best-effort, and our data shows what that means in practice: a respectable median with a p99 roughly ten times worse. Every provider answers the identical `eth_getBlockByNumber` probe every 60 seconds from us-east, eu-west and Singapore.

abstract: |
Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Arbitrum endpoint that sustains continuous probing, 8 providers, every 15 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Arbitrum-scoped answer with per-region breakdowns as a first-class dimension.
Per-chain member of the RPC latency cluster. We measure the round-trip latency of a single, identical RPC call (`eth_getBlockByNumber`) against every no-key public Arbitrum endpoint that sustains continuous probing, 8 providers, every 60 seconds, from us-east, eu-west and Singapore. The harness also classifies every response (ok / http_err / jsonrpc_err / stale / timeout) and audits archive depth every 5 minutes, so the leaderboard rewards sustained, honest availability rather than a fast error message. The cross-chain view lives on the parent rpc-capabilities benchmark; this page is the Arbitrum-scoped answer with per-region breakdowns as a first-class dimension.

methodology:
- "Cadence: every 15 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs."
- "Cadence: every 60 seconds per provider, from each of 3 probe regions (us-east Virginia, eu-west Amsterdam, sgp Singapore). Headline p50/p90/p99 aggregate across all 3 regions via Prometheus `avg(quantile_over_time(...))`; per-region breakdowns are first-class on this page via the region tabs."
- "Payload: `{\"jsonrpc\":\"2.0\",\"id\":<rotating>,\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\",false]}`. Plain HTTP POST, identical for every endpoint, no API key in any request. Non-cacheable by design: the latest-header fetch with a rotating id defeats edge caches that answer eth_blockNumber without touching a node."
- "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms → 10 s), so percentiles are computed via Prometheus `quantile_over_time` over the last 24 hours."
- "Call-result classification: `ok` (HTTP 200 + non-empty result), `http_err`, `jsonrpc_err` (HTTP 200 carrying an error body), `stale` (more than 20 blocks behind the cross-provider tip), `timeout`. Latency without reliability is a misleading ranking signal."
Expand All @@ -36,13 +36,13 @@ findings:

faq:
- q: "What is the fastest free Arbitrum RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 8 no-key providers probed every 15 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment."
a: "{{best_name}} currently leads at {{best_p50}} (`eth_getBlockByNumber` p50 over the last 24h), measured against 8 no-key providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples, so the answer on this page is the answer right now, not a quarterly snapshot. Use the region tabs to see the leader from the origin closest to your deployment."
- q: "Which Arbitrum RPCs work without an API key?"
a: "The 8 providers on this page: PublicNode, dRPC, 1RPC, Tenderly, Nodies, Lava, MeowRPC, Arbitrum. Every (provider, chain) pair was live-verified no-key before inclusion, and anything that key-gates, region-blocks or rate-limits below our 15-second cadence is excluded rather than listed with an asterisk."
- q: "Does the fastest Arbitrum RPC change by region?"
a: "Frequently. The headline number averages three probe origins (us-east, eu-west, Singapore), but per-region leaders regularly diverge, a gateway that wins from Virginia can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number on the page to a single origin; pick the one closest to where your requests actually originate."
- q: "How is Arbitrum RPC latency measured here?"
a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 15 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself."
a: "One identical JSON-RPC POST (`eth_getBlockByNumber`) every 60 seconds against each provider from each of 3 regions, with the same plain HTTP client. Wall-clock round-trip is recorded at millisecond precision; p50/p90/p99 are computed via Prometheus `quantile_over_time` over 24 hours. Responses are classified (`ok` / `http_err` / `jsonrpc_err` / `stale` / `timeout`) so an endpoint stuck on an old head or returning errors behind HTTP 200 is never ranked as fastest. The harness is open source and every number on this page is a public Prometheus query you can run yourself."
- q: "Should I use the official Arbitrum Foundation RPC in production?"
a: "The Foundation documents `arb1.arbitrum.io/rpc` as best-effort and rate-limited, intended for development. Our continuous measurement confirms the profile: acceptable p50 with a p99 tail several times worse than the leading gateways. For read-heavy production paths a gateway with a tighter distribution is the safer default; keep the official endpoint as a fallback rather than a primary."

Expand All @@ -68,7 +68,7 @@ providers:
- slug: publicnode
name: PublicNode
tag: Allnodes-operated, 70+ chains, archive on most
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to PublicNode's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="publicnode", chain="arbitrum"})
Expand All @@ -91,7 +91,7 @@ providers:
- slug: drpc
name: dRPC
tag: Decentralized RPC mesh, consensus-checked
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to dRPC's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="drpc", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="drpc", chain="arbitrum"})
Expand All @@ -114,7 +114,7 @@ providers:
- slug: 1rpc
name: 1RPC
tag: Privacy-preserving gateway by Automata Network
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to 1RPC's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="1rpc", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="1rpc", chain="arbitrum"})
Expand All @@ -137,7 +137,7 @@ providers:
- slug: tenderly
name: Tenderly
tag: Multi-chain public gateway, 9 chains, no key
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Tenderly's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tenderly", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tenderly", chain="arbitrum"})
Expand All @@ -160,7 +160,7 @@ providers:
- slug: nodies
name: Nodies
tag: POKT Network's decentralized public RPC successor, 7+ chains
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Nodies's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nodies", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nodies", chain="arbitrum"})
Expand All @@ -183,7 +183,7 @@ providers:
- slug: lava
name: Lava
tag: Decentralized permissionless RPC mesh (ETH + Arbitrum no-key)
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Lava's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Lava's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="lava", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="lava", chain="arbitrum"})
Expand All @@ -206,7 +206,7 @@ providers:
- slug: meowrpc
name: MeowRPC
tag: Free public RPC, no registration
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to MeowRPC's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to MeowRPC's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="meowrpc", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="meowrpc", chain="arbitrum"})
Expand All @@ -229,7 +229,7 @@ providers:
- slug: arbitrum-official
name: Arbitrum
tag: Arbitrum Foundation public RPC, Arbitrum One only
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 15s from 3 regions (us-east + eu-west + sgp) to Arbitrum's no-key Arbitrum endpoint."
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to Arbitrum's no-key Arbitrum endpoint."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="arbitrum-official", chain="arbitrum"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="arbitrum-official", chain="arbitrum"})
Expand Down
Loading
Loading