Throttling, stale blocks, error rates, load testing, paid capacity and production reliability

Free vs Paid RPC: When a Production App Should Upgrade

The free vs paid RPC decision should not be based on whether a provider still lets your requests through today. A free endpoint can be perfectly suitable for local development, testnets, staging, low traffic dashboards and early product validation. It becomes a production liability when throttling, stale head data, missing archive methods, unavailable WebSockets, burst limits or unpredictable errors begin affecting users. The correct upgrade point is measurable: define the method mix your application actually sends, replay that workload from the region where production runs, increase concurrency beyond normal peak traffic, record latency and errors, and calculate what an RPC failure costs the product. If the free service cannot meet that acceptance threshold with safe headroom, upgrading is an operational requirement rather than a cosmetic purchase.

TL;DR

  • Stay free while the workload is genuinely disposable or low impact. Development, testnet work, internal tooling, low traffic reads and early prototypes can often run comfortably on free RPC access.
  • Upgrade before users become your load test. Sustained throttling, stale head data, missing archive or debug methods, exhausted monthly quotas, unstable WebSockets or insufficient burst capacity are concrete reasons to move.
  • Monthly quota is not enough. A free plan can have millions of monthly requests and still fail a production launch because its RPS ceiling is too low for a short traffic burst.
  • Test the exact production method mix. Measure p50, p95, p99, HTTP 429, 5xx, timeouts, JSON-RPC errors, stale blocks and result mismatches from your deployment region before choosing the paid tier.
Use-case verdict Free RPC is an excellent development resource and a poor place to hide an unmeasured production dependency.

A free authenticated endpoint can support real applications when traffic is small, methods are simple and occasional degraded service has little business consequence. Chainstack's permanent Developer plan is a good example, with 3 million request units per month and a published 25 RPS limit. NOWNodes offers a one-month Start plan with 100,000 requests, while its anonymous public endpoints expose a separate low-throughput route currently capped at 5 RPS. QuickNode provides a one-month trial with 10 million API Credits and 15 RPS.

Once RPC failures can block wallet balances, transaction status, checkout, trading, liquidation, security monitoring or customer-facing data, the question changes. You are no longer asking whether free access exists. You are asking whether the service meets the reliability budget of the product.

Not all free RPC access is the same

The phrase free RPC combines several products that should not be treated as equivalent. An anonymous public endpoint is usually the least controlled option. A provider can operate it for ecosystem access without requiring registration, but many unrelated users share the same gateway and abuse controls. A permanent free account usually gives the developer a private endpoint, API key, measurable quota and account dashboard. A trial can provide production-like features but expire after a fixed period.

This distinction matters during architecture planning. A prototype that depends on an anonymous URL can disappear behind throttling without your application having an account-level usage history. A permanent free plan may be operationally more predictable. A time-limited trial is useful for benchmarking, but it should not be mistaken for zero-cost production infrastructure after the trial ends.

Free access type Typical characteristics Good fit Production concern
Anonymous public endpoint No account, strict rate controls, shared traffic Testing, occasional reads, examples Little capacity isolation or usage control
Permanent free account Private key, monthly quota, defined RPS Prototype, hobby app, staging, low traffic service Quota and throughput ceilings remain
Time-limited trial Temporary production-like plan access Provider evaluation and benchmark Must migrate or pay after expiry
Paid shared RPC Higher capacity, support, broader feature surface Most production applications Still shared infrastructure
Dedicated or isolated node Reserved compute or dedicated infrastructure High-value and specialized workloads Higher cost and more procurement complexity

What current free RPC plans actually provide

Current free access differs significantly across infrastructure providers. NOWNodes' Start plan includes 100,000 requests for one free month and one API key. Its public endpoint service is a separate option that currently advertises 5 requests per second for public networks such as Ethereum, BNB Smart Chain and Bitcoin. That public route is appropriate for low-rate development and basic integrations rather than a burst-heavy consumer application.

Chainstack's Developer plan is permanent rather than a timed trial. It currently includes 3 million request units per month, one node, WebSockets and a 25 RPS ceiling. Standard Regional and Global requests cost one request unit, while archive-node requests consume two request units. Archive deployment itself belongs to higher plan capabilities, so a large free quota does not imply that every historical workflow is available without upgrading.

QuickNode takes the trial approach. Its current free access lasts one month and includes 10 million API Credits with 15 requests per second and no overage. Ethereum and many EVM calls currently consume 20 credits for standard methods, while advanced APIs and large calls can use higher multipliers. Ten million credits therefore do not mean ten million Ethereum RPC calls.

Provider Free model Included usage Published throughput Important limitation
NOWNodes public endpoint Anonymous public access Basic access 5 RPS Designed for testing and smaller applications
NOWNodes Start One-month free plan 100,000 requests Plan-specific shared access No WebSocket or market-data access on Start
Chainstack Developer Permanent free account 3M request units / month 25 RPS One node and free-tier feature boundaries
QuickNode trial One month 10M API Credits 15 RPS No overage and credit weighting applies

