Quick reference: Arbitrum RPC endpoints and chain settings
If you just need the endpoint and chain details to configure a wallet or start coding, here is the short version. The official public RPC endpoints are rate-limited and do not support WebSocket, so they are fine for prototyping but not for production traffic.
| Network | RPC URL | Chain ID | Explorer |
|---|---|---|---|
| Arbitrum One | https://arb1.arbitrum.io/rpc |
42161 | Arbiscan |
| Arbitrum Nova | https://nova.arbitrum.io/rpc |
42170 | Nova Explorer |
| Arbitrum Sepolia (testnet) | https://sepolia-rollup.arbitrum.io/rpc |
421614 | Sepolia Arbiscan |
For production applications, you will typically use a managed RPC provider that offers higher rate limits, WebSocket support, and archive data. OnFinality provides RPC endpoints for Arbitrum and other networks, with pricing that scales with your usage.
How to connect to Arbitrum with curl
Arbitrum is EVM-compatible, so you can use standard JSON-RPC methods. Here is a quick curl example to get the latest block number:
curl https://arb1.arbitrum.io/rpc \
-X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
You should get a response like:
{"jsonrpc":"2.0","id":1,"result":"0x1d4c4b"}
The result is a hex-encoded block number. Convert it to decimal to get the current block height.
Using ethers.js or viem with Arbitrum
Most developers use a library like ethers.js or viem. Here is an example with ethers v6:
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider("https://arb1.arbitrum.io/rpc");
const blockNumber = await provider.getBlockNumber();
console.log(blockNumber);
With viem, you can create a public client:
import { createPublicClient, http } from "viem";
import { arbitrum } from "viem/chains";
const client = createPublicClient({
chain: arbitrum,
transport: http("https://arb1.arbitrum.io/rpc"),
});
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
Adding Arbitrum to MetaMask or other wallets
If you want to add Arbitrum One to MetaMask manually, use these settings:
- Network Name: Arbitrum One
-
New RPC URL:
https://arb1.arbitrum.io/rpc -
Chain ID:
42161 -
Currency Symbol:
ETH -
Block Explorer URL:
https://arbiscan.io
For Arbitrum Nova, use chain ID 42170 and explorer https://nova.arbiscan.io. For Arbitrum Sepolia, use chain ID 421614 and explorer https://sepolia.arbiscan.io.
Official public endpoints vs. managed providers
The official public RPC endpoints are operated by the Arbitrum team and are free to use. However, they have limitations:
-
No WebSocket support: The public endpoints do not support
wss://connections. If your dApp needs real-time updates, you need a provider that offers WebSocket. - Rate limits: Public endpoints are shared and can be throttled under heavy load.
- No archive data: They only serve recent state. If you need historical state, you need an archive node.
-
Sequencer endpoint: The sequencer endpoint (
https://arb1-sequencer.arbitrum.io/rpc) only supportseth_sendRawTransactionandeth_sendRawTransactionConditional. It is not a general-purpose RPC endpoint.
For production, you should use a managed RPC provider that offers:
- Higher rate limits and dedicated throughput
- WebSocket support for subscriptions
- Archive data and trace methods
- Global edge caching for low latency
- Failover and redundancy
OnFinality provides Arbitrum RPC endpoints as part of its supported networks, with flexible pricing for both shared and dedicated nodes.
How to choose an Arbitrum RPC provider
When evaluating an RPC provider for Arbitrum, consider these criteria:
| Criterion | What to check | Why it matters |
|---|---|---|
| Rate limits | Requests per second (RPS) and daily quota | Determines if your app can handle peak traffic |
| WebSocket support | Does the provider offer wss:// endpoints? |
Needed for real-time data and subscriptions |
| Archive data | Does the provider offer archive nodes? | Required for historical queries and analytics |
| Trace methods | Does the provider support debug_traceTransaction? |
Needed for debugging and indexing |
| Global coverage | Are there endpoints in multiple regions? | Reduces latency for users worldwide |
| Uptime SLA | What is the reliability expectations? | Ensures reliability for production apps |
| Pricing model | Pay-as-you-go vs. subscription | Affects cost predictability |
For a deeper dive, see our guide on how to choose an RPC provider.
Common pitfalls and troubleshooting
1. Using the sequencer endpoint for general queries
The sequencer endpoint only accepts transaction submission. If you call eth_call or eth_getBalance on it, you will get an error. Use the regular RPC endpoint for reads.
2. WebSocket not supported on public endpoint
If you try to connect via wss://arb1.arbitrum.io/rpc, it will fail. Use a provider that supports WebSocket, or poll the HTTP endpoint instead.
3. Rate limiting
If you get 429 Too Many Requests, you are hitting the rate limit. Consider upgrading to a paid plan or using a dedicated node.
4. Chain ID mismatch
Make sure your wallet or dApp uses the correct chain ID: 42161 for Arbitrum One, 42170 for Nova, 421614 for Sepolia. A mismatch will cause transactions to be rejected.
5. Gas estimation issues
Arbitrum uses a different gas model than Ethereum. Use eth_estimateGas with the appropriate parameters, and be aware that L1 data fees are included in the gas price.
Monitoring your Arbitrum RPC health
To ensure your dApp stays healthy, monitor your RPC endpoint's latency and error rate. You can use a simple script to check the latest block number periodically:
while true; do
curl -s -X POST https://arb1.arbitrum.io/rpc \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
| jq -r '.result' \
| xargs printf "Block: %d\n"
sleep 10
done
If the block number does not increase over time, your endpoint may be stale. Consider using a provider with failover.
Key Takeaways
- The official Arbitrum RPC endpoints are
https://arb1.arbitrum.io/rpc(One),https://nova.arbitrum.io/rpc(Nova), andhttps://sepolia-rollup.arbitrum.io/rpc(Sepolia). - Public endpoints are rate-limited and do not support WebSocket, so they are not suitable for production.
- Use a managed provider like OnFinality for higher rate limits, WebSocket, archive data, and reliability.
- Always verify the chain ID and use the correct endpoint for the network you intend to interact with.
Frequently Asked Questions
What is the Arbitrum RPC endpoint?
The Arbitrum RPC endpoint is a URL that allows wallets and dApps to communicate with the Arbitrum blockchain via JSON-RPC. The mainnet endpoint is https://arb1.arbitrum.io/rpc.
Does Arbitrum support WebSocket?
The official public RPC does not support WebSocket. You need a third-party provider that offers WebSocket endpoints, such as OnFinality.
How do I get an Arbitrum RPC URL?
You can use the public endpoint https://arb1.arbitrum.io/rpc for testing, or sign up for a managed provider to get a private endpoint with higher limits.
What is the chain ID for Arbitrum One?
The chain ID for Arbitrum One is 42161. For Arbitrum Nova it is 42170, and for Arbitrum Sepolia it is 421614.
Can I use the sequencer endpoint for general RPC calls?
No, the sequencer endpoint only supports eth_sendRawTransaction and eth_sendRawTransactionConditional. Use the regular RPC endpoint for other methods.
Related resources
Originally published at OnFinality.
Top comments (0)