Short answer: Neon is the best default for serverless Postgres: it scales to zero, branches instantly, and has a usable free plan, at the cost of a cold start of a few hundred milliseconds when an idle database wakes. Supabase is the better pick when you also want auth, storage, and realtime in one $25/month Pro plan, and paid Supabase projects never cold start. PlanetScale is the pick for always-on production Postgres or MySQL with replicas included, starting at $5/month for a single node, but it has no free tier.

All three now offer Postgres. That is new: PlanetScale was a MySQL-only Vitess company until it launched PlanetScale Postgres, and Neon has been owned by Databricks since 2025. The real differences are in how each one bills compute, whether it sleeps when idle, and what comes bundled with the database. Prices on this page come from each vendor's pricing page and docs, checked on October 29, 2026, for the default AWS us-east-1 region. Latency figures are the vendors' own published numbers; we do not report our own millisecond benchmarks here, because network distance to your app swamps vendor differences.

For which one to run a production Next.js app on, see Supabase vs Neon vs PlanetScale for production Next.js. For a two-way comparison, see Neon vs Supabase Postgres. For a SQLite-at-the-edge option, see Cloudflare D1 vs Neon vs Supabase.

Supabase vs Neon vs PlanetScale at a glance

Line itemSupabaseNeonPlanetScale
Primary focusPostgres plus auth, storage, realtime, auto-generated APIs, and edge functionsServerless Postgres with separated storage and computeAlways-on managed Postgres, plus Vitess MySQL for sharding
Database enginesPostgresPostgresPostgres or MySQL (Vitess)
Free tierYes: 500 MB database, 5 GB egress, 2 active projects, paused after 1 week of inactivityYes: 100 CU-hours and 1 GB storage per project (20 GB per account), 5 GB egress per projectNo
Paid starting pricePro from $25/month, including $10 compute credit (one Micro instance)Launch: no monthly minimum, pay for usagePostgres PS-5 from $5/month single node, $15/month three-node HA
Compute billingFixed instance size billed hourly: Micro $10, Small $15, Medium $60, Large $110 per month$0.106 per CU-hour on Launch, $0.222 per CU-hour on ScaleFixed instance size per month, for example PS-40 (1/2 vCPU, 4 GiB) at $28 single node or $83 HA on arm64
Storage8 GB per project included on Pro, then $0.125/GB$0.35/GB-month on Launch and ScaleFirst 10 GB per cluster included, then a region-based rate
Egress250 GB included on Pro, then $0.09/GB500 GB per project included on paid plans, then $0.10/GB100 GB per month included on production branches, then a region-based rate
Scale to zeroFree projects pause after 1 week idle (manual restore); paid projects stay onAfter 5 minutes by default; mandatory on Free, can be disabled on Launch, 1 minute to always on with ScaleNo; databases are always on
Cold startNone on paid plans"A few hundred milliseconds" per Neon docs, when a suspended compute wakesNone
AutoscalingNo; you change the instance sizeYes: up to 2 CU on Free, up to 16 CU on Launch and ScaleNo; you change the instance size
Connection poolingSupavisor: transaction mode on port 6543 for serverless, session mode on 5432Built-in PgBouncer via the -pooler endpoint; HTTP and WebSocket serverless driverPgBouncer on the primary, transaction mode only, port 6432
Branching$0.01344 per branch per hourCopy-on-write; 10 branches included on Launch, 25 on Scale, then $1.50/branch-monthDevelopment branches with 10 GB included egress
High availabilityRead replicas as paid compute add-onsRead replicas billed as computeHA plans include a primary and two replicas

Serverless Postgres latency: what actually differs

For a warm database in the same region as your app, a simple query on any of these platforms returns in single-digit milliseconds. Three things change that number far more than the choice of vendor.

1. Cold starts

Only Neon scales to zero on paid plans. Neon suspends a compute after 5 minutes without activity by default, and its docs say it "reactivates automatically within a few hundred milliseconds." The first request after an idle period pays that delay; later requests do not. On Launch you can turn scale-to-zero off, and on Scale you can set the timeout anywhere from 1 minute to always on. Paid Supabase projects and all PlanetScale databases are always running, so they have no cold start. Supabase Free projects pause after a week of inactivity and must be restored by hand, which is an outage, not a cold start.