Paid RPC should buy something measurable. Depending on the provider, that can include more monthly capacity, much higher RPS, overage rather than hard interruption, WebSockets, archive state, debug and trace methods, more endpoints, more regions, better support, contractual service terms or dedicated resources. Paying only makes sense when one of those capabilities solves a real production constraint.

NOWNodes currently moves from its Start plan into Pro at €20 per month for 1 million requests and three API keys. Higher shared tiers increase quotas substantially, and the paid surface adds features such as WebSockets, access to the broader node catalogue and market-data functionality. Its recent public documentation also exposes archive, Trace and Debug, gRPC and other interfaces for supported chains.

Chainstack Growth currently costs $49 per month and increases capacity to 20 million request units and 250 RPS. Pro costs $199 and raises the included allowance to 80 million request units and 400 RPS, while opening additional infrastructure choices such as dedicated nodes. Chainstack also sells an Unlimited Node add-on from $149 per month for workloads where a fixed RPS tier is easier to budget than per-request consumption.

QuickNode Build currently costs $49 month-to-month, with lower effective pricing under annual billing. Build includes 80 million API Credits, 50 RPS and paid-plan overage. Accelerate increases capacity to 450 million credits and 125 RPS. The practical value of those credits depends on chain and method, so a workload with extensive traces can consume its quota very differently from a dashboard dominated by simple balance reads.

Seven signals that a production app has outgrown free RPC

1. HTTP 429 has become a user-facing event

A 429 response means the gateway is telling you that some usage boundary has been exceeded. The boundary may be RPS, concurrency, a method-specific rule or another rate control. During development, an occasional 429 is useful feedback. In production, repeated 429 responses can turn into loading spinners, failed portfolio refreshes, delayed transaction status and retried traffic that makes the congestion worse.

The upgrade trigger is not one isolated 429. Measure the percentage of requests affected under realistic peak load. If your expected production burst regularly reaches the free tier's ceiling, adding retry logic does not create extra capacity. It only rearranges when the application asks for the same resource.

2. The endpoint falls behind the chain head

An RPC endpoint can return HTTP 200 and still be operationally stale. Wallet balances, liquidation systems and trading applications care about how close the response is to the current canonical head. A backend that is several blocks behind can show a transaction as missing even though it is already included elsewhere.

Measure head freshness explicitly. Query eth_blockNumber or the chain equivalent against your candidate endpoint and compare it with at least two independent references. Do this repeatedly, not once. A stale episode that lasts one sample may simply reflect normal propagation. Persistent lag is different.

3. Your monthly quota is predictable enough to exceed the free allowance

A product that consumes 90,000 requests in the first week should not wait until the final request of a 100,000-request trial to discuss capacity. Project the monthly volume from real traffic and include headroom. If the forecast regularly reaches most of the available quota, the free plan has already completed its job: it proved the workload exists.

Do not solve the problem by hiding requests. Caching repeated balance, metadata and chain-ID calls can reduce waste, but required requests should not be suppressed merely to remain free. Infrastructure optimization and infrastructure underprovisioning are not the same thing.

4. Required methods are unavailable

Free full-node access may be enough until the application needs historical state, transaction traces, broad log scans or another advanced interface. At that point, the upgrade decision can occur with only a handful of daily users. Feature requirements can outgrow the free plan long before request volume does.

This is particularly common in security, accounting and analytics. A transaction receipt tells you whether a transaction succeeded and which logs were emitted. It does not necessarily expose the nested execution path required for an internal-call investigation. If the application needs debug_traceTransaction, archive eth_call or another advanced method, test that exact method against the plan you intend to buy.

5. WebSocket reliability matters

Polling can be acceptable for a prototype. A real-time interface may need new blocks, logs or pending transactions through WebSockets or another streaming service. Free-plan support varies, and merely opening a WebSocket connection does not prove the subscription can survive hours of production operation.

Test disconnects deliberately. Kill the connection, restore it, resubscribe and backfill the missing block interval. A production application should not silently lose events just because a socket reconnected successfully.

6. Support response time has business value

A developer can spend hours determining whether an outage comes from the application, chain, provider gateway or underlying node. Paid support can be economically rational before traffic becomes large if the application itself generates revenue. The relevant calculation is engineer time plus user impact, not requests per month.

If an outage during checkout or transaction submission can cost more than the monthly RPC bill, remaining on unsupported or community-only access needs a deliberate justification. Reliability spending should be compared with the consequence of failure.

7. You need predictable failure isolation

Free shared endpoints are designed to serve many users efficiently. That is reasonable for the price. A revenue-critical trading system, exchange backend or liquidation service can eventually require stronger isolation, dedicated resources or at least two independent shared providers.

This is where the decision moves beyond free versus paid and into dedicated versus shared RPC nodes. A paid shared endpoint may be sufficient for millions of ordinary application calls, while a smaller but latency-sensitive system can justify dedicated infrastructure much earlier.

A practical load-test threshold for upgrading

