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.
Turso and Postgres are both relational databases. These are the five differences that determine which one fits your application.
Turso's architecture is optimized for running thousands to millions of isolated databases, each lightweight and independently addressable.
An idle Turso database costs only storage. No running compute clock when nobody is querying. Postgres requires at least one process to stay alive.
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.
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.
When you have millions of inactive tenant databases, paying per-database compute is untenable. Turso charges storage only for databases that are idle.
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.
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.
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
Founder, Kin
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.
| Feature | Turso | Postgres |
|---|---|---|
| Architecture | Many databases, one per user/agent/tenant | One shared database per application |
| Primary model | SQLite-compatible (libSQL) | PostgreSQL |
| Concurrency and transactions | Optimistic concurrency, ACID per database | MVCC, full ACID |
| Use case | Multi-tenant, edge, local-first, per-user isolation | Complex queries, rich extensions, large shared datasets |
| Edge deployments | Yes, Workers, Deno, mobile, browser | No, requires server process |
| Scale model | Scale out: millions of isolated databases | Scale up: bigger instance + read replicas |
| Extensions | Limited (FTS, vector built-in) | Rich ecosystem (PostGIS, pgvector, etc.) |
| Embedded / local-first | Yes, embedded sync and offline writes | No |
| Hosting model | Turso Cloud (managed) or self-host | Self-host or managed (Supabase, Neon, RDS, etc.) |
| Per-database creation time | Milliseconds via API | Minutes (new instance or schema provisioning) |
| Per database/tenant billing | Storage only when idle | Compute always running |
| SQL dialect | SQLite | PostgreSQL |
The architecture you choose now determines the ceiling you hit later.
Choose Turso if:
Choose Postgres if:
Still not sure? Try the many-database model for free. 100 databases on the Starter plan.
Start with 100 free databases, or talk to the team about migrating from Postgres.