2. Connection setup from serverless functions

Opening a fresh TCP and TLS connection to Postgres costs several round trips, and serverless functions can open thousands of short-lived connections. All three vendors include a pooler for this case:

  • Supabase: use Supavisor in transaction mode on port 6543. The shared pooler does not support prepared statements in transaction mode, so disable them in your client library.
  • Neon: use the pooled connection string (the hostname with -pooler), or the @neondatabase/serverless driver, which runs queries over HTTP or WebSockets from edge runtimes that cannot hold TCP connections.
  • PlanetScale: connect through PgBouncer on port 6432 instead of 5432. It runs on the same node as the primary and supports transaction mode only.

3. Region and network distance

A database one continent away adds tens of milliseconds to every round trip, which dwarfs any vendor difference. Put the database in the same cloud region as your functions. If you need low-latency reads across regions, Neon and Supabase sell read replicas as extra compute, and PlanetScale HA plans include two replicas.

Real monthly bills for three workloads

These are estimates from list prices in AWS us-east-1, not invoices. Assumptions are stated so you can rescale them.

1. Side project: under 0.5 GB of data, light traffic

  • Neon Free: $0. 100 CU-hours per project covers about 400 active hours a month at 0.25 CU, and the compute sleeps when idle.
  • Supabase Free: $0, as long as the project is used at least once a week; otherwise it pauses.
  • PlanetScale: $5/month for a single-node PS-5 (1/16 vCPU, 512 MiB).

2. Production app: always on, about 4 GB of RAM, 20 GB of data, 200 GB egress

Cost lineNeon LaunchSupabase ProPlanetScale Postgres
Plan or base fee$0$25Included in instance price
ComputeAbout $77 (1 CU, 4 GB RAM, 730 hours at $0.106)$60 Medium (4 GB RAM), less $10 credit$28 PS-40 arm64 single node, or $83 HA
Storage$7 (20 GB at $0.35)$1.50 (12 GB over 8 GB at $0.125)10 GB included; 10 GB at the region rate
Egress$0 (within 500 GB)$0 (within 250 GB)100 GB included; 100 GB at the region rate
Estimated monthly totalAbout $84About $77From $28 single node or $83 HA, plus overages

The instances are matched on memory, not CPU: PlanetScale PS-40 has 1/2 vCPU, while a Neon CU is 1 vCPU. If your app is idle half the day and you leave scale-to-zero on, Neon's compute line falls to about $39. Supabase's Pro price also covers auth for 100,000 monthly active users, file storage, and realtime, which you would pay for separately with Neon or PlanetScale.

3. Preview databases: 20 pull requests a month, each branch kept 7 days

  • Neon Launch: roughly $5 to $15. Branches are copy-on-write, so storage is shared until data diverges. If each branch runs 10 active hours at 0.25 CU, compute is about $5.30; with more than 10 branches alive at once, extras cost $1.50 per branch-month.
  • Supabase: about $45. Each branch costs $0.01344 per hour, so 168 hours is about $2.26 per branch.
  • PlanetScale: development branches exist, but the Postgres pricing docs did not list a per-branch price when we checked. Confirm in the dashboard before budgeting.

Where each option fits (and where it does not)

PlatformBest forWhere it loses
NeonServerless and edge apps, side projects, preview database per pull request, workloads idle much of the dayLatency-sensitive first requests after idle (unless you disable scale-to-zero); always-on workloads, where per-hour compute costs more than a fixed instance; no bundled auth or storage
SupabaseFull-stack apps that want Postgres, auth, storage, realtime, and APIs from one vendorCompute does not autoscale; per-hour branching gets expensive with many preview branches; Free projects pause after a week idle
PlanetScaleAlways-on production databases that need replicas, predictable instance pricing, local-NVMe Metal clusters, or MySQL sharding with VitessNo free tier; no scale-to-zero, so idle databases still cost money; storage and egress overages are priced per region rather than listed as one flat rate

