DEV Community

OnFinality
OnFinality

Posted on Originally published at onfinality.io

Free Solana RPC Nodes: What You Get and When to Upgrade

Is a free Solana RPC node the right fit for your workload?

Free Solana RPC nodes are shared endpoints that anyone can call without a paid plan. They are the fastest way to get a wallet, a script, or a prototype talking to Solana. The tradeoff is that you share capacity with everyone else using the same endpoint, and you do not control the node's configuration, retention, or availability.

Use this quick test before you commit to a free endpoint:

  • Prototype or local development: a free endpoint is usually fine. You are sending a handful of requests and you can retry failures manually.

  • Wallet or dApp for real users: free endpoints can work at low traffic, but shared rate limits and WebSocket drops become visible as soon as you have concurrent users.

  • Indexer, trading bot, or analytics job: free endpoints usually fail here. Heavy getProgramAccounts, getSignaturesForAddress, and log subscriptions consume far more compute than a shared endpoint is sized for.

  • Production with SLAs or support needs: move to a managed RPC API or a dedicated node so you control capacity, transport, and failover.

If you are still deciding between shared, managed, and dedicated access, the Solana RPC provider comparison and the RPC provider selection guide cover the evaluation criteria in more depth.

What "free" actually means for Solana RPC

Solana RPC is not a single service. It is a JSON-RPC interface served by individual nodes. A free endpoint is a node (or a small pool of nodes) that a provider, a foundation, or a community group has opened to the public.

That model has three practical consequences:

  1. Shared throughput. Every request from every user competes for the same CPU, memory, and network capacity. When the endpoint is busy, your calls queue or get rejected.

  2. Rate limits and method restrictions. Many free endpoints cap requests per second or per minute, and some disable expensive methods such as getProgramAccounts or restrict getLogs-style subscriptions.

  3. No retention or support guarantees. A free node may not keep full history, may prune older ledger data, and typically has no support channel if something breaks.

None of this makes free endpoints bad. It makes them a specific tool: good for learning and light usage, weak for sustained or latency-sensitive workloads.

Connecting to a free Solana endpoint

For Solana mainnet, OnFinality exposes a public HTTP and WebSocket endpoint. You can use it directly for development and light testing.

# Solana mainnet public HTTP endpoint
curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getLatestBlockhash",
    "params": [{"commitment": "confirmed"}]
  }'
Enter fullscreen mode Exit fullscreen mode

A successful response returns the current blockhash and its last valid block height:

{
  "jsonrpc": "2.0",
  "result": {
    "context": { "slot": 0 },
    "value": {
      "blockhash": "...",
      "lastValidBlockHeight": 0
    }
  },
  "id": 1
}
Enter fullscreen mode Exit fullscreen mode

For subscriptions, use the WebSocket endpoint:

// WebSocket subscription to slot updates
const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");

ws.onopen = () => {
  ws.send(JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "slotSubscribe"
  }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  console.log("slot notification", msg.params?.result);
};
Enter fullscreen mode Exit fullscreen mode

If you are building or testing before mainnet, use the Solana Devnet RPC endpoint instead. Devnet lets you request test SOL from a faucet and exercise the same RPC methods without spending real funds.

Chain settings at a glance

When you add Solana to a wallet, a dApp config, or a framework like Anchor, you need the chain parameters to match the network you are targeting.

Setting Solana Mainnet Solana Devnet
Chain name Solana Mainnet Solana Devnet
Native currency SOL (9 decimals) SOL (9 decimals)
HTTP RPC https://solana.api.onfinality.io/public See Solana Devnet
WebSocket RPC wss://solana.api.onfinality.io/public-ws See Solana Devnet
Block explorer https://explorer.solana.com https://explorer.solana.com/?cluster=devnet
Commitment levels processed, confirmed, finalized processed, confirmed, finalized

Keep the chain name, currency decimals, and explorer URL consistent with the network you are actually calling. Mixing a mainnet RPC URL with a devnet program ID is one of the most common setup mistakes.

Where free endpoints break first

Free Solana RPC nodes rarely fail on simple calls. They fail on the operations that make Solana apps interesting. Watch for these patterns:

Symptom Likely cause What to try
429 Too Many Requests Shared rate limit reached Add backoff and jitter, reduce polling frequency, batch where possible
Timeouts on getProgramAccounts Method is expensive or disabled Narrow the filter, use dataSlice, or move to a managed/dedicated node
WebSocket disconnects Idle timeout or capacity pressure Implement reconnect with resubscribe logic; consider a dedicated WebSocket endpoint
Blockhash not found on send Blockhash expired before confirmation Fetch a fresh blockhash, set lastValidBlockHeight, retry
Inconsistent slot heights Requests hit different nodes in a pool Pin to a single endpoint or use a provider with consistent routing
Missing older transactions Node pruned history Use an archive-capable endpoint for historical queries

