CompareSupabase
Just need the database?Ours sleeps when your app does.
Supabase is a whole backend, and its paid projects bill around the clock whether anyone is using them or not. If Postgres is all you need, BataDB costs $0 while idle and every branch comes with your data.
Side by side
What's in the box.
Every plan gets branching and point-in-time restore, Free included. Your agents get the same CLI and MCP server you do.
| Feature | BataDB | Supabase |
|---|---|---|
| Scale to zero | Yes: After 5 idle minutes | No: Paid projects never pause |
| Branches with your data | Yes: Copy-on-write, one command | Partly: Empty unless you add PITR |
| No branch fees | Yes: None | No: $0.01344 an hour per branch |
| Point-in-time restore | Yes: Up to 30 days, included | Partly: Add-on, from $100 a month |
| Connection pooling | Yes: Built in | Yes: Built in |
| CLI with JSON output | Yes: --json on every API command | Yes: -o json |
| MCP server | Yes: 128 tools | Yes: Hosted |
| One-command import | Yes: bata import | Partly: Dump and restore |
The bill
Watch the idle hours add up.
We priced the same workload on BataDB and on Supabase, then let the month run.
Side project
One small database, busy two hours a day and idle the rest.
- BataDBPay as you go$0.58 a month
- SupabasePro plan, Micro compute$25.00 a month
Saved against Supabase, every month
$24.4298% less
Move
Moving over takes one command.
bata import copies your database from Supabase into a new BataDB project, then checks row counts and sequences on both sides.
From Supabase
npm install -g @batadata/clibata loginbata import --source "$SUPABASE_DB_URL" --name my-app- Use the direct connection on port 5432, or the session pooler. Skip the transaction pooler on 6543.
- Your database moves. Auth, storage and functions stay where they are.