Serverless Databases: Neon vs Supabase vs Turso [2026]
Bottom Line
Pick Neon when database branching is the center of your workflow, Supabase when you want Postgres plus backend primitives in one managed stack, and Turso when low-latency SQLite, offline work, or many small edge databases matter more than Postgres compatibility.
Key Takeaways
- ›Neon is the sharpest fit for branch-heavy serverless Postgres workflows.
- ›Supabase is the only option here bundling Auth, Storage, Realtime, and Edge Functions around Postgres.
- ›Turso is SQLite/libSQL, not Postgres, and wins for edge, offline, and database-per-tenant designs.
- ›Free tiers diverge fast: Neon includes 0.5 GB per project, Supabase 500 MB per project, Turso 100 DBs and 5 GB total.
Checked against official docs and pricing on May 10, 2026, these three platforms now sit in clearly different lanes. Neon is serverless Postgres built around branching and autoscaling, Supabase is a full backend platform wrapped around Postgres, and Turso is SQLite/libSQL optimized for edge, offline, and many-database architectures. Use this cheat sheet when you need a fast pick, the right CLI command, or a safe migration starting point.
- Neon favors branch-heavy Postgres workflows with pooled connections and autoscaling.
- Supabase adds platform primitives that can replace several extra services in one stack.
- Turso changes the database model entirely: think edge SQLite and replication, not hosted Postgres.
- Free plans, local tooling, and branching semantics differ enough that the wrong pick creates workflow drag fast.
| Dimension | Neon | Supabase | Turso | Edge |
|---|---|---|---|---|
| Engine | Managed Postgres | Managed Postgres plus platform services | SQLite/libSQL | Depends on engine needs |
| Best fit | Preview DBs, branch-heavy apps, serverless Postgres | Full product backends with Auth, Storage, Realtime, Functions | Edge, offline, sync, database-per-user or per-agent patterns | Split |
| Branching model | First-class database branches with data | Preview or persistent branches; default is separate environment | Create a new DB from another DB or point in time | Neon |
| Local development | Cloud-first; local proxy and localhost workflows exist | Full local stack via CLI and Docker | SQLite file, turso dev, or remote DB | Turso |
| Built-in backend features | Database-centric; auth now exists but platform scope is narrower | Auth, Storage, Realtime, Edge Functions | Database-focused | Supabase |
| Connection style | Direct or pooled Postgres; serverless driver over HTTP/WebSockets | Direct or pooler for Postgres; platform APIs alongside DB | libSQL remote, local file, or local dev server | Split |
| Free tier signal | 100 projects, 100 CU-hrs/project, 0.5 GB/project | 500 MB DB, paused after 1 week inactivity, no free branching | 100 DBs, 5 GB total storage, row-based quotas | Use case dependent |
Pick the Right Lane
Bottom Line
Use Neon when you need branchable serverless Postgres, Supabase when you want a managed backend around Postgres, and Turso when edge latency, offline behavior, or many tiny databases outweigh Postgres compatibility.
The biggest mistake is treating these as interchangeable. Two are Postgres products with different opinions about developer workflow, while one is a distributed SQLite/libSQL system that unlocks a different app architecture.
Choose Neon when:
- You want Postgres previews that behave like real database branches.
- You care more about database workflow than bundled backend services.
- You need autoscaling, pooled connections, and fast branch creation in CI or preview deploys.
Choose Supabase when:
- You want one platform for database, auth, file storage, realtime, and edge functions.
- You like a strong local workflow with supabase init and supabase start.
- You want platform features to remove separate vendors early in a product build.
Choose Turso when:
- You want SQLite/libSQL close to users, devices, browsers, or agents.
- You expect many small databases instead of one large shared multi-tenant cluster.
- You need lightweight local development, point-in-time cloning, or replication-oriented edge patterns.
Install, Auth, and Branch
These are the shortest official paths to a useful first session in each toolchain.
Neon
brew install neonctl
neon auth
neon me
neon branches list
neon branches create --name feature/users --parent production
neon branches reset development --parent
Supabase
npx supabase init
npx supabase start
supabase link --project-ref <project-ref>
supabase db pull
supabase db push
Turso
brew install tursodatabase/tap/turso
turso auth login
turso db create my-db
turso db show my-db
turso db shell my-db "SELECT 1"
turso db tokens create my-db --read-only
Commands by Purpose
Use the live filter to narrow the table by vendor, task, or flag.
| Purpose | Tool | Command | Why it matters |
|---|---|---|---|
| Authenticate | Neon | neon auth | Browser-based CLI auth for project access. |
| Start local stack | Supabase | supabase start | Runs the full local Supabase stack. |
| Authenticate | Turso | turso auth login --headless | Useful for WSL or CI-friendly login. |
| Create branch | Neon | neon branches create --name preview/api --parent production --cu 0.5-3 | Creates a branch with an autoscaling compute range. |
| Create branch | Supabase | supabase branches create preview-auth --persistent --with-data | Creates a long-lived preview branch and clones data when needed. |
| Clone from point in time | Turso | turso db create review-db --from-db prod-db --timestamp 2026-05-10T09:00:00Z | Fast review DB from a known restore point. |
| Generate types | Supabase | supabase gen types --linked --lang typescript | Produces app-safe types from the linked project. |
| Set secrets | Supabase | supabase secrets set --env-file .env.production | Loads Edge Function secrets from a file. |
| Pick region | Turso | turso db locations --show-latencies | Shows candidate locations and latency from your machine. |
| Dump schema or data | Turso | turso db shell my-db .dump > dump.sql | Portable dump for local rebuilds or review. |
| Push config | Supabase | supabase config push | Applies local config.toml settings remotely. |
| Reset branch | Neon | neon branches reset development --parent | Re-syncs a child branch from its parent. |
Grouped snippets
- Local-first work:
supabase init,supabase start,turso dev --db-file local.db - Preview environments:
neon branches create,supabase branches create,turso db create --from-db - Deployment and drift control:
supabase db pull,supabase db push,supabase config push - Access control:
turso db tokens create --read-only, pooled or direct Neon connection strings, Supabase project linking and secrets
Configuration and Security
Configuration is where these platforms reveal their real personality. Neon wants you to think in connection strings and branches, Supabase wants project config plus platform secrets, and Turso wants you to choose between local file, local dev server, and remote database URLs.
Neon
- Use pooled connections when your app creates many concurrent connections.
- Use the serverless driver for JS and edge or serverless runtimes.
- Keep branch names environment-specific so connection routing stays obvious.
DATABASE_URL='postgresql://USER:PASSWORD@HOST/DB?sslmode=require'
import { neon } from '@neondatabase/serverless';
const sql = neon(process.env.DATABASE_URL);
const rows = await sql`SELECT * FROM users`;
Supabase
- Treat
supabase/config.tomlas code and push it deliberately. - Link local projects before using remote database commands.
- Generate types after schema changes instead of hand-maintaining them.
supabase link --project-ref <project-ref>
supabase db pull
supabase gen types --linked --lang typescript > database.types.ts
supabase config push
Turso
- Decide first whether development should use a local SQLite file, turso dev, or the hosted database.
- Use read-only database tokens for app clients that never write.
- Pick locations intentionally when latency matters more than a single primary region.
turso dev --db-file local.db
turso db locations --show-latencies
turso db tokens create my-db --read-only --expiration 7d
Advanced Usage
- Neon: Branch creation supports --cu as a fixed size like 2 or an autoscaling range like 0.5-3. That is useful when preview databases need burst capacity without a permanently larger footprint.
- Neon: The serverless driver is designed for HTTP or WebSocket access from serverless and edge runtimes, which makes it a cleaner fit than forcing raw TCP everywhere.
- Supabase: Preview branches are separate environments with their own credentials and services. Treat them as app environments, not just schema diffs.
- Supabase: Branch usage is billed as branch usage, and preview branches are not covered by the project spend cap. Cleanup discipline matters.
- Turso: Branching is operationally just database creation from another database or from a point in time. That makes it simple, but it also means your merge workflow usually lives in migrations and application release steps.
- Turso: Row-read and row-write billing means query shape matters. A query can scan more rows than it returns, so indexing and access patterns affect cost directly.
Live Filter and Keyboard Shortcuts
If this page becomes your operational reference, keyboard speed matters more than memorizing every subcommand.
| Shortcut | Where | Use |
|---|---|---|
Ctrl+R | Shell | Reverse-search command history for earlier CLI invocations. |
Tab | Shell | Autocomplete commands, flags, and paths. |
Ctrl+A | Shell | Jump to the start of the command line. |
Ctrl+E | Shell | Jump to the end of the command line. |
Ctrl+W | Shell | Delete the previous word when fixing long flag sequences. |
Ctrl+U | Shell | Clear from cursor to start of line. |
Ctrl+L | Shell | Clear the terminal while keeping your session alive. |
!! | Bash | Repeat the previous command after a small edit, often with sudo if needed. |
Official docs checked
- Neon pricing and Neon CLI branches
- Neon serverless driver and Neon connection guide
- Supabase pricing and Supabase CLI getting started
- Supabase branching and Supabase CLI reference
- Turso pricing and Turso authentication
- Turso db create, Turso db shell, Turso db tokens create, and Turso local development
Frequently Asked Questions
Which is best for preview databases in 2026: Neon, Supabase, or Turso? +
Can Turso replace Supabase or Neon for a typical Postgres app? +
Does Supabase still make sense if I only need Postgres? +
What is the lightest local development workflow among the three? +
turso dev. Supabase is the heaviest locally because it runs a fuller stack in containers. Neon stays more cloud-first, though its local connection tooling reduces branch-switching friction.Get Engineering Deep-Dives in Your Inbox
Weekly breakdowns of architecture, security, and developer tooling — no fluff.