DEV Community

tsushanth
tsushanth

Posted on

Why your Supabase bill is actually $110/mo — and what to do about it

Supabase advertises a $25/mo Pro plan. That number is real. It is also misleading.

Here is what a production-ready Supabase setup actually costs:

  • Pro plan: $25/mo
  • Compute upgrade (Micro is too weak for real traffic; Small at minimum, often Medium): $15–$60/mo
  • Egress: $0.09/GB after 250 GB included
  • Auth MAUs: free up to 100k, then $0.00325 per user — at 500k users that is $1,300/mo just for authentication

Realistic baseline for a production app with modest traffic: $110–120/mo before any user growth.

I spent a week going through Supabase GitHub issues, HN threads, and Trustpilot reviews to understand what paying customers actually complain about. Here is what I found.


1. Connection limits hit in production, not dev

Every Supabase compute tier caps Postgres connections. Small = ~60 total. Serverless runtimes (Vercel, Cloudflare Workers) spawn a new connection per request. You will hit this wall. The fix is upgrading compute — another pricing jump.

2. RLS has a well-known foot-gun

A security scan found over 10% of analyzed Supabase apps had tables fully readable via the public anon key. The root cause: RLS is opt-in with no safety net, and Supabase's SQL editor runs as a Postgres superuser, silently bypassing your policies. Bugs that work in dev fail silently in production.

3. Support on the $25 plan is basically Discord

Pro plan users have no SLA. The $599/mo Team plan is the first tier with a guaranteed response time.

4. The auth MAU wall

The most common reason teams leave Supabase: the auth pricing. At $0.00325 per MAU above 100k, a 500k-user app pays $1,300/mo just for authentication. The fix everyone reaches for: replace Supabase Auth with Clerk or Better Auth, keep the Postgres.

Which raises a question — if you're bringing your own auth anyway, why pay for the full Supabase bundle?


What I built

I built Basely — just the Postgres part, done right.

Schema-per-tenant on a shared cluster. Each project gets an isolated Postgres schema and a scoped role. No anon key. No shared superuser. No RLS foot-guns. Provisioning takes under a second.

Pricing: $15/mo flat for 10 projects. No egress fees. No MAU meter. No compute tier jumps.

What I focused on because of the research above:

  • Daily backups included — pg_dump per project, gzipped, downloadable from the dashboard. Not theater. Just a working backup.
  • Connection limits visible in the dashboard — color-coded bar per project. No surprises.
  • basely migrate supabase — one command to dump your Supabase schema and restore it into a Basely project.
  • MCP-native — Claude and Cursor can create projects, run migrations, and generate TypeScript types with no human steps.

bash
npx @basely-cli/cli migrate supabase \
  --from "postgres://postgres:[password]@db.[ref].supabase.co:5432/postgres"
Enter fullscreen mode Exit fullscreen mode

Top comments (0)