Logo
New RPC users get 35% off their first monthView the offer
RPC Assistant

How should developers evaluate leading Solana RPC providers?

Summary

This article explains how to evaluate leading Solana RPC providers for production workloads, covering the criteria that matter most: throughput, archive data access, WebSocket support, failover, and operational visibility. It also shows how OnFinality's Solana RPC API and dedicated nodes fit into a multi-provider setup, with practical configuration examples and a decision framework.

Provider evaluation matrix

When teams search for leading Solana RPC providers, they usually need to make a concrete decision: which endpoint (or set of endpoints) should sit behind a production app, a trading bot, an indexer, or a wallet? The answer depends less on brand names and more on how each provider handles the specific Solana workloads you run.

Use the matrix below as a starting point. It maps common Solana workloads to the provider characteristics that matter most, so you can shortlist providers before you benchmark anything.

WorkloadWhat to prioritizeWhy it matters on Solana
Wallet or consumer appReliable shared RPC, WebSocket support, sane rate limitsUsers notice dropped confirmations and stale account data immediately
Trading bot / market makerLow-latency sendTransaction, dedicated capacity, priority fee visibilitySlot timing is tight and shared endpoints can add unpredictable queueing
Indexer / analyticsArchive access, getProgramAccounts, large getSignaturesForAddress scansHistorical state and wide account scans are heavy and often rate-limited
NFT mint or dropBurst capacity, WebSocket subscriptions, failoverTraffic spikes are short but intense, and a single endpoint can saturate
Bridge or oracleDeterministic finality checks, redundant providers, monitoringCorrectness depends on consistent view of confirmed slots

OnFinality provides a Solana RPC API that covers shared and dedicated deployments, with HTTP and WebSocket transports. For teams that need isolated capacity, dedicated nodes remove noisy-neighbor effects that shared pools can introduce.

What "leading" actually means for Solana RPC

Solana is not an EVM chain, and that changes what a good RPC provider looks like. A few Solana-specific realities shape provider selection:

  • Slot and block production are fast. Providers must keep up with continuous block production, and lagging nodes fall behind quickly.
  • Account and program queries are expensive. Calls like getProgramAccounts and getSignaturesForAddress can return large payloads and are frequently rate-limited or disabled on shared endpoints.
  • WebSocket subscriptions are common. accountSubscribe, logsSubscribe, and slotSubscribe are used heavily by wallets, bots, and dashboards.
  • Transaction sending is competitive. sendTransaction behavior, priority fee handling, and retry logic differ between providers.
  • Archive depth varies. Some providers only serve recent slots; others keep deeper history for indexers and analytics.

A provider that looks strong on a generic RPC comparison page may still be a poor fit if it throttles getProgramAccounts or lacks WebSocket support. That is why workload fit matters more than a single headline number.

Chain settings and endpoint reference

Before comparing providers, confirm the network settings you will configure in your client. For Solana mainnet, the relevant values are:

SettingValue
Chain nameSolana Mainnet
Native currencySOL (9 decimals)
HTTP RPC (OnFinality public)https://solana.api.onfinality.io/public
WebSocket RPC (OnFinality public)wss://solana.api.onfinality.io/public-ws
Block explorerhttps://explorer.solana.com

For development and testing, use Solana Devnet so you are not spending real SOL or competing for mainnet capacity. A minimal JSON-RPC health check looks like this:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getHealth"
  }'

A healthy node returns {"jsonrpc":"2.0","result":"ok","id":1}. If you see an error or a timeout, that endpoint is not ready for production traffic.

How to compare providers without guessing

The fastest way to compare leading Solana RPC providers is to run the same small set of probes against each candidate. Do not rely on marketing pages; measure the calls your app actually makes.

1. Measure the methods you depend on. For most apps that means getLatestBlockhash, getAccountInfo, sendTransaction, and at least one subscription. A provider that is fast on getSlot but slow on getProgramAccounts will disappoint an indexer.

2. Test under realistic concurrency. Run your probe at the request rate your production app generates, not one request at a time. Shared endpoints often behave well at low load and degrade under bursts.

3. Check WebSocket stability. Open a subscription and let it run for an hour. Count disconnects and missed notifications. Wallets and bots depend on this staying up.

4. Confirm archive depth. If you need historical data, ask explicitly how far back the provider serves and whether archive access is included or billed separately.

5. Verify failover behavior. Point your client at two providers and confirm your code actually switches when the primary fails. A second endpoint you never exercise is not a failover plan.

A simple Node.js probe using @solana/web3.js looks like this:

