Realtime

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.

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.