Summary
Free Solana RPC nodes are public or shared endpoints that let you read chain data and submit transactions without a paid plan. They are useful for prototypes, local development, wallet setup, and low-volume scripts, but they usually come with shared capacity, request limits, and no operational guarantees. This page explains how to connect to a free Solana endpoint, what breaks first under load, and when to move to a managed or dedicated node. OnFinality offers a public Solana endpoint plus managed RPC API and dedicated node options when your workload outgrows free access.
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:
-
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.
-
Rate limits and method restrictions. Many free endpoints cap requests per second or per minute, and some disable expensive methods such as
getProgramAccountsor restrictgetLogs-style subscriptions. -
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"}]
}'
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
}
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);
};
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:
-
getProgramAccountsscans 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. -
getSignaturesForAddresson a busy program returns long histories. Paginate withbeforeanduntilrather than requesting everything at once. -
logsSubscribeandprogramSubscribepush a high volume of notifications. A shared WebSocket can drop or throttle these under load. -
sendTransactiondepends 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, orfinalized, 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.