Is Supabase Realtime Down Right Now?
Supabase Realtime handles WebSocket connections for live updates. It operates independently from the database — Realtime can go down while your DB stays up.
Updated May 2026
📡 Monitor your APIs — know when they go down before your users do
Better Stack checks uptime every 30 seconds with instant Slack, email & SMS alerts. Free tier available.
Affiliate link — we may earn a commission at no extra cost to you
How to Check If Supabase Realtime Is Down
- 1. Visit status.supabase.com → look for "Realtime" component specifically
- 2. Check @supabase on X for incident announcements
- 3. In browser DevTools → Network → Filter by WS (WebSockets) → look for failed handshakes to realtime.*.supabase.co
- 4. Try a minimal Realtime connection test (code below) to isolate if it's your code or the service
Quick Realtime Connection Test
Run this minimal test in your browser console (or a test file) to isolate whether Supabase Realtime is reachable:
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
)
// Minimal Realtime connection test
const channel = supabase.channel('connection-test')
.subscribe((status) => {
console.log('Realtime status:', status)
// 'SUBSCRIBED' = working
// 'CHANNEL_ERROR' = auth/config issue
// 'TIMED_OUT' = network/service issue
// 'CLOSED' = connection refused
})
// Clean up after 5 seconds
setTimeout(() => {
supabase.removeChannel(channel)
}, 5000)If you see TIMED_OUT or CLOSED after 10 seconds and status.supabase.com shows Realtime operational, the issue is likely your network or firewall.
How Supabase Realtime Works
Supabase Realtime is a separate Elixir/Phoenix service (open-source, separate from the Postgres database). It connects to your Postgres database via WAL (Write-Ahead Log) replication for Postgres Changes, and handles WebSocket connections from clients independently.
Broadcast
Send messages between clients. No DB required. Phoenix PubSub under the hood.
Most reliable — no DB dependency
Presence
Track connected users. Built on Broadcast.
Reliable — stateless per connection
Postgres Changes
Live DB updates via WAL replication.
Most complex — DB + Realtime + WAL
Monitor your Supabase-backed app's uptime
Better Stack catches API and WebSocket failures before your users notice. Set up alerts for your Supabase endpoints in 2 minutes.
Try Better Stack Free →Common Supabase Realtime Issues
⚠ Postgres Changes not firing
Cause: Realtime not enabled for the table in Dashboard → Database → Replication
Fix: Enable table in Supabase dashboard or via SQL: ALTER PUBLICATION supabase_realtime ADD TABLE your_table
⚠ RLS blocking Realtime updates
Cause: Row Level Security policies prevent Realtime from reading the table
Fix: Add SELECT policy for authenticated users or the service role
⚠ WebSocket connection fails immediately
Cause: Anon key is incorrect or project is paused
Fix: Verify SUPABASE_ANON_KEY from dashboard; restore project if paused
⚠ Subscription connects but never fires
Cause: Filter expression incorrect or no matching rows change
Fix: Start without filters first (listen to all changes), then add filters once working
⚠ Connection limit exceeded
Cause: Too many concurrent Realtime connections for your plan
Fix: Upgrade plan or reduce connections by multiplexing subscriptions on one channel
Debugging Supabase Realtime Step by Step
Step 1: Check status.supabase.com
The Realtime component shows separately from Database and Auth. A Realtime outage means all WebSocket subscriptions across all projects in that region are affected.
Step 2: Enable table for Realtime
In the Supabase dashboard: Database → Replication → toggle on the table. Or run: ALTER PUBLICATION supabase_realtime ADD TABLE public.your_table;
Step 3: Check RLS policies
If your table has RLS enabled, the Realtime service needs SELECT access. Test by temporarily disabling RLS on the table (in dev only) and see if subscriptions start firing.
Step 4: Add reconnection handlers
The Supabase JS client reconnects automatically, but your subscriptions need to be re-registered after reconnection. Use the SUBSCRIBED status event to re-fetch any data missed during the disconnect window.
Alert Pro
14-day free trialStop checking — get alerted instantly
Next time Supabase Realtime goes down, you'll know in under 60 seconds — not when your users start complaining.
- Email alerts for Supabase Realtime + 9 more APIs
- $0 due today for trial
- Cancel anytime — $9/mo after trial
Related Developer Guides
Frequently Asked Questions
Is Supabase Realtime down right now?
To check if Supabase Realtime is down, visit status.supabase.com and look specifically for the "Realtime" component — it reports separately from the database and Auth services. Supabase Realtime incidents often affect specific regions without affecting the database service. You can also check the Supabase GitHub Realtime repository issues and @supabase on X for incident announcements. Note that Supabase Realtime being down does NOT affect your database reads/writes — only WebSocket-based live updates.
Why are my Supabase Realtime subscriptions not receiving updates?
Supabase Realtime subscription failures have several common causes: (1) Realtime not enabled for the table — check Supabase dashboard → Database → Replication and toggle on the table, (2) RLS policies blocking Realtime — if Row Level Security is enabled, the authenticated user must have SELECT access to the table for Realtime to work, (3) Project paused (free tier) — paused projects disconnect all WebSockets, (4) Filter expression error — incorrect filter syntax in your subscription, (5) Supabase Realtime service outage — check status.supabase.com. Test with a simple channel subscription first to isolate the issue.
What is the difference between Supabase Broadcast, Presence, and Postgres Changes?
Supabase Realtime has three core features: (1) Broadcast — send arbitrary messages between clients via a shared channel (like Socket.io rooms). No database involved — pure WebSocket pub/sub. Best for chat, cursor positions, collaborative editing. (2) Presence — track who is connected to a channel. Built on Broadcast. Best for online user lists, "typing..." indicators. (3) Postgres Changes — listen to INSERT/UPDATE/DELETE events on specific database tables. Backed by Postgres logical replication (WAL). Best for live dashboards, feed updates. Each has separate status on the Supabase status page.
Why is Supabase Realtime disconnecting repeatedly?
Repeated Supabase Realtime disconnections are usually caused by: (1) Network instability — WebSockets require persistent connections; mobile and VPN users disconnect frequently, (2) Supabase free tier connection limits — free plan allows up to 200 concurrent Realtime connections, (3) Client-side memory pressure causing the WebSocket to be garbage collected, (4) JWT token expiration — the Realtime connection token expires and is not refreshed, (5) Server-side Realtime service instability — check status.supabase.com. Implement reconnection logic: the Supabase JS client handles reconnection automatically, but you should re-subscribe to channels after reconnect events.
How many concurrent Realtime connections does Supabase allow?
Supabase Realtime concurrent connection limits: Free plan = 200 concurrent connections, Pro plan = 500 concurrent connections, Team plan = 1,000 concurrent connections, Enterprise = custom. Each browser tab using Realtime counts as one connection. For high-scale apps, use channel multiplexing (multiple subscriptions on one channel) rather than opening multiple channels per user. Exceeding the limit causes new connections to be rejected — existing connections remain open.