Summary
Base public RPC endpoints are convenient for prototyping and light reads, but they are shared infrastructure with no guarantees on throughput, rate limits, or availability. Independent performance metrics help you compare latency, error rates, and method coverage, but you should always verify them against your own workload before committing to production.
This article explains how to read Base public RPC endpoint lists, how to interpret independent performance metrics, and when to move from a public endpoint to a managed RPC API or a dedicated Base node. It includes chain settings, a curl example against the OnFinality public Base endpoint, and a practical evaluation matrix.
Base public RPC endpoints are the fastest way to connect a wallet, script, or prototype to the Base network. They are also the most misunderstood piece of Base infrastructure: a public endpoint is shared, best-effort, and usually undocumented in terms of rate limits or method coverage. Independent performance metrics can help you compare endpoints, but only if you know what is being measured and how it maps to your workload.
This page is a practical reference for developers and infrastructure buyers who searched for Base public RPC endpoints and independent performance metrics. It covers chain settings, how to read performance data, when a public endpoint is enough, and when to move to a managed RPC API or a dedicated Base node.
Quick recommendation: public endpoint, managed RPC, or dedicated node?
Use this decision guide before you copy an endpoint into production.
| Your situation | Recommended starting point | Why |
|---|---|---|
| Wallet testing, one-off scripts, hackathon demos | Public Base RPC endpoint | Zero setup, no account, fine for low request volume |
| Testnet development on Base Sepolia | Public Base Sepolia endpoint, then a managed testnet RPC | Public testnets are rate-limited and reset-friendly, but shared |
| Production dApp with steady read traffic | Managed RPC API with a Base endpoint | Predictable access, better observability, support path |
| Indexer, analytics, or backfill job | Archive-capable RPC or dedicated node | Public endpoints usually do not serve deep historical state reliably |
| High request volume, WebSocket subscriptions, or strict latency needs | Dedicated Base node | Isolated capacity, configurable transport, no noisy neighbours |
If you are still deciding between providers, the broader criteria in how to choose an RPC provider apply directly to Base. For current Base endpoint options and transport support, see the Base RPC network page.
Base chain settings you need before testing any endpoint
Before you benchmark anything, confirm you are pointing at the right network. Base mainnet and Base Sepolia share tooling but not chain IDs.
| Setting | Base mainnet | Base Sepolia testnet |
|---|---|---|
| Chain ID | 8453 | 84532 |
| Native currency | ETH (18 decimals) | ETH (18 decimals) |
| Block explorer | https://basescan.org | https://sepolia.basescan.org |
| OnFinality public endpoint | https://base.api.onfinality.io/public | https://base-sepolia.api.onfinality.io/public |
| Transport | HTTP | HTTP |
A common failure mode is mixing these up: a script configured for chain ID 8453 will reject a Base Sepolia endpoint, and a wallet pointed at the wrong chain ID will show confusing balance or nonce errors. Always assert the chain ID at startup.
curl -s https://base.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
Expected result: 0x2105, which is 8453 in decimal. If you get 0x14a34, you are on Base Sepolia (84532).
How to read independent performance metrics without being misled
Independent performance dashboards are useful, but they measure a specific probe from a specific location at a specific time. Treat them as a starting signal, not a verdict.
- Latency is location-dependent. A provider that looks fastest from one region may be slower from your users' region. Check whether the methodology lists probe locations.
- Method mix matters. A dashboard that only calls
eth_blockNumberwill not predict performance foreth_getLogs,debug_traceTransaction, oreth_callagainst large contracts. - Rate limits are often invisible. Public endpoints frequently throttle by IP or by method. A dashboard may show low latency because it sends very few requests.
- Uptime windows hide incidents. A 30-day average can look healthy while a 10-minute outage breaks your app. Look for incident history, not just averages.
- Testnet and mainnet are separate. Metrics for Base Sepolia do not describe Base mainnet behaviour.
The only metric that ultimately matters is the one you measure against your own workload. Use public dashboards to build a shortlist, then run your own probe.
A minimal Base RPC probe you can run yourself
This Node.js example measures round-trip time for a few common methods. Run it from the same region as your application servers for a realistic signal.
const ENDPOINT = "https://base.api.onfinality.io/public";
const calls = [
{ method: "eth_chainId", params: [] },
{ method: "eth_blockNumber", params: [] },
{ method: "eth_getBlockByNumber", params: ["latest", false] },
];
async function probe(call) {
const start = performance.now();
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: call.method, params: call.params }),
});
const body = await res.json();
const ms = performance.now() - start;
return { method: call.method, status: res.status, ms: Math.round(ms), ok: !body.error };
}
(async () => {
for (const call of calls) {
console.log(await probe(call));
}
})();
Run this repeatedly over a few hours, from more than one region if possible, and log the results. That dataset is more useful than any single public benchmark because it reflects your actual call patterns.
Public endpoint vs managed RPC vs dedicated node on Base
Once you have your own numbers, map them to the workload you are actually running.
| Dimension | Public Base RPC | Managed RPC API | Dedicated Base node |
|---|---|---|---|
| Setup effort | None | API key and endpoint config | Provisioning and configuration |
| Capacity model | Shared, best-effort | Shared or tiered, documented | Isolated to your workload |
| Rate limits | Often undocumented | Documented per plan | Defined by your node |
| Archive / trace methods | Usually unavailable | Depends on plan | Configurable |
| WebSocket support | Rare | Often available | Configurable |
| Observability | Minimal | Provider dashboards and logs | Your own monitoring stack |
| Best fit | Prototypes, wallets, demos | Production dApps and APIs | High-volume or specialised workloads |
OnFinality provides a managed Base RPC API and dedicated Base node options. You can review RPC pricing for plan shapes and supported RPC networks for the full list, including Base and Base Sepolia.
When a public Base endpoint is genuinely the right choice
Public endpoints are not a compromise you should feel bad about. They are appropriate when:
- You are building a prototype and want to avoid account setup.
- You are writing a script that runs a handful of times per day.
- You are teaching, writing documentation, or demonstrating a concept.
- You need a fallback endpoint for a non-critical path.
They become a problem when you depend on them for user-facing traffic, when you need historical state, or when you need to guarantee a response time. At that point, the cost of a managed endpoint is usually smaller than the cost of debugging intermittent failures in production.
Migration checkpoints: moving off a public Base endpoint
If you decide to move, treat it as a configuration change with a checklist rather than a rewrite.
- Inventory your methods. List every JSON-RPC method your app calls, including any archive or trace calls. This determines which plan or node type you need.
- Measure baseline behaviour. Record current latency, error rate, and any throttling you observe on the public endpoint.
- Add the new endpoint behind a config flag. Do not hardcode endpoints in application code; read them from environment variables.
- Run shadow traffic. Send a copy of read-only requests to the new endpoint and compare responses before switching writes or user-facing traffic.
- Verify chain ID and block height. Confirm the new endpoint reports chain ID 8453 and a block height consistent with your previous source.
- Set up monitoring. Track error rate, p95 latency, and block lag. Alert on sustained deviation, not single spikes.
- Keep a fallback. Retain a secondary endpoint and a documented failover path.
Common Base RPC pitfalls and how to diagnose them
| Symptom | Likely cause | First check |
|---|---|---|
429 or sudden throttling | Shared public endpoint rate limit | Request rate per IP and per method |
-32000 or missing trie node | Archive state requested from a non-archive endpoint | Whether the method needs historical state |
| Wrong balances or nonces | Wallet pointed at Base Sepolia instead of Base | eth_chainId response |
Timeouts on eth_getLogs | Wide block range on a shared endpoint | Reduce range and paginate |
| Inconsistent results across providers | Different head lag | Compare eth_blockNumber across endpoints |
For most of these, the fix is either narrowing the request or moving to an endpoint with the capacity and method support your workload needs.
Key Takeaways
- Base public RPC endpoints are best for prototypes, wallets, and low-volume scripts, not for production traffic with strict latency needs.
- Independent performance metrics are a useful shortlist tool, but they measure a specific probe, not your workload. Always run your own probe from your application's region.
- Confirm chain settings first: Base mainnet is chain ID 8453, Base Sepolia is 84532.
- Move to a managed RPC API when you need predictable access and observability, and to a dedicated node when you need isolated capacity, archive access, or WebSocket support.
- Treat migration as a checklist: inventory methods, shadow traffic, verify chain ID, monitor, and keep a fallback.
Frequently Asked Questions
Are Base public RPC endpoints free to use?
They are generally open for low-volume use without an account, but they are shared and may be rate-limited or restricted by method. For production traffic, a managed RPC API or dedicated node gives you clearer capacity expectations.
Can I trust independent RPC performance metrics?
Use them to build a shortlist, not to make a final decision. Check the methodology, probe locations, and which methods are tested, then validate with your own measurements against your real call patterns.
What chain ID should I use for Base?
Base mainnet uses chain ID 8453. Base Sepolia uses chain ID 84532. Always assert the chain ID at startup to avoid sending requests to the wrong network.
When should I switch from a public endpoint to a dedicated Base node?
When you need isolated capacity, archive or trace methods, WebSocket subscriptions, or consistent latency under load. If your app is user-facing and depends on RPC availability, a managed or dedicated option is usually the safer choice.
Does OnFinality support Base and Base Sepolia?
Yes. OnFinality offers RPC API access for Base and Base Sepolia, alongside dedicated node options. See RPC pricing and supported RPC networks for details.