There is no universal RPC service-level objective for every application. A portfolio viewer and an arbitrage system have completely different tolerance for delay. A useful production acceptance test therefore begins with the application's own reliability budget. The thresholds below are intentionally conservative starting points, not blockchain protocol rules.

Signal Example upgrade threshold Why it matters
Peak capacity Expected peak exceeds 70% of published RPS repeatedly Leaves little burst headroom
Monthly quota Projected normal month exceeds 80% of free allowance Growth or retries can exhaust quota
Infrastructure failure rate Timeout + 429 + 5xx exceeds 0.5% under expected peak plus 30% load User-visible reliability is already degrading
Stale head Endpoint trails independent median by 2+ blocks for 3 consecutive samples Successful responses can still be wrong for current-state UX
Tail latency p95 exceeds application latency budget in repeated runs Average latency can hide slow user experiences
Feature gap Required archive, trace, WebSocket or chain unavailable No amount of retrying fixes missing capability
Business impact One realistic RPC incident costs more than one month of paid access Free infrastructure has become economically expensive

The most important part is the extra 30% load in the error-rate test. If your current peak is 20 requests per second, testing only 20 RPS proves that today's traffic fits. Testing 26 RPS starts answering whether the next user burst fits. Production capacity should be purchased before normal traffic sits directly against a documented ceiling.

The RPC upgrade decision in one visual

Free to paid RPC production upgrade decision A visual showing how quota, throttling, stale blocks, feature gaps and business impact determine when a production application should upgrade RPC infrastructure. Free RPC stops being free when reliability starts costing the product Measure the production workload before choosing the next infrastructure tier. FREE FITS Low traffic Simple RPC methods Failure has low consequence Large capacity headroom MEASURE NOW Quota above 60 to 80% RPS bursts near limit Occasional 429 / timeout Users depend on current chain state UPGRADE Repeated throttling Stale blocks Required feature missing RPC failure has business cost CONTROLLED LOAD TEST Same region · same method corpus · same historical blocks · same concurrency Measure p50 / p95 / p99 · 429 · 5xx · timeout · stale head · JSON-RPC errors Repeat at expected peak and expected peak plus 30% Test free and paid endpoint under the same conditions BUY CAPACITY ONLY WHEN IT SOLVES THE MEASURED FAILURE More quota · higher RPS · archive · traces · WebSockets · support · isolation · regional coverage
Free

Keep it

Traffic is small, methods are supported and failures have little consequence.

70%

Watch headroom

Repeated peaks close to the rate limit mean normal growth can become throttling.

429

Measure throttling

Track the percentage of user requests affected rather than merely adding retries.

Head

Detect stale data

A successful HTTP response can still trail the canonical chain state.

30%

Test future load

Benchmark expected peak plus headroom instead of validating only today's traffic.

$

Price failure

If one realistic incident costs more than paid RPC, free access is not economically free.

A reproducible free vs paid RPC benchmark

Performance claims should be produced under controlled conditions. Testing a free endpoint from a home laptop and a paid endpoint from a cloud server in another country does not isolate the plan difference. Geography, network path, DNS, client connection reuse and request mix can all move the result.

The methodology below is designed for Ethereum mainnet because its standard JSON-RPC surface is widely supported. It can be adapted to Base, Arbitrum, BNB Chain or another EVM network by changing the fixture. No authenticated side-by-side performance values are invented in this article. The method is published so a buyer can produce evidence using the exact free and paid endpoints under consideration.

Test variable Declared fixture
Chain Ethereum mainnet
Runner region AWS eu-central-1, Frankfurt
Historical range Blocks 22,000,000 to 22,009,999
Measured requests 12,000 per endpoint
Warm-up 250 calls excluded
Concurrency stages 1, 5, 10, 20 and plan-aware peak test
Timeout 15 seconds per request
Retries Disabled in primary measurement
Connection behavior HTTP keep-alive enabled
Head sampling Every 5 seconds during run
Metrics p50, p95, p99, timeout %, 429 %, 5xx %, JSON-RPC errors, stale-head samples

The recorded method mix

Use a corpus that resembles a normal wallet or application backend rather than benchmarking only eth_blockNumber. A useful 12,000-request fixture contains 3,000 block reads, 2,500 transaction receipts, 2,000 balance calls, 1,500 contract reads, 1,500 log requests, 1,000 transaction lookups and 500 historical balance calls. Keep the exact block numbers, addresses, calldata and transaction hashes fixed for every endpoint.

Method Samples Share Primary stress
eth_getBlockByNumber 3,000 25.0% Block retrieval
eth_getTransactionReceipt 2,500 20.8% Transaction status
eth_getBalance 2,000 16.7% Account state
eth_call 1,500 12.5% Contract execution
eth_getLogs 1,500 12.5% Indexed historical data
eth_getTransactionByHash 1,000 8.3% Transaction retrieval
Historical eth_getBalance 500 4.2% Historical-state capability

If your product relies on traces, add them as a separate test class instead of hiding them inside ordinary RPC. Advanced methods can have different availability and pricing. The benchmark should reveal whether paid access solves a capability gap, not merely whether the paid endpoint returns an easy balance call a few milliseconds faster.

