Turso is joining Supabase to give every agent its own database Read the news →

Postgres gives you one powerful database. Turso gives you one for every user, agent and tenant.

Both are relational and both speak SQL. They are built for different shapes of application, and knowing which you are choosing matters. Here is where each one wins.

Five things that set Turso apart

Turso and Postgres are both relational databases. These are the five differences that determine which one fits your application.

A database for every user, agent and tenant

Turso's architecture is optimized for running thousands to millions of isolated databases, each lightweight and independently addressable.

Nothing to wake and nothing to pay for idle

An idle Turso database costs only storage. No running compute clock when nobody is querying. Postgres requires at least one process to stay alive.

Edge and device deployment

Turso runs on V8 isolates, Cloudflare Workers, and embedded in mobile apps. Postgres requires a server process and cannot run in-browser or on-device.

Hard isolation at the database level

Each tenant gets its own database, not just row-level security on a shared table. A bug in one tenant's query cannot affect another.

Edge databases only charge for storage

When you have millions of inactive tenant databases, paying per-database compute is untenable. Turso charges storage only for databases that are idle.

Two relational databases, two different shapes of application

Postgres and Turso are both relational databases. They are built for fundamentally different application shapes.

Turso

Turso is built for the many-database architecture. One database per user, agent, or tenant. Each database is a lightweight SQLite file, runs anywhere (server, edge, device), and costs only storage at rest. The platform API provisions databases in milliseconds and manages schema inheritance across thousands of them.

PostgreSQL

Postgres is built for one powerful, shared database. It shines for complex queries, rich extensions (PostGIS, pgvector, full-text search), and workloads that need ACID guarantees across large datasets. Managing many Postgres instances is operationally expensive, requiring connection poolers, replicas, and backups per instance.

Managing many Postgres instances can be complex. If you are already fighting against a managed Postgres cluster using row-level security as a tenancy boundary, that is the sign you need a different architecture.

Where Turso makes the difference

A database for every user, agent and tenant

Turso

Turso isolates at the database level. When a customer's data grows, their database grows with them, independent of every other customer. Bugs in one tenant's queries cannot affect another.

PostgreSQL

Postgres isolates at the row level (or schema level with per-schema tenancy). Row-level security is powerful but adds complexity as tenant count grows.

The database runs within your users' app

Turso

Turso supports embedded replication: the database runs on the device and syncs to the cloud. Reads are local, writes sync in the background. No round-trip to a server for every read.

PostgreSQL

Postgres is a server process. It cannot run in-browser or on-device. Every query requires a network connection to the server.

“We use Turso Cloud to power on-device AI with full privacy. With Turso's built-in vector search, all data stays local, so users get fast, private search without anything leaving their device.”

Simon Henriksen

Simon Henriksen

Founder, Kin

A boundary for every tenant

Turso

Each tenant database enforces hard isolation at the file level. There is no query that can accidentally JOIN across tenants. Isolation is structural, not policy-based.

PostgreSQL

Row-level security provides logical separation within a shared database. Misconfigured policies or missing WHERE clauses can expose data across tenants.

Side by side, row by row

FeatureTursoPostgres
ArchitectureMany databases, one per user/agent/tenantOne shared database per application
Primary modelSQLite-compatible (libSQL)PostgreSQL
Concurrency and transactionsOptimistic concurrency, ACID per databaseMVCC, full ACID
Use caseMulti-tenant, edge, local-first, per-user isolationComplex queries, rich extensions, large shared datasets
Edge deploymentsYes, Workers, Deno, mobile, browserNo, requires server process
Scale modelScale out: millions of isolated databasesScale up: bigger instance + read replicas
ExtensionsLimited (FTS, vector built-in)Rich ecosystem (PostGIS, pgvector, etc.)
Embedded / local-firstYes, embedded sync and offline writesNo
Hosting modelTurso Cloud (managed) or self-hostSelf-host or managed (Supabase, Neon, RDS, etc.)
Per-database creation timeMilliseconds via APIMinutes (new instance or schema provisioning)
Per database/tenant billingStorage only when idleCompute always running
SQL dialectSQLitePostgreSQL

Which shape is your application?

The architecture you choose now determines the ceiling you hit later.

Choose Turso if:

  • You provision a database per user, tenant, or AI agent
  • Your app needs to run on edge runtimes or mobile devices
  • You want offline reads and writes with cloud sync
  • You need hard data isolation, not just row-level security
  • Your tenants are small or idle most of the time

Choose Postgres if:

  • You run complex analytical queries across a single large dataset
  • You need rich Postgres extensions (PostGIS, full-text, etc.)
  • Your team is deeply invested in the Postgres ecosystem
  • Your application has one large shared database, not many small ones

Still not sure? Try the many-database model for free. 100 databases on the Starter plan.

By the kind of team you are

AI-native startups
TursoProvision a database per agent in milliseconds. Branch, roll back, and isolate without sharing state.
App/agentic platform teams
TursoOne database per end user, isolated at the file level, edge-deployable.
Local-first web developers
TursoEmbedded sync is first-class, not a hack on top of Postgres.
Mature data and business teams
PostgresComplex joins, rich extensions, and decades of tooling investment.
Database teams or infra-focused engineers
EitherTurso if you are building for scale-out. Postgres if you need the query planner and extension ecosystem.
Enterprise teams with existing Postgres
BothPostgres for the core, Turso for per-tenant or per-user isolation at the edges.

The questions the threads keep asking

Can you use Turso and Postgres together?
Yes. Many teams use Postgres for shared operational data and Turso for per-tenant or per-user isolated databases. The two complement each other.
Does Turso have the same consistency model as Postgres?
Turso is ACID-compliant per database. It does not support distributed transactions across databases. If your workload requires cross-tenant transactions, Postgres is the safer choice.
How do you run database migrations in Turso?
Turso uses a parent schema pattern: a parent database defines the schema, and all child databases inherit it. Schema changes propagate automatically to children.
Why not just use SQLite directly?
SQLite is single-writer, local only, and has no built-in replication or cloud sync. Turso adds concurrent writes, embedded replication, a cloud platform, and a management API.
Does Turso have vector search?
Yes. Turso has native vector search built into the database engine, with no extension required. It works on every Turso database, including embedded ones.

Try the many-database model on your own workload.

Start with 100 free databases, or talk to the team about migrating from Postgres.