Solana · Rate Limits

Solana Rpc Rate Limits

Rate limits for Solana's public shared RPC endpoints across Mainnet, Devnet, and Testnet clusters. These limits apply per IP address and are enforced by the public API nodes operated by the Solana Foundation. Limits can change without notice and are not subject to an SLA. Production applications should use a dedicated private RPC provider or self-hosted node to avoid these constraints.

Solana Rpc Rate Limits is the machine-readable rate-limit profile for Solana on the APIs.io network, conforming to the API Commons Rate Limits specification.

It captures 5 rate-limit definitions, measuring requests_per_10s, requests_per_10s_single_rpc, concurrent_connections, connection_rate_per_10s, and data_transfer_per_30s.

The profile also includes 6 backoff/retry policies defined and response codes documented for throttled and blocked.

Tagged areas include Blockchain, Cryptocurrency, Web3, RPC, and Rate Limiting.

5 Limits Throttle: 429
BlockchainCryptocurrencyWeb3RPCRate Limiting

Limits

Requests per 10 seconds per IP ip
requests_per_10s · 10s
100
Maximum total requests allowed per IP address across all RPC methods in a 10-second window on any single public cluster endpoint. Shared across all methods and connections from the IP.
Requests per 10 seconds per single RPC method ip
requests_per_10s_single_rpc · 10s
40
Maximum requests for any single RPC method (e.g., getAccountInfo) per IP in a 10-second window. Applies in addition to the overall 100/10s per-IP limit.
Maximum concurrent WebSocket connections per IP ip
concurrent_connections · concurrent
40
Maximum number of simultaneous WebSocket connections from a single IP address. Exceeding this may cause connection refusals.
WebSocket connection rate per 10 seconds per IP ip
connection_rate_per_10s · 10s
40
Rate at which new WebSocket connections can be established from a single IP in a 10-second window.
Data transfer per 30 seconds ip
data_transfer_per_30s · 30s
100
Maximum data transfer of 100 MB per IP in any 30-second period. Heavy data consumers such as getProgramAccounts with large accounts should use filters and data slicing to stay within this limit.

Policies

Back off on 429
When a 429 Too Many Requests response is received, the client should stop sending requests, wait, and retry with exponential backoff with jitter. Solana public endpoints do not return a Retry-After header.
IP block on 403
A 403 Forbidden response indicates the IP has been blocked, typically due to sustained abuse or sustained rate-limit violations. This may be temporary or permanent. Contact the Solana Foundation or switch to a private RPC provider.
Use data slicing for large accounts
When calling getProgramAccounts or getAccountInfo on accounts with large data buffers, use the dataSlice parameter to fetch only the bytes you need. This reduces data transfer and keeps responses within the 100 MB/30s data limit.
Use filters to reduce result sets
getProgramAccounts supports memcmp and dataSize filters to reduce the number of accounts returned. Apply the narrowest filters possible to avoid large result sets that stress bandwidth limits.
WebSocket preferred for subscriptions
Use WebSocket subscriptions (accountSubscribe, logsSubscribe) instead of polling HTTP endpoints in a tight loop. Subscriptions are more efficient and reduce total request count against rate limits.
Production use requires private RPC
Public RPC endpoints are not intended for production applications. Applications serving real users should use dedicated private RPC nodes or a commercial provider such as Helius, QuickNode, Alchemy, or Syndica to obtain higher limits, uptime SLAs, and support.

Sources