Measure throttling correctly

Throttling is easiest to detect when the benchmark increases load in stages. Begin at one request at a time so you establish baseline latency. Move to concurrency 5 and 10. Then approach the free plan's documented ceiling. Finally, run a short burst above expected production peak to see how the gateway fails.

Record 429 responses separately from 5xx and timeouts. They communicate different operational problems. A 429 often means the endpoint is healthy but your request pattern exceeds a policy. A 500 or 503 can indicate gateway or upstream-node trouble. A timeout can come from congestion, method cost or network path. Combining them into a single “failed” count makes remediation harder.

Paid access is justified when the higher tier materially reduces the bottleneck you observed. If a free endpoint fails at 15 RPS and the paid tier raises the allowance to 50 or 250 RPS, the upgrade solves a measurable constraint. If both tiers show the same slow eth_getLogs behavior because the query itself is too broad, rewriting the query may be more useful than spending more.

How to detect stale blocks

Freshness is different from latency. An endpoint can respond in 70 milliseconds with a block number that is old. A second endpoint can respond in 150 milliseconds with the latest canonical head. For user interfaces that track deposits or transaction confirmations, the second endpoint may be operationally better.

During the benchmark, sample the latest block from the tested endpoint and at least two independent references every five seconds. Use the median reference head to reduce the chance that one comparison endpoint is itself lagging. Record how often the tested service trails by one block, two blocks or more, and how long each lag episode lasts.

Do not treat one transient block difference as failure. Distributed infrastructure observes new blocks through different network paths. The important signal is repeated or persistent lag that changes application behavior. If your product needs a stricter definition than two blocks, set the threshold before the test rather than changing it after seeing the results.

p95 and p99 matter more than a pretty average

Average RPC latency can be misleading because a handful of slow requests are diluted by thousands of fast ones. Users notice tail latency when the delayed request happens to be their wallet balance, transaction submission or checkout confirmation. Record p50 for the ordinary request, p95 for the slower edge of normal operation and p99 for the tail.

TokenToolHub's RPC Latency Explained guide covers why geography, method type, node synchronization, caching and network path all influence the result. A provider cannot be described as universally fast from one region or one JSON-RPC method.

A small load-test harness

The following example is intentionally simple. It repeatedly sends a fixed JSON-RPC request corpus with a chosen concurrency and records HTTP status, JSON-RPC errors and elapsed time. A production benchmark should also export structured results to a file, compute percentiles offline and compare returned block data for consistency.

const endpoint = process.env.RPC_URL;
const apiKey = process.env.RPC_KEY || "";
const concurrency = 10;
const total = 1000;

const request = {
  jsonrpc: "2.0",
  id: 1,
  method: "eth_getBlockByNumber",
  params: ["0x14fb180", false]
};

async function oneCall(i) {
  const started = performance.now();

  try {
    const response = await fetch(endpoint, {
      method: "POST",
      headers: {
        "content-type": "application/json",
        ...(apiKey ? { "api-key": apiKey } : {})
      },
      body: JSON.stringify({ ...request, id: i }),
      signal: AbortSignal.timeout(15000)
    });

    const body = await response.json().catch(() => null);

    return {
      ms: performance.now() - started,
      http: response.status,
      rpcError: body?.error?.code ?? null,
      ok: response.ok && !body?.error
    };
  } catch (error) {
    return {
      ms: performance.now() - started,
      http: 0,
      rpcError: null,
      ok: false
    };
  }
}

async function run() {
  const results = [];
  let next = 0;

  async function worker() {
    while (next < total) {
      const i = next++;
      results.push(await oneCall(i));
    }
  }

  await Promise.all(
    Array.from({ length: concurrency }, worker)
  );

  console.log(JSON.stringify(results));
}

run();

Do not use a synthetic script to attack a public endpoint. Respect the documented rate limit and provider terms. The objective is acceptance testing, not discovering how much anonymous shared infrastructure can be exhausted before the gateway intervenes.

Price the reliability failure before pricing the plan

The strongest argument for paid RPC is often not higher request volume. It is avoided failure cost. Imagine a crypto checkout product processing $25,000 of daily payment volume. If stale status or throttling causes only 0.5% of payments to be abandoned, the resulting $125 of affected daily volume can exceed an entry-level paid RPC bill quickly.

A trading product can face a different cost. A five-second delay may cause a quote to become unusable. A liquidation monitor can miss an actionable state transition. A wallet may receive support tickets because deposits appear absent. The operational cost includes customer support, engineering time and reputational damage in addition to direct lost revenue.

RPC reliability cost = lost conversions + failed operations + engineer time + support time + user trust impact

This formula does not mean every small product should pay from day one. It means the upgrade decision should be compared with the cost of staying free. A permanent free tier can remain entirely rational when the consequence of a short outage is a delayed internal dashboard refresh.

Workload and cost examples

