# Turso vs Cloudflare D1 in 2026

Last updated: 2026-11-10

Choose **Turso** when the database has to answer apps running anywhere, or when your app needs a local copy of the data through embedded replicas. Choose **Cloudflare D1** when your code already runs on Cloudflare Workers and you want the database bound to it, with an EU jurisdiction available at creation. If you're building for Workers but want the whole stack with a European company, **Eurobase** reads the same D1 config on European infrastructure.

Both are SQLite underneath, so the SQL you write is mostly the same. The differences are in how your code reaches the database, what you pay as usage grows, and where the data sits.

## Turso and D1 at a glance

| Platform | How your app connects | European location | Free plan | First paid step | Point-in-time restore |
|---|---|---|---|---|---|
| Turso | Network client from any app, or an embedded replica | AWS EU West, Ireland | 100 databases, 5 GB, 500 million rows read a month | Developer at $4.99 a month billed yearly | 1 day on Free, 10 days on Developer |
| Cloudflare | Binding inside Cloudflare Workers | EU jurisdiction, or a Western or Eastern Europe location hint | 10 databases, 5 million rows read a day | Workers Paid at $5 a month | 7 days on Free, 30 days on Paid |
| Eurobase | Binding inside Eurobase Workers | European infrastructure run by Scaleway, a French provider | Free workspace plan, database quotas not documented | €10 a month + VAT | Not documented |

Prices are from each provider's own page, checked on 10 November 2026.

## What actually separates them

- **Where your code runs.** D1 is built around a Workers binding, so it suits apps that already live on Cloudflare. Turso gives you a database URL that a container, a VM or a laptop can all reach over the network.
- **Reads close to the app.** Turso's embedded replicas keep a local SQLite file in your app and sync it with the remote primary, so reads come from local disk while writes go to the primary. D1 offers read replicas in every available region through its Sessions API, which Cloudflare still labels beta.
- **What the bill counts.** Both charge by rows read, rows written and storage. D1 has no compute charge and includes 25 billion rows read on Workers Paid. Turso adds a charge for syncs and only bills overages once you turn them on.
- **How many databases.** Turso's paid plans list unlimited databases. D1 includes 100,000 per account on Workers Paid and charges $0.10 a month for each one above that, even when it's empty.
- **Where the data lives.** Turso lists one European location, in Ireland on AWS. D1 can restrict a database to the EU, but only when you create it.

## 1. Turso

Turso is a managed SQLite service from a company that describes itself as technically San Francisco based and fully remote. On 2 October 2026 it announced that Supabase is acquiring it. Turso says the platform keeps running, its database stays open source, and Postgres through Supabase becomes the path for apps that outgrow SQLite.

Turso describes its engine as open source and SQLite-compatible, with concurrent writes and built-in sync. The cloud service adds branching and point-in-time restore at no extra usage cost, and paid plans can bring back a deleted database. The locations reference in its API docs names six places, all on AWS: Tokyo, Mumbai, Ireland, Virginia, Ohio and Oregon.

- **Best for:** apps outside Cloudflare, designs with one database per user or per agent, and apps that benefit from a local replica.
- **Price:** Free includes 100 databases, 5 GB of storage, 500 million rows read and 10 million rows written a month. Developer costs $4.99 a month billed yearly, with 9 GB, 2.5 billion rows read and 25 million rows written. Scaler is $24.92 a month billed yearly. Extra storage, reads, writes and syncs are billed automatically once you enable overages.
- **What it lacks:** a location in continental Europe. Ireland on AWS is the only European entry, and the company isn't based in the EU.

## 2. Cloudflare D1

D1 is Cloudflare's SQLite database for Workers. You declare it in your Wrangler config, query it through the binding, and keep schema changes in a migrations folder. Time Travel is always on and lets you restore to any minute in the last 30 days on Workers Paid or 7 days on Free, at no extra cost.

Residency is set with `--jurisdiction=eu` at creation time, which keeps the database running and storing its data inside the European Union. The jurisdiction can't be added later, and Cloudflare's docs say Workers may still reach a jurisdiction-bound database from anywhere in the world. A location hint such as `weur` places the primary in Western Europe without that restriction.

- **Best for:** apps already on Workers that want a database with no connection management and no separate bill.
- **Price:** on Workers Free you get 10 databases, 5 GB across all of them, and a daily allowance of 5 million reads and 100,000 writes counted in rows. Workers Paid starts at $5 a month and includes 25 billion rows read, 50 million rows written and 5 GB of storage a month. Above that it's $0.001 per million rows read, $1 per million rows written and $0.75 per GB-month.
- **What it lacks:** room for big databases. A single D1 database is capped at 10 GB on Workers Paid and 500 MB on Free, so a larger dataset means sharding it yourself.

