Three vendors, three different things being sold
A founder choosing a backend usually compares three prices and picks the lowest. That comparison fails here, because the three vendors are not selling the same thing. Supabase sells a Postgres project with a plan price plus overage meters. Firebase sells a bundle of Google services — Firestore, Authentication, Storage, Hosting, and more — each with its own free quota, on a pay-as-you-go Blaze plan behind a no-cost Spark plan. PlanetScale sells database resources — compute, topology, storage, backup, and egress — priced through a calculator, with no fixed tier ladder. The cheapest vendor at one profile is the most expensive at the next.
This guide prices all three at two stated profiles, from the vendors' own pricing pages, and refuses to invent the one number PlanetScale does not publish. Every figure below is a vendor list price or a derivation from one, with the derivation shown. Where a vendor defers pricing to another page — Firebase to Google Cloud for Firestore operations — the guide says so instead of filling the gap with a guess.
Who this guide is for, and who should stop here
This guide is for a founder or engineering lead choosing the backend for a production web or mobile app — a SaaS product, a marketplace, or a content app with user accounts — who will pay the invoice monthly and wants to know which meter grows fastest. It assumes a Postgres or document data model, a need for authentication, and traffic in users, reads, and gigabytes.
Stop here and get a quote instead if you need HIPAA, PCI, or single-tenant deployment, multi-region writes with strict consistency, or a database over a few hundred gigabytes. At that scale, negotiated terms replace list pricing. If you already run Postgres with extensions Supabase does not allow, or Firestore queries that need joins, the data model decides before price does.
The three price lists, side by side
Supabase's pricing page lists a Free plan at $0 a month: 50,000 monthly active users, 500 MB of database size, shared CPU with 500 MB of RAM, 5 GB of egress, and unlimited API requests. The Pro plan costs $25 a month and includes 100,000 monthly active users, 8 GB of disk per project, 250 GB of egress, 250 GB of cached egress, 100 GB of file storage, daily backups stored for 7 days, and email support. Paid plans include $10 a month in compute credits, enough to cover one Micro instance. Beyond the included amounts, Pro charges $0.00325 per monthly active user, $0.125 per GB of disk, $0.09 per GB of egress, $0.03 per GB of cached egress, and $0.0213 per GB of file storage. Compute sizes run from Micro at $10 a month with 1 GB of RAM, 60 direct connections, and 200 pooler connections, through Small at $15, Medium at $60, and Large at $110 with dedicated 2 vCPUs and 8 GB of RAM, up to 16XL at $3,730 with 64 vCPUs and 256 GB of RAM. The pooler counts matter: a serverless fleet that opens a connection per request will hit the direct limit long before the CPU limit, which is why the pooler exists.
Firebase's pricing page splits into two plans. Spark is the no-cost plan: generous no-cost usage limits, no payment method needed. Blaze is pay as you go: more services and higher usage levels, no-cost Spark usage included, and $300 in free credit if eligible. The per-product quotas are the real price list. Firestore on the no-cost tier allows 50,000 document reads a day, 20,000 writes a day, 20,000 deletes a day, 1 GiB of stored data, and 10 GiB a month of network egress, with further usage billed through Google Cloud pricing. Cloud Storage on the no-cost tier allows 5 GB stored, then $0.026 per GB; 1 GB a day downloaded, then $0.12 per GB; 20,000 upload operations a day, then $0.05 per 10,000; and 50,000 download operations a day, then $0.004 per 10,000. Firebase Hosting allows 10 GB of storage free, then $0.026 per GB, and 360 MB a day of data transfer free, then $0.15 per GB. The critical gap is Firestore operations beyond quota: Google Cloud's Firestore pricing page prices reads, writes, deletes, and storage by region and by consumption model, including committed-use discounts, so no single per-operation figure from the Firebase page can be quoted.
PlanetScale's pricing page, as rewritten for its current lineup, does not offer a tier ladder at all. It offers a Base plan with resource-based pricing and an Enterprise plan with custom pricing. The Base plan prices Vitess, its MySQL-compatible sharded engine, and Neki, its sharded Postgres engine, by cluster size, router or VTGate configuration, replicas, storage, backup storage, and network usage. PlanetScale Postgres, the single-node offering, starts at $5 a month for development and low-traffic production workloads. Metal, the high-performance local NVMe offering, starts at $50 a month. High availability means 1 primary plus 2 replicas across 3 availability zones. The page directs readers and their agents to query cluster pricing with SQL against a pricing database, which is the vendor's own admission that the price is a calculation, not a table. Enterprise adds business support, a shared Slack channel, architecture consultation, and deployment inside the customer's own AWS or GCP account, where the customer pays the cloud provider directly plus a percentage.
Worked math: a small app, then a growth app
Profile A, the small app: 20,000 monthly active users, 2 GB of database, 10 GB of egress, 10 GB of hosted files, and usage inside every free quota it touches. Supabase Free fails on disk: 20,000 users sit under the 50,000 allowance, but 2 GB exceeds the 500 MB database allowance, so the honest small-app Supabase price is Pro at $25 a month, with the Micro instance covered by the $10 credit. Firebase Spark covers it at $0, provided Firestore reads stay under 50,000 a day and writes under 20,000 a day; the Hosting allowance covers 10 GB of storage and roughly 10.8 GB a month of transfer at 360 MB a day. PlanetScale Postgres single node starts at $5 a month, before any storage, backup, or egress the calculator adds. Small-app ranking on list prices: Firebase $0, PlanetScale from $5, Supabase $25.
Profile B, the growth app: 150,000 monthly active users, 20 GB of database disk, 400 GB of egress, and 100 GB of file storage. Supabase Pro math, with every meter shown:
At this profile, Supabase Pro costs $202.50 before compute, with the Micro instance covered by the $10 credit, and the MAU meter at $162.50 is 80% of the bill. A team that reads only the $25 plan price will under-budget by a factor of eight.
Firebase at Profile B cannot be finished from its own page, and that unfinished total is itself the finding. Hosting alone is computable: 100 GB of storage against a 10 GB free allowance leaves 90 GB at $0.026, which is $2.34, and 400 GB of transfer against roughly 10.8 GB a month free at 360 MB a day leaves about 389 GB at $0.15, which is about $58.38, for a Hosting subtotal of $60.72. But Firestore operations — the reads and writes the app actually serves — are priced by Google Cloud by region and consumption model, and no region is stated in this profile, so no honest Firestore total exists here. PlanetScale at Profile B is a floor, not a total: single node from $5 a month, Metal from $50, high availability as 1 primary plus 2 replicas, and everything else through the calculator.
| Attribute | Supabase | Firebase | PlanetScale | Authority |
|---|---|---|---|---|
| What you buy | A Postgres project: plan plus overage meters | A bundle of Google services, each with free quotas | Database resources through a calculator | Vendor pricing pages, November 2026 |
| Entry price | Free $0; Pro $25 a month | Spark $0; Blaze pay as you go, $300 credit if eligible | Postgres single node from $5 a month; Metal from $50 | Supabase, Firebase, PlanetScale pricing pages |
| User meter | MAU: 50,000 free, 100,000 on Pro, then $0.00325 each | Authentication and Firestore quotas per product, not per MAU | None stated; compute and topology instead | Supabase pricing; Firebase pricing |
| Storage meter | Disk $0.125 per GB over 8 GB on Pro; file storage $0.0213 per GB over 100 GB | Hosting $0.026 per GB over 10 GB; Storage $0.026 per GB over 5 GB | Resource-based: storage, backup, egress via calculator | Vendor pricing pages |
| Egress meter | $0.09 per GB over 250 GB; cached $0.03 per GB over 250 GB | Hosting $0.15 per GB over 360 MB a day; App Hosting $0.20 per GiB uncached over 10 GiB | Resource-based via calculator | Vendor pricing pages |
| Growth-app total at Profile B | $202.50 before compute (MAU meter dominates) | Hosting $60.72; Firestore total not computable without a region | Floor only: from $5 single node, from $50 Metal | Derived in this guide from vendor list prices |
| Scaling ceiling | Compute to 64 vCPUs and 256 GB RAM on 16XL | Google Cloud pricing by region and consumption model | Sharded Vitess and Neki for massive scale | Supabase compute table; Google Cloud Firestore pricing; PlanetScale pricing |
Operator boundaries: who should not pick which
Do not pick Supabase if your user count grows faster than your revenue per user, because the MAU meter charges every monthly active user whether or not that user pays. Do not pick Firebase if your read pattern is chatty — thousands of small reads per session — because the Firestore operation meter, priced by region on Google Cloud, is the bill you cannot preview from the Firebase page. Do not pick PlanetScale if your team cannot run its calculator and defend the output in a budget review, because a calculator-only price is a quote you must generate. Do not pick any of the three if you need to leave: Supabase locks least, because it is Postgres you can dump and move; Firebase locks most, because Firestore queries, security rules, and Cloud Functions are Google-shaped; PlanetScale sits between, because Vitess is MySQL-compatible and its Postgres offering is newer, so the exit path deserves a test migration before the entry decision.
Founder & CEO Insight — Enow A. Jovial
Migration and launch protocol
- Name the meter before the vendor. Write down the unit that grows fastest for your app — MAU, reads, or gigabytes — and rank the vendors by that meter alone.
- Run the calculator for the vendor that has one. For PlanetScale, run the pricing calculator with your shard count, replicas, storage, and egress, and save the output as the quote.
- Price Firestore by region. For Firebase, pick the region, read the Google Cloud Firestore rates for that region, and compute reads, writes, and deletes at your measured per-session counts.
- Load-test the connection limit. For Supabase, test the pooler under your serverless concurrency, because 60 direct connections on Micro and 200 pooler connections are the ceiling that breaks before CPU does.
- Test the exit before the entry. Dump the data, restore it elsewhere, and time the restore.
- [x] Phase 1: Meter named — The fastest-growing unit (MAU, reads, or GB) written down and ranked across vendors.
- [x] Phase 2: Calculator run — PlanetScale output saved, or Firebase region rates recorded, before any commitment.
- [x] Phase 3: Pooler load test — Supabase pooler tested at production concurrency, not at developer concurrency.
- [x] Phase 4: Exit timed — A dump and restore completed and timed before launch, not promised for later.
Related reading on this site: the Postgres connection pooling guide, the headless WordPress vs Next.js decoupling guide, and the CDN pricing guide. Budget the full build with the website cost calculator. For the frontend half of the same build — Vercel vs Netlify vs Cloudflare Pages, priced per gigabyte — see the frontend hosting pricing guide.
If the backend platform is only half the bill, the serverless pricing playbook prices the compute layer: Lambda $11.80, Azure $11.40, and Cloud Functions $48.48 a month at 10 million invocations.
Backend errors need tracking too — see the Sentry vs Rollbar vs Bugsnag pricing playbook.

