Can You Use the Base Public RPC in Production?

Updated October 26, 2026 · Spectrum Nodes
Short answer: No. Base's own docs say its public RPC at https://mainnet.base.org is rate limited and "not suitable for production apps", and Base runs no free public WebSocket endpoint. When we tested it on October 26, 2026, it refused trace and debug calls and answered eth_getLogs with "request limit reached". For a production app on Base (chain ID 8453), use a dedicated endpoint. Spectrum Nodes ranked first in our comparison of Base RPC providers, and our Boosted Nodes returned Base block traces 3.2× faster than Alchemy at the median.
| Setting | Base mainnet | Base Sepolia |
|---|---|---|
| Chain ID (decimal) | 8453 | 84532 |
Chain ID (hex, as eth_chainId returns it) | 0x2105 | 0x14a34 |
| Currency symbol | ETH | ETH |
| Public HTTPS RPC | https://mainnet.base.org | https://sepolia.base.org |
| Public WebSocket | None | None |
| Block explorer | https://basescan.org | https://sepolia.basescan.org |
| Spectrum endpoint | Tracing and archive, on our free tier | Tracing and archive, on our free tier |
Public endpoints from Base's docs, checked October 26, 2026. We confirmed both chain IDs by calling eth_chainId on the public endpoints the same day.
What Does Base Say About Its Public RPC?
Base says the public endpoints are for getting started, not for production. Three pages in Base's docs make the same point.
- Run a Node: "Our RPCs are rate-limited, they are not suitable for production apps." The page sends you to "an RPC provider from the Builder Stack" if you want to "avoid rate-limiting for your users". (source)
- Throughput and Limits: "Public endpoints are rate-limited and are not suitable for production traffic." Base adds that endpoint limits "can become the practical bottleneck for apps, wallets, indexers, and monitoring systems." (source)
- Flashblocks FAQ: "Base does not provide a free public WebSocket RPC endpoint." (source)
The public endpoint is still up. status.base.org listed the mainnet Public RPC API as operational on October 26, 2026. It works for what it was built for: wallet setup, quick tests and low volume reads.
What Happens When You Call mainnet.base.org?
Simple reads work. Event logs, traces and subscriptions don't. We sent one request per method to https://mainnet.base.org on October 26, 2026:
| Call | What your app uses it for | Result on mainnet.base.org |
|---|---|---|
eth_blockNumber | Latest block | Answered |
eth_getBalance at block 1,000,000 | Historical state | Answered |
eth_getLogs, one block | Contract events: transfers, swaps, deposits | "request limit reached" |
debug_traceBlockByNumber | Full block trace | "rejected due to request filter settings" |
debug_traceTransaction | Replay one transaction | "rejected due to request filter settings" |
trace_block | Parity style block trace | "rejected due to request filter settings" |
| WebSocket upgrade | Live subscriptions | HTTP 405 |
These were single requests from one server, so read the table as a snapshot. A public endpoint can change its limits without notice, which is one more reason not to build on one.
The eth_getLogs result hurts most. Logs are how a DEX front end shows swaps, how a wallet shows incoming tokens and how an indexer follows a contract. If that call fails, the screen your user is looking at stays empty.
Why Does the Public RPC Fail Under Production Traffic?
Everyone who calls the public endpoint shares it, so the limits have to be strict. Your app's traffic queues behind everyone else's tests and bots.
- Rate limits hit at the worst moment. Traffic surges when a token launches or a market moves. That is when a shared endpoint starts returning HTTP 429 (Too Many Requests), and your users see timeouts and failed transactions.
- Your heavy calls are blocked. Traces and debug calls need dedicated capacity, and the public endpoint refuses them.
- No push. Without WebSockets, your app polls for every new block and event, which burns through rate limits faster.
- No visibility. A keyless endpoint has no account behind it, so you get no usage dashboard showing which calls fail.
Base is about to make polling more expensive. Its Denim upgrade has run on Base Sepolia since October 21, 2026 and is targeted for mainnet in November 2026, per Base's docs. It moves Base from 2 second blocks to 200 ms blocks. An app that polls for each new block makes ten times the calls for the same work.
What Does a Production Base App Need From Its RPC?
Headroom you control, the full method set and a way to receive events without polling. Here is how the public endpoint and a Spectrum endpoint compare on Base:
| What you need | mainnet.base.org (our Oct 26 test) | Spectrum Nodes on Base |
|---|---|---|
| Throughput | Shared, rate limited | Your own plan: 25 RPS free, 50 RPS from $1.99 a month, up to 350 RPS on Enterprise, custom above |
Event logs (eth_getLogs) | "request limit reached" | Standard JSON RPC, logs included |
| Traces and debug | Rejected | Tracing on Base mainnet and Base Sepolia |
| Historical state | Answered in our test | Archive node type on Base mainnet and Base Sepolia |
| Live subscriptions | No public WebSocket | WebSocket URL per region |
| Events pushed to you | None | Spectrum Webhooks, live on Base |
| Uptime record | Shared endpoint, status at status.base.org | Over a billion requests a day at 99.99% uptime across our platform |
Spectrum plans from spectrumnodes.com/pricing, October 22, 2026.
Which Base RPC Provider Should You Use for Production?
In our comparison of the best Base RPC providers for 2026, Spectrum Nodes ranked first for teams that trace Base blocks. We publish that ranking, and every number in it comes with its test and date.
Base block traces (debug_traceBlockByNumber), Spectrum's Boosted Nodes vs Alchemy:
| Measure | Spectrum's Boosted Nodes | Alchemy | Gap |
|---|---|---|---|
| Median, Finland server | 126 ms | 409 ms | 3.2× faster |
| Slowest 5% (p95), Finland server | 399 ms | 2,120 ms | 5.3× faster |
| Median, Canada server | 285 ms | 620 ms | |
| Answered first | 94% of about 50,000 same instant requests |
Spectrum's RPC monitor sent the same call to both providers at the same instant, every cycle, from September 29 to October 14, 2026. Latency runs from sending the request to the last byte of the response. Spectrum's Boosted Nodes are our caching and routing layer in front of our own nodes, live on Base and not priced separately.
What else you get on Base:
- Security: SOC 2 Type II attested, and we have never had a breach.
- Hardware: our own racks in Tier III data centers in the US and Europe, plus a bare metal deployment in Singapore.
- Beyond RPC: unified APIs on Base for balances, token metadata, portfolios, NFTs and contract reads, and Spectrum Webhooks for address activity.
- Reach: one account covers RPC on 200+ chains, so the next chain you add uses the same keys and dashboard.
How Do You Move a Base App Off the Public RPC?
Create an endpoint, swap the URL and add a fallback.
1. Create a Spectrum Base Endpoint
- Sign up at https://dashboard.spectrumnodes.com/auth/signup. Base mainnet and Base Sepolia are on our free tier: 10M credits at 25 requests per second.
- Create an endpoint and pick Base, then Mainnet.
- Choose the node type. Pruned serves current state. Archive serves balances and contract state at any past block.
- Copy the HTTPS URL and the WebSocket URL for the region closest to your servers.
- Save them as
BASE_RPC_URLandBASE_WSS_URLin your environment.
2. Check the Endpoint
curl -s -X POST "$BASE_RPC_URL" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}' # {"jsonrpc":"2.0","id":1,"result":"0x2105"}
0x2105 is 8453, Base mainnet. Run the same request with eth_getLogs over a recent block to confirm logs come back.
3. Swap the URL and Add a Fallback
With viem, the fallback transport tries each URL in order and moves to the next one when a request fails:
import { createPublicClient, fallback, http } from 'viem' import { base } from 'viem/chains' export const client = createPublicClient({ chain: base, transport: fallback([ http(process.env.BASE_RPC_URL), // Spectrum, primary http(process.env.BASE_BACKUP_RPC_URL), // second provider ]), })
With ethers v6, FallbackProvider does the same job:
import { FallbackProvider, JsonRpcProvider } from 'ethers' const opts = { staticNetwork: true } export const provider = new FallbackProvider( [ { provider: new JsonRpcProvider(process.env.BASE_RPC_URL, 8453, opts), priority: 1, stallTimeout: 1500 }, { provider: new JsonRpcProvider(process.env.BASE_BACKUP_RPC_URL, 8453, opts), priority: 2, stallTimeout: 1500 }, ], 8453, { quorum: 1 }, )
You can list https://mainnet.base.org last for light reads. Don't count on it for logs or traces. For more on failover, read what happens when an RPC goes down.
4. Stop Polling for Events
Open a WebSocket and let new events come to you. This watches USDC transfers on Base:
import { createPublicClient, parseAbiItem, webSocket } from 'viem' import { base } from 'viem/chains' const ws = createPublicClient({ chain: base, transport: webSocket(process.env.BASE_WSS_URL) }) const unwatch = ws.watchEvent({ address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base event: parseAbiItem('event Transfer(address indexed from, address indexed to, uint256 value)'), onLogs: (logs) => console.log(logs), })
If you track wallets rather than contracts, Spectrum Webhooks drop the open connection entirely. You list the addresses to watch and an HTTPS URL you own, and we POST each transfer in or out of those addresses. Token events carry symbol, name and decimals, so your handler makes no second RPC call. Every delivery is signed with HMAC SHA256, sent at least once, reorg aware and batched up to 100 events.
5. Test on Base Sepolia First
Point a staging build at a Spectrum Base Sepolia endpoint (chain ID 84532), which also has tracing and archive. Our Base Sepolia faucet gives you free testnet ETH. When staging runs clean, switch the URL to mainnet.
Should You Run Your Own Base Node Instead?
Only if you have a reason to. Base's own docs warn: "Running a node is time consuming, resource expensive, and potentially costly. If you don't already know why you want to run your own node, you probably don't need to." Base also changed node software this year: since the Azul upgrade in May 2026, only base-reth-node and base-consensus follow the chain. A provider handles those client switches, disk growth and upgrades for you.
FAQ
What is the Base public RPC URL?
https://mainnet.base.org for Base mainnet and https://sepolia.base.org for Base Sepolia. Both are rate limited, and Base's docs say they are not suitable for production apps.
What is the Base chain ID? Base mainnet is chain ID 8453 (0x2105). Base Sepolia is 84532 (0x14a34).
Is there a free RPC for Base? Yes. Base's public endpoints are free for testing and low volume use, and most providers have a free plan. Spectrum's free tier includes Base mainnet and Base Sepolia, with 10M credits a month at 25 requests per second.
Does Base have a public WebSocket endpoint? No. Base's docs say "Base does not provide a free public WebSocket RPC endpoint." You need your own node or a provider. Spectrum gives you a WebSocket URL per region.
Why am I getting "request limit reached" or HTTP 429 on mainnet.base.org? You hit the public endpoint's rate limits, which everyone using it shares. Move production traffic to a dedicated endpoint and keep the public one for tests.
Where can I get an archive node for Base? Pick the archive node type when you create a Spectrum endpoint for Base mainnet or Base Sepolia. Archive serves balances and contract state at any past block, and tracing is available on both.
What is the fastest RPC for Base block traces? In our test from September 29 to October 14, 2026, Spectrum's Boosted Nodes returned Base block traces in a median of 126 ms against 409 ms on Alchemy, 3.2× faster, and 399 ms against 2,120 ms in the slowest 5%.
Move Your Base App Today
Create your free account and set up your Base endpoint in minutes.
Start Now: https://dashboard.spectrumnodes.com/auth/signup
Need dedicated capacity for a high traffic app? Book a call: https://calendly.com/spectrumnodes-sales/30min
