Back to Supabase

Realtime Limits

apps/docs/content/guides/realtime/limits.mdx

1.26.084.1 KB
Original Source

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

<Admonition type="note">

Upgrade your plan to increase your limits. Without a spend cap, or on an Enterprise plan, some limits are still in place to protect budgets. All limits are configurable per project. Contact support if you need your limits increased.

</Admonition>

Limits by plan

FreeProPro (no spend cap)TeamEnterprise
Concurrent connections20050010,00010,00010,000+
Messages per second1005002,5002,5002,500+
Channel joins per second1005002,5002,5002,500+
Channels per connection100100100100100+
Presence keys per object1010101010+
Presence messages per second20501,0001,0001,000+
Presence calls per client, per 30 seconds55555
Broadcast payload size256 KB3,000 KB3,000 KB3,000 KB3,000+ KB
Postgres change payload size (read more)1,024 KB1,024 KB1,024 KB1,024 KB1,024+ KB
Broadcast replay retention (read more)72 hours72 hours72 hours72 hours72 hours
Broadcast replay messages per request2525252525

Beyond the Free and Pro Plan you can customize your limits by contacting support.

Limit errors

When you exceed a limit, 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.
<Admonition type="note" title="Realtime Inspector">

You can use the Realtime Inspector to reproduce an error and share those connection details with Supabase support.

</Admonition> Some limits 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 connection.

too_many_connections

Too many total concurrent connections for a project.

too_many_joins

Too many Channel joins per second.

tenant_events

Connections 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 limit. An event is a WebSocket message delivered to, or sent from a client.

Postgres changes payload limit

When this limit is reached, the new and old record payloads only include the fields with a value size of less than or equal to 64 bytes.