## 3. Eurobase

Behind Eurobase is a business registered in Warsaw, Poland, and your apps sit on European infrastructure run by Scaleway, a French provider. Apps on V8 isolates declare SQLite databases with `d1_databases` in their Wrangler config, the same way they do on Cloudflare. Every deployment of a project, rollbacks included, uses the same data and schema. When a deployment goes live, the numbered SQL files in its migrations folder are applied one by one; a failing file stops the deployment and leaves the earlier one live.

It's a partial answer to this comparison. A Eurobase database belongs to one project and is read by that project's Workers, so it replaces D1 for a Workers app but not Turso for an app hosted elsewhere.

- **Best for:** Next.js, Astro, Hono or plain Workers apps that use D1 and want the host, the company and the data in Europe.
- **Price:** a Free plan, then Starter at €10 or Pro at €20 a month + VAT for the workspace. Usage isn't billed today: work over a limit is refused, apps on V8 isolates and Functions pause until the monthly reset, and containers and static sites keep serving.
- **What it lacks:** a way for apps on other hosts to query the database, the other Cloudflare bindings such as KV, R2, Durable Objects and queues, a managed Postgres, MySQL or Redis service, and preview deployments. ISO 27001 and SOC 2 certification is being worked on and isn't held yet.

The [Cloudflare Workers migration guide](/docs/guides/migrate-from-cloudflare-workers) walks through moving a Worker with its D1 bindings, and [Eurobase vs Cloudflare](/compare/cloudflare) compares the two platforms feature by feature.

## How to choose

1. If any part of your app runs outside Cloudflare Workers, start with Turso. D1 and Eurobase databases are tied to Workers on their own platform.
2. If you're on Workers and happy with Cloudflare, keep D1 and create new databases with the EU jurisdiction when residency matters.
3. If you're on Workers and want a European company running the host and the data, move the same D1 config to Eurobase.
4. If you need thousands of small databases, compare Turso's unlimited count with D1's $0.10 a month above 100,000.
5. If writes from many services keep growing, look at Postgres instead. [SQLite in production](/i/sqlite-in-production) covers where that line usually falls.

## Frequently asked questions

### Is Turso faster than Cloudflare D1?

It depends on where your code runs. Inside a Worker, D1 is reached through a binding with no connection to manage. Outside Cloudflare, a Turso embedded replica serves reads from a local file, so reads skip the network round trip. Writes go to a primary on both, so measure from your own region.

### Can I use Cloudflare D1 from outside Workers?

D1 is designed to be queried from Workers through a binding, and Cloudflare's own docs focus on that path. If your backend runs on a container platform or a VM, Turso or Postgres is the more natural fit.

### Is Cloudflare D1 GDPR compliant?

D1 lets you create a database in the EU jurisdiction so it runs and stores data only in the European Union. Cloudflare remains a US company and Workers can reach the database from anywhere, so your DPA and transfer review still apply. For why the provider's home country matters as well as the region, read [EU region vs EU company](/i/eu-region-vs-eu-company-cloud-act).

### Does Turso have a region in Europe?

One: AWS EU West, in Ireland. Every other location in Turso's API reference is in the United States or Asia.

### What happens to Turso after the Supabase acquisition?

Turso says databases, APIs and workflows continue as before, that its database stays open source, and that deeper integration with Supabase is coming. If you'd rather look around anyway, [Turso alternatives](/i/turso-alternatives) and [serverless SQLite in Europe](/i/serverless-sqlite-europe) list other hosts.

## Sources

- [Turso](https://turso.tech/), [Turso pricing](https://turso.tech/pricing), [Turso locations](https://docs.turso.tech/api-reference/locations), [Turso embedded replicas](https://docs.turso.tech/features/embedded-replicas/introduction) and [About Turso](https://turso.tech/about)
- [Turso is joining Supabase](https://turso.tech/blog/turso-is-joining-supabase)
- [D1 pricing](https://developers.cloudflare.com/d1/platform/pricing/), [D1 limits](https://developers.cloudflare.com/d1/platform/limits/), [D1 data location](https://developers.cloudflare.com/d1/configuration/data-location/), [D1 Time Travel](https://developers.cloudflare.com/d1/reference/time-travel/) and [D1 read replication](https://developers.cloudflare.com/d1/best-practices/read-replication/)
- [Eurobase Workers docs](/docs/workers), [Migrate from Cloudflare Workers](/docs/guides/migrate-from-cloudflare-workers) and [Eurobase vs Cloudflare](/compare/cloudflare)
