Monday, June 8, 2026
jynlab

notes on building, judging, and selling small software

Case Study · Build-to-Exit

Supabase vs Neon vs PlanetScale vs Turso: The Solo Builder's Database Guide

Your database choice outlasts every other decision. Supabase, Neon, PlanetScale, Turso, and D1 compared by free tier, engine, and when to use each.


Your database choice outlasts every other decision. Framework, hosting, even language can change. The database stays.

The short version
  • Supabase: Postgres + auth + storage + realtime in one. Free tier generous. The default for vibe coders.
  • Neon: Serverless Postgres, auto-scaling, branching. Free tier with 0.5GB storage. Best for serverless deploys.
  • PlanetScale: MySQL-compatible, branching, zero-downtime schema changes. Removed free tier in 2024. Starts $39/month.
  • Turso: SQLite at the edge (libSQL). Free 9GB. Best for read-heavy, globally distributed apps.
  • D1 (Cloudflare): SQLite on Cloudflare's edge. Free 5GB. Best if already on Cloudflare Workers.
  • Recommendation: Supabase if you want batteries-included. Neon if you want just Postgres, serverless.

The real question: database or backend?

Most comparisons treat these tools as interchangeable. They are not. The first question is whether you want a database or a backend.

Supabase is backend-as-a-service. You get a Postgres database, authentication, file storage, realtime subscriptions, and auto-generated APIs. One dashboard, one set of credentials, one billing relationship. For a solo builder, that is a meaningful reduction in surface area.

Neon, PlanetScale, Turso, and D1 are databases. You connect them to your app and manage auth, storage, and other services yourself. More composable, less opinionated, more to set up and maintain.

If you are building an MVP and want to move fast, the backend question matters more than the latency comparison.

Postgres + Backend

Supabase: batteries-included Postgres

Free tier: 500MB storage, 2 projects, 50,000 MAU on auth. Paused after 1 week of inactivity on the free plan, but projects resume on first request.

Best at: Everything you need to ship an MVP. Auth (email, OAuth, magic link), database with Row Level Security, file storage, realtime subscriptions, and Edge Functions. The dashboard is well-designed. The client SDK handles auth and data in one import. For a solo builder, it removes the most decisions.

Limitation: Postgres-specific. If you want to scale reads with edge replication or need SQLite-level simplicity, Supabase is heavier than you need. Less serverless-native than Neon; connection pooling requires PgBouncer or the Supabase connection pooler.

Use Supabase when: you are building a full-stack app and want auth, storage, and database handled in one place.

Serverless Postgres

Neon: serverless Postgres with branching

Free tier: 0.5GB storage, 190 compute hours per month. Auto-scales to zero when idle, which keeps costs low for low-traffic apps and dev environments.

Best at: Serverless and edge deploys (Vercel Edge, Cloudflare Workers via HTTP). Database branching is the standout feature: you can branch your database the same way you branch your code, giving you isolated dev and staging environments without running multiple databases. Standard Postgres, so any Postgres tooling works.

Limitation: Just a database. No auth, no storage, no realtime. You wire everything else yourself. Cold starts are measurable on the free tier if the database has been idle.

Use Neon when: you are deploying to a serverless environment and want clean database branching without the full Supabase stack.

MySQL with Branching

PlanetScale: the no-free-tier option

Pricing: Scaler plan at $39/month. Free tier was removed in March 2024. The Hobby plan (previously free) was discontinued. There is no longer a free entry point.

Best at: Zero-downtime schema changes and database branching for MySQL workloads. The Vitess-based architecture handles large-scale sharding well. Branching lets you test schema changes in isolation before merging to production.

Limitation: MySQL, not Postgres. The ecosystem and tooling are narrower in 2026. No free tier makes it a hard sell for an MVP stage project. The $39/month is the starting point, not a ceiling.

Use PlanetScale when: you are at scale, your team knows MySQL, and the branching workflow is worth $39/month from day one.

