Realtime Quotas
note
Upgrade your plan to increase your quotas. Without a spend cap, or on an Enterprise plan, some quotas are still in place to protect budgets. All quotas are configurable per project. Contact support if you need your quotas increased. Our cluster supports millions of concurrent connections and message throughput for production workloads.
Quotas by Plan#
Free | Pro | Pro (no spend cap) | Team | Enterprise | |
---|---|---|---|---|---|
Concurrent clients | 200 | 500 | 10,000 | 10,000 | 10,000 |
Messages per second | 100 | 500 | 2,500 | 2,500 | 2,500 |
Channel joins per second | 100 | 500 | 2,500 | 2,500 | 2,500 |
Channels per client | 100 | 100 | 100 | 100 | 100 |
Presence keys per object | 10 | 10 | 10 | 10 | 10 |
Presence messages per second | 20 | 50 | 1,000 | 1,000 | 1,000 |
Broadcast payload size KB | 256 | 3,000 | 3,000 | 3,000 | 3,000 |
Postgres change payload size KB (read more) | 1,024 | 1,024 | 1,024 | 1,024 | 1,024 |
Beyond the Free and Pro plan you can customize your quotas by contacting support.
Client-Side Limiting#
Some basic WebSocket message rate limiting is implemented client-side.
For example, the multiplayer.dev demo instantiates the Supabase client with an eventsPerSecond
parameter.
Quota Errors#
When you reach a quota errors can appear in backend logs and messages in the WebSocket connection.
note
Use the Realtime Inspector to reproduce an error and share those connection details with Supabase support.
Backend Logs#
If your project is being limited by a quota, check your Realtime logs.
WebSocket Errors#
tenant_events
: Clients will be disconnected if your project is generating too many messages per second.supabase-js
should reconnect automatically when the message throughput decreases below your plan quota.
note
An event
is a WebSocket message delivered to, or sent from a client.
Some quotas can cause a Channel join to be refused. Realtime will reply with one of the following WebSocket messages:
too_many_channels
: Too many channels currently joined for a single client.too_many_connections
: Too many total concurrent connections for a project.too_many_joins
: Too many Channel joins per second.
note
Use your browser's developer tools to find the WebSocket initiation request and view individual messages.
Postgres Changes Payload Quota#
When this quota is reached, the new
and old
record payloads only include the fields with a value size of less than or equal to 64 bytes.