Prepare for the PgBouncer and IPv4 deprecations on 26th January 2024

Home

Realtime Quotas

Our cluster supports millions of concurrent connections and message throughput for production workloads.

Quotas by plan

FreeProPro (no spend cap)TeamEnterprise
Concurrent clients20050010,00010,00010,000
Messages per second1005002,5002,5002,500
Channel joins per second1005002,5002,5002,500
Channels per client100100100100100
Presence keys per object1010101010
Presence messages per second20501,0001,0001,000
Broadcast payload size KB2563,0003,0003,0003,000
Postgres change payload size KB (read more)1,0241,0241,0241,0241,024

Beyond the Free and Pro plan you can customize your quotas by contacting support.

Client-Side throttling

Some basic WebSocket message throttling is implemented client-side. See the Throttling guide for more details.

Quota errors

When you exceed a quota, errors will appear in the backend logs and client-side messages in the WebSocket connection.

  • Logs: check the Realtime logs inside your project Dashboard.
  • Websocket errors: Use your browser's developer tools to find the WebSocket initiation request and view individual messages.

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.

tenant_events

Clients will be disconnected if your project is generating too many messages per second. supabase-js will reconnect automatically when the message throughput decreases below your plan quota. An event is a WebSocket message delivered to, or sent from a client.

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.