Recurring card billing is here. Subscribe once and you're covered every month

Get started
Spectrum Nodes

Can You Use the Base Public RPC in Production?

Featured image for: Can You Use the Base Public RPC in Production?
Share

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.

SettingBase mainnetBase Sepolia
Chain ID (decimal)845384532
Chain ID (hex, as eth_chainId returns it)0x21050x14a34
Currency symbolETHETH
Public HTTPS RPChttps://mainnet.base.orghttps://sepolia.base.org
Public WebSocketNoneNone
Block explorerhttps://basescan.orghttps://sepolia.basescan.org
Spectrum endpointTracing and archive, on our free tierTracing 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:

CallWhat your app uses it forResult on mainnet.base.org
eth_blockNumberLatest blockAnswered
eth_getBalance at block 1,000,000Historical stateAnswered
eth_getLogs, one blockContract events: transfers, swaps, deposits"request limit reached"
debug_traceBlockByNumberFull block trace"rejected due to request filter settings"
debug_traceTransactionReplay one transaction"rejected due to request filter settings"
trace_blockParity style block trace"rejected due to request filter settings"
WebSocket upgradeLive subscriptionsHTTP 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 needmainnet.base.org (our Oct 26 test)Spectrum Nodes on Base
ThroughputShared, rate limitedYour 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 debugRejectedTracing on Base mainnet and Base Sepolia
Historical stateAnswered in our testArchive node type on Base mainnet and Base Sepolia
Live subscriptionsNo public WebSocketWebSocket URL per region
Events pushed to youNoneSpectrum Webhooks, live on Base
Uptime recordShared endpoint, status at status.base.orgOver 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:

MeasureSpectrum's Boosted NodesAlchemyGap
Median, Finland server126 ms409 ms3.2× faster
Slowest 5% (p95), Finland server399 ms2,120 ms5.3× faster
Median, Canada server285 ms620 ms
Answered first94% 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

  1. 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.
  2. Create an endpoint and pick Base, then Mainnet.
  3. Choose the node type. Pruned serves current state. Archive serves balances and contract state at any past block.
  4. Copy the HTTPS URL and the WebSocket URL for the region closest to your servers.
  5. Save them as BASE_RPC_URL and BASE_WSS_URL in 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