← Blog
2026-05-05 · supabase · limits

Supabase Free Tier: The Real Limits You Hit First

Supabase advertises a generous free tier. The auto-pause and 5 GB egress are the limits indie projects hit before the database one.

Supabase positions itself as open-source Firebase: Postgres, Auth, Storage, Edge Functions, all in one dashboard. The free tier looks generous on paper. In practice, two limits bite indie projects before the database limit ever shows up.

The auto-pause that catches everyone

Free Supabase projects pause after 7 days of inactivity. "Inactivity" means no incoming database queries, no auth events, no storage requests. Your project is fine while you are building actively. The week you take a break, Supabase pauses it.

A paused project returns 503 to all requests. Your users see errors. You can wake it with one click in the dashboard, but the click is manual , there is no auto-wake on incoming traffic. If your site has occasional users (a portfolio, a small SaaS with weekly users), this is a real problem.

The fix on free tier: hit a health-check endpoint daily via cron. A simple GitHub Actions workflow that runs daily and pings your Supabase project keeps it active. This works but feels gross.

The real fix: pay $25/month for Pro. No more pauses. This is the line where Supabase stops being free for "always-on" projects.

The 5 GB egress limit

Free tier gives 5 GB egress per month. That is data leaving Supabase , API responses, storage downloads, realtime broadcasts. Most projects do not hit this until they serve any media.

A 100 KB API response served 50,000 times = 5 GB. That is not many users for a busy app. A 1 MB image served 5,000 times = 5 GB. One viral page hits the wall fast.

The fix: serve media from Cloudflare R2 or another object store, not Supabase Storage. Use Supabase for the database and auth, use a cheaper egress path for files. This is annoying to set up but worth it.

What is actually generous

500 MB Postgres storage is small but enough for tens of thousands of rows in typical schemas. The auth limit (50,000 monthly active users) is genuinely huge for indie projects. The 2 simultaneous projects cap is rarely the problem.

Edge Functions on free tier give 500K invocations/month, which is more than enough for most projects. Realtime gives 200 concurrent connections, also fine.

When to pay

Pay for Pro ($25/mo) when: you cannot afford the 7-day auto-pause to break your live site, OR you serve media that pushes you past 5 GB egress, OR you run more than 2 projects.

Stay free when: you are still in build mode, your site has steady-but-light traffic that keeps it active, and you serve no media. Supabase free tier is excellent for prototypes; it is the worst tier for "live but quiet" production apps because of the pause behavior.

The escape hatch

Supabase is open source under Apache 2.0. If you outgrow free tier and don't want to pay, self-hosting is supported. The deploy is a Docker Compose stack with Postgres + Kong + Auth + Storage + Realtime + Studio. Running this on a $5 Hetzner VPS costs less than Pro and gives you full control. The trade-off is operational work , backups, upgrades, monitoring are now your problem. For most indie projects, $25 to Supabase is the cheaper path.

Tools in this post