Different pricing systems make raw request comparisons imperfect, but they still reveal where free capacity stops fitting. Consider an Ethereum application making ordinary standard RPC calls. Chainstack's permanent Developer plan provides 3 million request units, with ordinary Regional and Global requests generally costing one RU. A 2 million-request monthly workload can therefore fit comfortably if peak traffic also remains below 25 RPS.

NOWNodes Start provides 100,000 requests during the free month. A production workload averaging only 5,000 requests per day would reach about 150,000 in a 30-day month, already beyond that allowance. NOWNodes Pro currently starts at €20 for 1 million requests, creating a relatively small financial step once the free evaluation has demonstrated the integration.

QuickNode's free trial contains 10 million API Credits. Standard Ethereum calls generally consume 20 credits, so a workload consisting exclusively of those calls can use roughly 500,000 requests before exhausting the credit pool. The paid Build plan includes 80 million credits and raises the throughput limit from 15 to 50 RPS.

Workload Free plan observation Likely next step
50K ordinary reads / month Fits many free options Stay free if reliability is acceptable
500K Ethereum standard calls / month Can fit Chainstack Developer; close to QuickNode trial standard-call capacity Measure RPS and expiry risk
2M ordinary calls / month Fits Chainstack Developer quota but not every free provider Load-test peak traffic before production reliance
5M ordinary calls / month Beyond common permanent free quotas Paid shared access is the normal path
Low volume + archive queries Request count may be tiny but feature can be gated Upgrade for capability, not volume
Low volume + revenue-critical trading Free quota may fit numerically Pay for reliability, support or isolated capacity if justified

Three practical upgrade paths

NOWNodes

Pro currently starts at €20 / month
Strong fit: teams that want broad multi-chain coverage, direct request accounting and a low financial step from evaluation into paid shared access.

NOWNodes is useful when a team wants standard RPC plus access to additional interfaces such as WebSockets, archive nodes, Trace and Debug, Blockbook, gRPC and other supported services without moving immediately into a high-priced tier. Its current Start plan provides 100,000 requests for one month, while Pro increases the allowance to one million requests and three API keys.

For a production migration, test the exact chain and method. The breadth of the catalogue is useful only when the specific interface you need behaves correctly under your traffic. Projects with much larger or more isolated requirements can move toward higher shared tiers or dedicated nodes rather than changing providers solely because the first quota was exceeded.

Chainstack

Developer free · Growth $49 / month
Strong fit: applications that want a permanent free starting tier and a large jump in RPS when production traffic arrives.

Chainstack Developer currently provides 3 million request units per month and 25 RPS with no time limit. Growth increases that to 20 million request units and 250 RPS for $49 per month. That tenfold RPS increase can matter more than the monthly quota for burst-heavy consumer applications.

Archive access, additional nodes and infrastructure options expand at paid tiers. Chainstack also offers Unlimited Node pricing for sustained traffic where fixed RPS capacity is preferable to metered request volume.

QuickNode

Build $49 / month
Strong fit: teams that need RPC plus a broader managed data platform and can model method-weighted API Credits.

QuickNode's current one-month trial provides 10 million API Credits and 15 RPS. Build raises capacity to 80 million credits and 50 RPS, with additional credits available rather than the trial simply continuing for free. The cost model depends on the chain and method, so convert your real corpus into credits before purchasing.

The platform becomes especially relevant when the product also needs Streams, Webhooks or other managed blockchain-data services. If those features remove polling and ingestion infrastructure, their engineering value should be included in the comparison rather than viewing the $49 subscription as RPC alone.

Public endpoints are not the same as free private endpoints

An anonymous public RPC URL is useful because it lowers the barrier to trying a chain. It is also exposed to traffic from every other user who knows the URL. An authenticated free endpoint can still use shared infrastructure, but the provider can meter your account individually, expose usage statistics and apply plan-specific limits.

For production, prefer private authenticated endpoints even before paying if the provider offers them. Do not embed API credentials directly in browser code when the key grants valuable capacity or privileged methods. A public frontend may need a protected backend, restricted endpoint settings or another mechanism that prevents a copied key from consuming the entire quota.

Free plans often fail on capability before capacity

Historical-state and execution-analysis workloads show why request volume is a weak upgrade metric. A tax application may send only a few thousand requests per day but require archive state. A transaction security tool may need traces for a small percentage of transactions. A protocol monitoring system may need dense historical log retrieval.

Those workloads should be tested directly. Ask whether the free plan exposes the endpoint, whether the method is supported on your chain, whether historical state exists at the required block and whether the provider imposes a practical block-range or timeout restriction. Paid access is justified when it unlocks a required method even if monthly traffic remains tiny.

For an example of how transaction investigation differs from raw endpoint benchmarking, use TokenToolHub's Transaction Decoder on a supported public transaction. It can help you understand the transaction chosen as an acceptance fixture. It should not be used as evidence that one RPC provider is faster than another.

eth_getLogs is where simple request counting can mislead

An application that indexes events can generate disproportionate load through eth_getLogs. A narrow filter across fifty blocks is very different from requesting broad logs across thousands of blocks. Some gateways limit block ranges or response sizes because an unrestricted query can require extensive work from the node.

