eth_blockNumber on Arbitrum
Everything below was measured on 2026-10-13 by calling eth_blockNumber on Arbitrum through the same endpoint customers use, and is re-measured weekly.
What eth_blockNumber does
Returns the number of the most recent block the node has, as a hex string. It is the cheapest way to tell whether a node is keeping up and the usual starting point for polling a chain.
eth_blockNumber on Arbitrum: what we measured
| Head block when measured | 514,427,784 (0x1ea98b88) |
|---|---|
| Age of that block when read | 1 s |
| Average block time (last 1,000 blocks) | 295 ms |
| Median gap between newHeads over WebSocket | 262 ms |
| "safe" behind the head | 2,609 blocks (about 13 min) |
| "finalized" behind the head | 4,250 blocks (about 21 min) |
What this means for polling
Arbitrum produces a block about every 295 ms, so a client that polls eth_blockNumber once a second sees the number jump by about 3 each time. If you need every block, subscribe to newHeads over WebSocket (see eth_subscribe on Arbitrum) or fetch the skipped range with eth_getBlockByNumber.
The number eth_blockNumber returns is the newest block, which can still change in a reorg. On Arbitrum, "finalized" was 4,250 blocks (about 21 min) behind it and "safe" 2,609 blocks behind. Use eth_getBlockByNumber("finalized") when you need a height that will not change.
Compared with other chains
Measured by the gap between WebSocket headers, Arbitrum has the 2nd fastest block cadence of the 40 chains we measure.
Example request
curl -s https://rpc.swiftnodes.io/rpc/arbitrum?key=YOUR_API_KEY \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'import { createPublicClient, http } from "viem";
const client = createPublicClient({
transport: http("https://rpc.swiftnodes.io/rpc/arbitrum?key=YOUR_API_KEY"),
});
const head = await client.getBlockNumber(); // bigint
// Follow the chain: poll about once per block (295 ms on Arbitrum)
const unwatch = client.watchBlockNumber({
pollingInterval: 295,
onBlockNumber: (n) => console.log("new head", n),
});Other methods on Arbitrum
- eth_chainIdSupported
- eth_getBalanceSupported
- eth_getBlockByNumberSupported
- eth_getTransactionByHashSupported
- eth_getTransactionReceiptSupported
- eth_callSupported
- eth_estimateGasSupported
- eth_gasPriceSupported
- eth_maxPriorityFeePerGasSupported
- eth_sendRawTransactionSupported
- eth_getTransactionCountSupported
- eth_getCodeSupported
- eth_subscribeSupported
- eth_getLogsSupported
- eth_getBlockReceiptsSupported
- eth_feeHistorySupported
- eth_getProofSupported
- eth_createAccessListSupported
- debug_traceCallSupported
- trace_blockSupported
- trace_transactionNot available
eth_blockNumber on other chains
- Ethereum
- Base
- Optimism
- Polygon
- BNB Smart Chain
- Avalanche
- Sonic
- Linea
- Scroll
- zkSync Era
- Blast
- Mantle
- Gnosis
- Celo
- Berachain
- Monad
- Unichain
- Kaia
- PulseChain
- World Chain
- Ronin
- Abstract
- ApeChain
- MegaETH
- Fantom
- Lisk
- Hemi
- X Layer
- BOB
- Plasma
- Fraxtal
- Zora
- Story
- Soneium
- Sei
- Hyperliquid
- Taiko
- Morph
- Ink
- Katana
- Ethereum Classic
- opBNB
- Mode
- Flare
- Core
- Chiliz
- Telos EVM
- Tempo
- Cronos
- Manta Pacific
- Shibarium
- Boba Network
- Arbitrum Nova
- Immutable zkEVM
Frequently asked questions
Does Arbitrum support eth_blockNumber?
Yes. eth_blockNumber answered on the SwiftNodes Arbitrum endpoint when our weekly probe called it through the customer path (2026-10-13).
How fast are blocks on Arbitrum?
About 295 ms per block, averaged over recent blocks (measured 2026-10-13).
How often should I poll eth_blockNumber on Arbitrum?
Polling cannot keep up with 295 ms blocks; subscribe to newHeads over WebSocket instead.
Arbitrum endpoints, live block height and WebSocket status are on the Arbitrum RPC page.
One key covers every chain we serve, and SwiftNodes has a free tier.