No platform wins every row. Neon is the best default for serverless Postgres and the cheapest for spiky or idle workloads. Supabase gives the most per dollar if you would otherwise buy auth and storage separately. PlanetScale is the cheapest way to get always-on HA Postgres with two replicas, and the only one of the three that offers MySQL, but it costs money from day one.

How the platforms differ under the hood

Supabase runs standard Postgres on a fixed-size instance and layers PostgREST APIs, GoTrue auth, Realtime, Storage, and Deno-based Edge Functions on top. Row Level Security policies can read the signed-in user with auth.uid(), so access control lives in the database:

-- Supabase RLS: users can only read their own orders
create policy "Users read own orders"
  on orders for select
  using (auth.uid() = user_id);

Neon separates compute from storage. Compute nodes are stateless, so they can autoscale within a range and suspend when idle, and branches share storage pages with their parent until written to. Neon's serverless driver runs over HTTP, which suits edge runtimes:

import { neon } from '@neondatabase/serverless';

const sql = neon(process.env.DATABASE_URL);

// Works in Cloudflare Workers, Vercel Edge, Deno Deploy
const products = await sql`
  SELECT id, name, price FROM products
  WHERE category = ${category}
  ORDER BY created_at DESC LIMIT 20
`;

PlanetScale sells instance-sized clusters. Postgres runs on network-attached storage (the PS-* plans) or on local NVMe (Metal plans, from $50/month for M-10 up to multi-thousand-dollar clusters). Its MySQL product runs on Vitess, which shards data across nodes and starts at $39/month for a three-node PS-10. Database branching and deploy requests for non-blocking schema changes remain PlanetScale's signature workflow on Vitess.

Frequently asked questions

Which is fastest: Supabase, Neon, or PlanetScale?

Query latency on all three is dominated by the distance between your app and the database region, not by the vendor. The differences that do matter are cold starts and connection setup. Neon suspends idle compute after 5 minutes by default and wakes it in what Neon describes as a few hundred milliseconds; you can disable that on paid plans. Supabase paid projects and every PlanetScale database stay running, so there is no cold start. For serverless functions, use each vendor's pooler: Supabase Supavisor transaction mode on port 6543, Neon's -pooler endpoint, or PlanetScale's PgBouncer on port 6432.

Which is cheapest: Supabase, Neon, or PlanetScale?

For a side project, Neon Free and Supabase Free both cost $0, and PlanetScale's cheapest Postgres database is $5/month (PS-5, single node). For an always-on production database with about 4 GB of RAM, the October 2026 list prices come to roughly $84/month on Neon Launch, $77/month on Supabase Pro with a Medium compute add-on, and $28/month single-node or $83/month three-node HA on PlanetScale PS-40 (arm64), before PlanetScale's storage and egress overages.

Does PlanetScale still only support MySQL?

No. PlanetScale now sells PlanetScale Postgres alongside its original Vitess-based MySQL product. Postgres plans start at $5/month for a single node (PS-5) and $15/month for three-node high availability. The Vitess MySQL HA plans start at $39/month. PlanetScale has had no free tier since April 2024.

Does Neon have cold starts?

Yes, when scale-to-zero is on. Neon suspends a compute after 5 minutes of inactivity by default and reactivates it automatically within a few hundred milliseconds, according to Neon's documentation. Scale-to-zero cannot be disabled on the Free plan; it can be disabled on Launch and configured from 1 minute to always on with Scale.

Is Supabase or Neon better for a Next.js app?

Choose Supabase if you also need authentication, file storage, and realtime subscriptions, because they are included in the $25/month Pro plan. Choose Neon if you only need Postgres and want instant copy-on-write branches for preview deployments and compute that scales to zero when idle. Both work with Prisma, Drizzle, and other standard Postgres tooling.

When should I pick PlanetScale over Neon or Supabase?

Pick PlanetScale when you need an always-on production database with replicas included, predictable instance pricing, or a path to very large scale through Metal (local NVMe) clusters or Vitess sharding on MySQL. It is a weaker fit for hobby projects, because there is no free tier, and for teams that want auth, storage, and APIs bundled with the database.

Start with Supabase · Try PlanetScale · Get started with Neon