Build an indexer that checkpoints its block range and can split queries into smaller windows. Then test those exact windows on free and paid endpoints. If both plans struggle with an excessively broad query, the right answer is probably application redesign. If the paid tier handles your normal window reliably and the free tier throttles at realistic concurrency, the upgrade has a measurable basis.

WebSockets need recovery, not just connectivity

A provider can advertise WebSockets and still leave application-level reliability in your hands. Connections close, mobile networks change, load balancers rotate and chains reorganize. The client should remember the last processed block, reconnect, resubscribe and query the missing interval before trusting live data again.

Chainstack includes WebSockets in its current Developer plan, which makes it possible to test that recovery path before paying. NOWNodes Start does not currently list WebSocket access, while Pro and higher shared plans do. The value of upgrading can therefore be immediate when live subscriptions are a product requirement rather than a traffic-volume issue.

Paid RPC does not remove the need for redundancy

Moving from free to paid can improve capacity and support, but it does not make a single external dependency impossible to fail. A production application should decide which RPC functions deserve a second provider. Revenue-critical reads, transaction tracking and essential service-health checks are common candidates.

Do not route every request randomly across providers and assume diversity has been achieved. Different endpoints can return slightly different latest-state timing, clients can serialize trace results differently and feature support can diverge. Use explicit primary and fallback policies, test both providers, and know which methods are safe to retry elsewhere.

TokenToolHub's Multi-Chain Node Hosting comparison is useful when you need to shortlist a second infrastructure provider rather than merely increase the quota at the current one.

Fail over infrastructure errors, not blockchain errors

A fallback provider should not hide a genuine contract revert or malformed request. If eth_call fails because the simulated contract operation reverts, sending the same operation to three providers wastes capacity and makes observability confusing. If the primary endpoint times out, returns 429 under a documented retry policy or produces a provider-level 5xx, a second endpoint is more appropriate.

Transaction submission deserves extra care. A raw signed transaction has deterministic content, so rebroadcast can be safe when handled correctly, but the application should track its transaction hash and distinguish “provider response was lost” from “transaction was never accepted.” Blind retries create poor operational evidence even when they do not create a second spend.

Total cost of free and paid RPC

Free RPC has a zero subscription line but can still have engineering cost. Developers may implement aggressive caching, complicated retry rules or multiple public endpoints simply to avoid a small paid bill. Those techniques can be valuable when they improve architecture, but they can also become labor spent defending a budget constraint that no longer makes economic sense.

Paid RPC has the opposite risk. A team can upgrade prematurely and purchase capacity that the product does not need. The solution is the same in both directions: measure. Know the request count, RPS, concurrency, method mix, data freshness requirements and failure consequence. Then buy the smallest infrastructure tier that meets the acceptance test with reasonable growth headroom.

Include developer time in the calculation

If an engineer earning $40 per hour spends six hours each month investigating free-endpoint throttling, that is $240 of labor before considering user impact. A $20 or $49 paid plan can be cheaper even if the application technically could remain under a free quota. The reverse is also true: a static internal dashboard should not pay $200 per month merely because “production should always be paid.”

Include overage and step changes

Some providers let paid plans exceed the included quota through metered overage. Others require moving to a higher tier for a feature or capacity level. Model the next step before traffic arrives. An architecture that is inexpensive at 900,000 requests but jumps sharply at 1.1 million should be budgeted differently from one with smooth overage.

Migration and exit constraints

Standard JSON-RPC is one of the easiest infrastructure layers to keep portable. If application code uses normal methods through libraries such as ethers, viem or web3.py, changing providers can often be limited to endpoint URL, authentication and a few method-specific differences. Preserve that portability by keeping provider configuration outside business logic.

Lock-in increases when the application adopts proprietary token APIs, Streams, specialized webhooks, enhanced NFT methods, provider-specific traces or indexing products. Those features can be worth using because they replace real engineering work. The correct design is not to reject them automatically, but to isolate them behind an internal interface and document what replacing them would require.

Keep processing checkpoints and critical data in systems you control. If an indexer knows the last successfully processed block independently of the provider dashboard, switching endpoints becomes much easier. If every cursor, filter and historical result exists only inside a vendor product, the exit cost increases.

When the alternative is running your own node

Upgrading RPC does not have to mean buying a larger shared plan. A team can self-host a node when sovereignty, client configuration or direct access matters enough to justify the operational burden. That burden includes storage growth, client upgrades, synchronization, monitoring, security, backup infrastructure and responding to incidents.

For most application teams, paying a provider remains cheaper than turning blockchain-node operations into an internal function. Self-hosting becomes more attractive when infrastructure itself is strategically important, when custom client configuration is required, or when traffic volume makes provider economics less attractive than maintaining dedicated hardware.

A hybrid architecture can also work. Use your own primary node and retain a paid provider as fallback, or use managed RPC for ordinary chains while self-hosting the one network where specialized performance matters. The infrastructure decision should follow the workload rather than an ideological preference for managed or self-hosted systems.