If you see more than one of these in the same session, the endpoint is telling you it is undersized for your workload. That is the signal to evaluate managed or dedicated access rather than tuning retries indefinitely.

Solana-specific methods that stress shared nodes

Solana's RPC surface is broader than a typical EVM chain, and a few methods dominate resource usage:

  • getProgramAccounts scans accounts owned by a program. Without tight filters it can return megabytes of data and is the single most common cause of timeouts on free endpoints.

  • getSignaturesForAddress on a busy program returns long histories. Paginate with before and until rather than requesting everything at once.

  • logsSubscribe and programSubscribe push a high volume of notifications. A shared WebSocket can drop or throttle these under load.

  • sendTransaction depends on a valid recent blockhash. If your endpoint is slow, the blockhash can expire before the transaction lands, producing confusing errors.

For any of these, the fix is usually capacity and control, not a clever parameter. A managed RPC API gives you a stable endpoint and predictable limits; a dedicated node gives you the node itself, which matters when you need consistent getProgramAccounts performance or long-lived subscriptions.

Production readiness checklist

Before you point real users at any Solana RPC endpoint, including a free one, confirm the following:

  • Failover: you have at least two endpoints configured and your client can switch when one fails.

  • Retry policy: exponential backoff with jitter on 429 and 5xx responses, plus a cap on total retries.

  • Commitment strategy: you know which calls use processed, confirmed, or finalized, and why.

  • WebSocket lifecycle: reconnect, resubscribe, and heartbeat handling are implemented, not assumed.

  • Observability: you log error rates, latency percentiles, and rate-limit responses per endpoint.

  • Cost model: you understand what volume triggers a paid plan and what that plan includes. See RPC pricing for the current tiers.

  • Network coverage: if you support multiple chains, confirm each one is listed under supported RPC networks.

If you cannot check most of these boxes, a free endpoint is still fine for development, but it is not yet a production dependency.

Moving from free to managed or dedicated

The migration itself is usually small. The decision is the hard part.

Stay on free if: you are prototyping, running a test suite, or serving a small internal tool where occasional failures are acceptable.

Move to a managed RPC API if: you have real users, need a stable endpoint with defined limits, want WebSocket support, and prefer not to run infrastructure. OnFinality's RPC API service is built for this case, with endpoints for Solana and other networks.

Move to a dedicated node if: you need consistent performance on heavy methods, want to control node configuration and retention, or run workloads that a shared endpoint cannot absorb. See dedicated nodes for how that works.

A practical middle path is to keep a free endpoint as a fallback while routing primary traffic to a managed endpoint. That gives you resilience without a large upfront commitment.

Key Takeaways

  • Free Solana RPC nodes are shared endpoints suited to prototypes, local development, and low-volume scripts.

  • They typically impose rate limits, restrict expensive methods, and offer no retention or support guarantees.

  • The first failures you will see are 429 responses, timeouts on getProgramAccounts, and WebSocket disconnects.

  • Solana mainnet public endpoints are available over HTTP and WebSocket; devnet is the right target before mainnet.

  • Production apps need failover, retry logic, observability, and a clear cost model, not just a working URL.

  • When free access stops fitting, managed RPC API and dedicated nodes are the two upgrade paths to evaluate.

Frequently Asked Questions

Are free Solana RPC nodes reliable enough for production?

They can be, at very low traffic, but they are shared and typically lack guarantees around capacity, retention, and support. For anything with real users or latency sensitivity, a managed or dedicated endpoint is the safer default.

What is the difference between a free Solana RPC endpoint and a dedicated node?

A free endpoint is shared across many users and you do not control its configuration. A dedicated node is provisioned for your workload, so you control capacity, retention, and transport behavior.

Can I use a free endpoint for getProgramAccounts?

Sometimes, but it is the method most likely to time out or be restricted on shared endpoints. Narrow your filters, use dataSlice, and consider a managed or dedicated endpoint if you rely on it.

Do free Solana RPC endpoints support WebSockets?

Many do, including OnFinality's public Solana WebSocket endpoint, but shared WebSocket connections can drop under load. Implement reconnect and resubscribe logic regardless of the endpoint.

How do I test on Solana without spending SOL?

Use Solana Devnet, request test SOL from a faucet, and run the same RPC methods you plan to use on mainnet.

When should I switch to a paid Solana RPC plan?

When you see recurring rate limits, timeouts on core methods, or WebSocket instability, or when you need support and defined capacity. Review RPC pricing and supported networks to plan the move.

Related resources

Originally published at OnFinality.

Top comments (0)