Open any "serverless database" roundup and you get the same trio lined up like cereal boxes: Neon, Supabase, Turso — pick one. It's a tidy comparison and it quietly misleads, because these three don't sit on the same shelf. Two of them answer one question; the third answers a completely different one. Choosing well means asking two questions in order, not ranking three products.

Neon and Supabase: database, or backend?#

Neon and Supabase both run Postgres. That's where the similarity ends.

Neon is a database. It's serverless Postgres with two headline tricks: it scales compute to zero when idle (and, crucially, stays reachable — the next query wakes it), and it offers instant branching, so you can fork your entire database like a git branch for a preview deploy or a test run. It's Postgres and nothing but Postgres — you bring your own auth, your own functions, your own everything-else. That leanness is the point: it slots cleanly into a Vercel-style workflow and gets out of the way. (Databricks acquired Neon in 2025 to make Postgres the storage layer for its agent platform; the product still ships independently, and its August-2025 pricing cut storage roughly 80%.)

Supabase is a backend. It's Postgres plus authentication, realtime subscriptions, file storage, and edge functions, bundled into one platform with a dashboard. If you're building an app and don't want to assemble auth and a realtime layer yourself, Supabase hands you the whole backend on day one. If you already have those pieces — or want to own them, the way we've argued about auth build-vs-buy — most of Supabase is weight you're not using.

So the first question isn't "Neon or Supabase," it's "do I want a database or a whole backend?" Answer that and the choice makes itself.

One practical tell for side projects: Neon's free tier scales to zero but keeps the project reachable. Supabase's free tier pauses a project after about seven days of inactivity — which effectively takes your app down until someone manually resumes it. For a hobby project that gets sporadic traffic, that difference is the difference between "loads slowly the first time" and "appears broken."

Turso is on a different axis entirely#

Here's the catch the listicle hides: Turso isn't a Postgres competitor at all. It runs libSQL, an open-source fork of SQLite, and its whole architecture points somewhere Neon and Supabase don't go.

Two features define it. Embedded replicas: your application holds a local copy of the database, synced from a primary. Reads hit local SQLite and return in microseconds; writes go to the remote primary. And a database-per-tenant model: creating a database is cheap enough that you can give every user, or every agent, their own isolated database rather than a row in a shared table.

That combination wins a specific shape of product: per-user or per-agent apps — a notes app, a personal CRM, an agent-per-user tool — where each tenant has low write concurrency and benefits from hard isolation. Turso owns that shape. It's a poor fit where Neon and Supabase shine: SQLite is single-writer-per-database, it lacks chunks of the Postgres ecosystem (partial indexes, materialized views, ranked full-text search, pgvector), and its tooling is younger. It isn't a Postgres you can swap in; it's a different data model.

The two-question decision#

Stop ranking three products. Ask two questions, in order:

  1. Do I want a database or a whole backend? A database → Neon. A backend with auth, realtime, and storage already wired up → Supabase. Both are Postgres, so you keep pgvector, the full ecosystem, and one shared relational store.
  1. Shared Postgres, or one small database per tenant? If your product is fundamentally per-user or per-agent — isolated state, read-heavy, modest writes each — that's the question Turso answers, and Postgres answers it awkwardly (schema-per-tenant, row-level security, connection sprawl).

For an AI product specifically, question two is the one to sit with. If every agent needs private, isolated state and fast local reads, Turso's model is built for exactly that. If your agents share a relational store and you want embeddings living next to your app data, stay on Postgres and pick Neon or Supabase by question one.

The three were never interchangeable. Two are a fork in one road; the third is a different road. Figure out which road you're on first, and the database picks itself.