SQLite at the Edge

Turso: libSQL with global edge replication

Free tier: 9GB storage, 500 databases, 1 billion row reads per month. The most generous free tier in this comparison.

Best at: Read-heavy apps where latency matters globally. Turso replicates your SQLite database to edge locations, so reads happen close to your users. Works well with embedded databases in edge runtimes. The libSQL fork of SQLite adds HTTP access and replication on top of the SQLite format.

Limitation: SQLite semantics, not Postgres. Smaller ecosystem, fewer managed integrations, and weaker support for complex write workloads. If your app is write-heavy or transactional, Turso is not the right fit.

Use Turso when: your app is read-heavy, your users are globally distributed, and you want SQLite's simplicity with edge replication.

SQLite on Cloudflare

D1: Cloudflare's built-in database

Free tier: 5GB storage, 25 million row reads per day, 50,000 row writes per day. Integrated directly into the Cloudflare Workers ecosystem.

Best at: Apps already running on Cloudflare Workers or Pages. Zero latency to your compute layer. No connection strings to manage. Bindings connect your Worker to D1 directly.

Limitation: Cloudflare-only. If you ever move off Workers, you move off D1. Some features are still early-stage. SQLite means the same ecosystem constraints as Turso.

Use D1 when: your entire stack is on Cloudflare Workers and you want the simplest possible integration.

Comparison (mid-2026)

ToolEngineFree tierPaid startsBest for
SupabasePostgres500MB, 2 projects$25/moFull-stack MVP
NeonPostgres0.5GB, 190 compute hrs$19/moServerless deploys
PlanetScaleMySQL (Vitess)None$39/moScale, MySQL teams
TursoSQLite (libSQL)9GB, 500 DBs$29/moRead-heavy, global
D1SQLite5GBWorkers paid planCloudflare-only stacks

The decision framework

Do you want auth + storage bundled in? ├── Yes │ └── Supabase (Postgres, batteries-included) └── No ├── Are you on Cloudflare Workers? │ └── Yes → D1 (SQLite, zero-config binding) ├── Is your workload read-heavy and globally distributed? │ └── Yes → Turso (libSQL, edge replication) ├── Do you need serverless Postgres with branching? │ └── Yes → Neon (serverless Postgres) └── Are you at scale with a MySQL team? └── Yes → PlanetScale ($39/mo, no free tier)

What jynlab uses

jynlab runs on Supabase. Auth, database, and storage in one dashboard. For a solo builder building fast, the reduction in setup overhead is worth more than the cost difference. Row Level Security handles access control at the database layer, which means the client SDK can query directly without a custom API layer for most operations.

D1 handles one specific use case on the Cloudflare Workers layer where SQLite bindings are the most direct option. The two coexist without conflict.

FAQ

Is Supabase free tier enough for an MVP?

Yes. 500MB storage, 2 projects, and 50,000 MAU on auth. Most MVPs never hit these limits. The one caveat is the inactivity pause on free projects, which resumes on the next request but adds a cold-start delay.

Should I use MySQL or Postgres in 2026?

Postgres. Broader ecosystem, better JSON support, more hosting options, and stronger community momentum. MySQL only if PlanetScale's branching and Vitess sharding are critical requirements and you are already at a scale that justifies $39/month.

Is Turso good for a SaaS?

For read-heavy apps with global users, yes. The free tier is generous and edge replication is a real advantage. For write-heavy transactional apps, the SQLite semantics and smaller ecosystem are a liability. Stick with Postgres for those.

Can I migrate from Supabase to Neon later?

Yes, both are Postgres. A pg_dump and restore moves the database cleanly. The auth and storage layers do not migrate automatically. Supabase Auth is a managed service; if you move to Neon, you need to replace auth separately. Plan for that before you commit to either.

Before you pick a database

The database is Step 4. Validation is Step 0. Make sure the niche is worth building into before you wire up a schema.

Validate your idea free →

Get tool guides and teardowns in your inbox