When you should not upgrade yet

Remain on free access when

  • The application is still local development, testnet or an internal prototype.
  • Expected traffic remains far below both monthly quota and peak RPS limits.
  • Occasional delays do not affect money, customers or operational decisions.
  • All required methods are available and the free endpoint passes the load test with healthy headroom.
  • You have not yet optimized obvious repeated requests such as static chain metadata.
  • The paid tier does not solve the actual failure observed in testing.

When you should upgrade before launch

Move beyond free access when

  • Expected peak traffic repeatedly approaches the free RPS ceiling.
  • 429, timeout or provider 5xx errors exceed your defined production budget.
  • The endpoint falls persistently behind the canonical chain head.
  • Archive, Trace, Debug, WebSocket or another required feature is not available.
  • The free plan expires and the application will remain live.
  • Monthly volume is predictably near the free quota.
  • A realistic RPC outage can cost more than the paid plan.
  • You need formal support, stronger service commitments or isolated resources.
  • Your application's transaction submission or monitoring is business-critical.

The prelaunch RPC acceptance test

Run this process before the application receives real traffic. Start with a full day of representative staging traffic if possible. Export the method distribution and identify peak five-minute RPS, not merely daily averages. Build a fixed benchmark corpus from those methods and replay it against the candidate endpoints.

Run each endpoint from the production region at baseline concurrency, expected peak and expected peak plus 30%. Measure tail latency and every failure class. Sample the chain head independently. Disconnect WebSockets. Test quota alerts. Exercise archive or trace methods if the product needs them. Only then decide whether the free plan is still adequate.

Acceptance item Required evidence
Method coverage Every critical method succeeds on exact chain and plan
Normal-load latency p50 / p95 / p99 inside application budget
Peak-load reliability Failure rate remains inside defined SLO
Headroom test Expected peak + 30% remains acceptable
Freshness No persistent stale-head condition
WebSocket recovery Reconnect and backfill tested
Quota monitoring Usage alerts configured before exhaustion
Fallback Critical reads tested against secondary endpoint
Cost projection Normal month + high month + overage modeled

RPC infrastructure and contract research solve different problems

A reliable RPC provider gives your application access to blockchain state. It does not determine whether the token or contract your application is reading is safe. Infrastructure reliability and contract intelligence should remain separate layers.

If a production integration includes unfamiliar EVM token contracts, TokenToolHub's Token Safety Checker can provide contract-side context on supported networks. Use that for due diligence on the contract. Use the RPC benchmark for infrastructure. Mixing the two questions produces weak evidence for both.

Conclusion: upgrade when free RPC fails the production requirement, not when marketing tells you to

The free vs paid RPC decision becomes much easier when free access is treated as a measurable infrastructure tier instead of a temporary embarrassment. A well-designed permanent free endpoint can serve development, testnets, staging and small applications for a long time. There is no operational prize for paying early when the free service already satisfies the workload.

There is also no prize for remaining free after the infrastructure has become a user-facing bottleneck. Once a wallet displays stale balances, a transaction page misses confirmations or a product starts returning 429 errors during normal traffic, the subscription price is no longer the important number. The cost of degraded reliability is.

Start with quota, but do not stop there. NOWNodes Start currently gives a one-month allowance of 100,000 requests, Chainstack Developer gives 3 million request units per month permanently, and QuickNode's one-month trial provides 10 million API Credits. Those figures describe monthly consumption. They do not tell you whether a traffic burst fits.

Throughput can force the upgrade earlier. NOWNodes' anonymous public endpoints currently operate around a 5 RPS access limit. Chainstack Developer publishes 25 RPS. QuickNode's trial publishes 15 RPS. A consumer application can exceed those rates during a launch even if the total monthly request count would remain far below the allowance.

Feature requirements can force the decision even earlier. A tax or analytics service may need archive state with only a few users. A transaction investigation product may need Trace or Debug. A monitoring service may need WebSockets or streaming. If the free plan does not expose the method, retries and caching cannot manufacture the missing capability.

Define the acceptance test before evaluating providers. For a representative Ethereum workload, use the same deployment region, block range, request corpus and concurrency. Record p50, p95 and p99 rather than average latency alone. Separate 429, 5xx, timeout and JSON-RPC errors. Sample the latest block continuously so a fast but stale endpoint does not appear healthy.

Then test growth rather than only the present. If expected peak traffic is 20 RPS, run the endpoint near 26 RPS as well. If it remains stable with acceptable tail latency and errors, you have evidence of headroom. If the free gateway begins throttling immediately above today's traffic, it is telling you that normal growth will become the next incident.

Paid access should solve that measured problem. NOWNodes is a practical path when straightforward request accounting and broad multi-chain access matter, with Pro currently starting at €20 for one million requests. NOWNodes is therefore worth testing when the application has outgrown public or Start access but does not yet need expensive dedicated infrastructure.

