Skip to content
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