import { Connection, PublicKey } from "@solana/web3.js";

const endpoints = [
  "https://solana.api.onfinality.io/public",
  // add your other candidate endpoints here
];

for (const url of endpoints) {
  const connection = new Connection(url, "confirmed");
  const start = Date.now();
  try {
    const slot = await connection.getSlot();
    const blockhash = await connection.getLatestBlockhash();
    console.log(url, "slot", slot, "ms", Date.now() - start, "blockhash", blockhash.blockhash);
  } catch (err) {
    console.error(url, "failed:", err.message);
  }
}

Run this on a schedule and log the results. Over a few days you will have a clearer picture than any static comparison table can give you.

Shared RPC versus dedicated Solana nodes

Most teams start on shared RPC and move to dedicated capacity when a specific symptom appears. The table below maps symptoms to the likely fix.

SymptomLikely causeWhat to try
Intermittent 429 responsesShared pool rate limitsRaise plan limits or move hot paths to dedicated nodes
getProgramAccounts times outMethod throttled on shared endpointsDedicated node or a provider that allows the method
WebSocket drops during peakShared subscription capacityDedicated WebSocket endpoint
Inconsistent sendTransaction resultsQueueing and retry differencesDedicated node with predictable send path
Historical queries failNo archive accessProvider with archive support

OnFinality's dedicated nodes are aimed at teams that have hit one of these symptoms and need isolated capacity. For teams still validating an idea, the shared Solana RPC API is usually the right starting point.

A practical failover pattern

Failover on Solana should be explicit in your client code. A common pattern is a primary endpoint with one or two backups, plus a health check that runs before you send critical transactions.

const providers = [
  "https://solana.api.onfinality.io/public",
  "https://your-backup-endpoint.example.com",
];

async function withFailover(fn) {
  for (const url of providers) {
    const connection = new Connection(url, "confirmed");
    try {
      return await fn(connection);
    } catch (err) {
      console.warn("provider failed, trying next:", url, err.message);
    }
  }
  throw new Error("all Solana RPC providers failed");
}

await withFailover((connection) =>
  connection.sendRawTransaction(signedTx.serialize())
);

Keep the failover list short and tested. Rotating through five endpoints you have never exercised adds latency without adding reliability.

Operational checklist before you commit

Before you sign a contract or route production traffic to any provider, confirm the following:

  • The methods your app calls are explicitly supported, including any getProgramAccounts or archive queries.
  • WebSocket subscriptions are included if your app uses them.
  • Rate limits and burst behavior are documented, not inferred.
  • You have at least one independent backup provider configured and tested.
  • You log latency, error rates, and slot lag per endpoint so you can see degradation before users do.
  • You know how to contact support during an incident.

If you are still comparing providers across chains, the How to choose an RPC provider article covers the general framework. For Solana-specific capacity and pricing, see RPC pricing and the full list of supported RPC networks.

Key Takeaways

  • "Leading" Solana RPC providers are the ones that fit your workload, not the ones with the loudest marketing.
  • Solana-specific methods like getProgramAccounts, sendTransaction, and WebSocket subscriptions are where providers differ most.
  • Test candidates with your real methods, at realistic concurrency, over several days.
  • Shared RPC is fine for many apps; dedicated nodes help when you hit rate limits, throttled methods, or unstable subscriptions.
  • Always configure and test a failover endpoint before you need it.
  • OnFinality offers a Solana RPC API and dedicated nodes as part of a broader network portfolio.

Frequently Asked Questions

What is the difference between shared and dedicated Solana RPC? Shared RPC pools requests across many users and is cheaper to start with. Dedicated nodes give your workload isolated capacity, which helps when you hit rate limits or need methods that shared endpoints throttle.

Do I need an archive Solana node? Only if you query historical slots, transactions, or account state beyond the recent window. Indexers and analytics pipelines usually need archive access; simple wallets often do not.

Is WebSocket support important on Solana? Yes, if your app uses subscriptions like accountSubscribe or logsSubscribe. Wallets, bots, and dashboards rely on these, and WebSocket stability varies between providers.

How many RPC providers should I use? Two is usually enough: a primary and a tested backup. More than that adds complexity without proportional reliability gains.

Can I start on a public endpoint? Public endpoints are useful for development and light testing. For production traffic, move to a managed or dedicated endpoint with documented limits and support.

RPC Knowledge Base

Related RPC details

Never Worry about Infrastructure Again

OnFinality takes away the heavy lifting of DevOps so you can build smarter and faster.

Get Started