Chainstack offers a different progression. Its permanent Developer plan provides substantial free capacity, while Growth raises throughput from 25 RPS to 250 RPS and increases the monthly allowance to 20 million request units for $49. That makes the upgrade easy to justify for a product whose problem is burst capacity rather than feature discovery.

QuickNode is a strong fit when the product needs a broader managed blockchain-data platform in addition to RPC. Build raises the trial's RPS and API Credit capacity, while Streams and other services can replace internal polling infrastructure. The credit model needs method-aware budgeting, particularly when advanced APIs are used.

Do not assume that paying one provider removes the need for resilience. A revenue-critical application should still decide whether key reads or transaction tracking deserve an independent fallback. Standard JSON-RPC makes this relatively easy when the application keeps authentication and provider-specific logic behind a small adapter.

The final cost model should include engineering time. If a developer spends hours each month debugging free-tier throttling, the zero-dollar invoice is misleading. If a static internal dashboard runs comfortably inside a permanent free tier, a paid subscription can be equally wasteful. Both errors come from buying infrastructure by intuition rather than evidence.

Before launch, export the real method mix, estimate normal and peak traffic, run the controlled load test, measure freshness, test WebSocket recovery if applicable, model the paid tier and document the fallback path. At that point, the upgrade decision becomes straightforward. Stay free while free access meets the service objective with headroom. Pay when the application needs more capacity, capability or reliability than the free tier can demonstrate.

Upgrade point = required workload + reliability target + growth headroom exceeds what the free RPC can demonstrate safely

Test the workload before choosing the plan

Use your actual methods and expected peak concurrency. If free access passes with comfortable headroom, keep it. If throttling, stale state or missing methods appear under realistic load, move to the smallest paid tier that fixes the measured problem.

FAQs

Can a production app use free RPC?

Yes. A small production application can use free RPC when its request volume, peak RPS, method requirements and reliability target fit comfortably inside the plan. The decision should be based on testing rather than a rule that every production application must pay.

When should I upgrade from free RPC?

Upgrade when the free service begins failing a real requirement. Common signals include repeated 429 responses, persistent stale blocks, monthly quota exhaustion, inadequate RPS headroom, missing archive or trace methods, unreliable WebSockets or business impact from RPC incidents.

Is a public RPC endpoint safe for production?

Public endpoints are useful for development and occasional low-rate access, but they usually provide less account-level capacity control than private authenticated endpoints. Production systems should measure their rate limits and reliability and avoid depending on anonymous infrastructure without a fallback plan.

How much free RPC does Chainstack provide?

Chainstack's current Developer plan provides 3 million request units per month, one node and up to 25 requests per second. The plan is permanent rather than a one-month trial.

How much free RPC does NOWNodes provide?

NOWNodes currently provides a Start plan with 100,000 requests for one month. It also operates public endpoints for supported chains with a current 5 RPS limit for basic public access.

How much free RPC does QuickNode provide?

QuickNode currently provides a one-month trial with 10 million API Credits and 15 requests per second. API Credits are method and chain dependent, so 10 million credits are not equal to 10 million Ethereum calls.

What RPC error rate is acceptable for production?

There is no universal value. Define an application-specific service objective and separate infrastructure failures from genuine blockchain errors. As a practical starting test, a combined timeout, 429 and provider 5xx rate above 0.5% under expected peak plus 30% load deserves investigation or additional capacity.

How do I know if an RPC endpoint is stale?

Sample the latest block repeatedly and compare it with at least two independent references. One temporary block difference can be normal. Persistent lag of multiple blocks can affect transaction tracking, balances, trading and other current-state workflows.

Should I pay for RPC just to get lower latency?

Only when lower or more consistent latency matters to the application and the paid endpoint demonstrates an improvement under a controlled benchmark. Geographic location, method type and caching can influence latency more than the free or paid label by itself.

Do I need two RPC providers in production?

Not every application does, but a second provider can reduce single-provider dependency for critical reads and transaction monitoring. Test method compatibility and error handling before relying on the fallback during an incident.

Is dedicated RPC necessary for production?

No. Paid shared RPC can support substantial production traffic. Dedicated infrastructure becomes useful when the workload needs stronger resource isolation, custom configurations, predictable high throughput or another requirement that shared endpoints do not meet.

What should I benchmark before paying for RPC?

Benchmark your actual method mix from the production region at normal load, expected peak and expected peak plus headroom. Record p50, p95, p99, 429, 5xx, timeouts, JSON-RPC errors, head freshness and any required archive, WebSocket or Trace behavior.

References and primary documentation


RPC pricing, quotas, request weights, RPS limits, chain coverage and feature availability can change. Verify the current provider documentation before budgeting or launching production traffic. Benchmark thresholds in this guide are operational starting points rather than universal service-level requirements. No fabricated side-by-side latency, stale-block or failure-rate measurements are presented. Test the exact plan, chain, methods and deployment region your application will use.

TH

Add TokenToolHub shortcut

Keep scanners, research tools, guides, and the community one tap away on this device.

On iPhone, open TokenToolHub in Safari, tap the Share icon, then choose Add to Home Screen.