01 — Ranking
The 7 best options, ranked
Neon
neon.tech
4.8Serverless Postgres that scales to zero, with database branching like Git.
- Best for
- Serverless and edge apps (Vercel, Cloudflare Workers) that need standard Postgres plus a separate database branch for each pull request.
- Free plan & limits
- 0.5 GB of storage per project and a monthly compute allowance per project (about 100 compute-unit hours). Compute suspends after 5 minutes idle and resumes in under a second on the next query. Branching is included, the restore window is short and no card is needed.
Supabase
supabase.com
4.7Postgres plus auth, file storage, realtime and auto-generated APIs in one project.
- Best for
- MVPs and side projects that want a full backend (login, uploads, row-level security) without writing a server.
- Free plan & limits
- 500 MB of database space, 1 GB of file storage, 5 GB of egress and 50,000 monthly active auth users. You get 2 active projects on shared compute. Projects are paused after 7 days without activity and must be restored manually. The free plan has no point-in-time recovery.
Cloudflare D1
developers.cloudflare.com
4.6Serverless SQLite that runs inside Cloudflare Workers.
- Best for
- Read-heavy apps already on Cloudflare Workers or Pages, such as content sites, directories and pSEO data.
- Free plan & limits
- 5 GB of total storage, up to 10 databases of 500 MB each, 5 million rows read and 100,000 rows written per day. Databases don't sleep. Time Travel restore covers the last 7 days. Daily limits reset at 00:00 UTC, and queries fail with an error once a limit is reached.
MongoDB Atlas (M0)
mongodb.com
4.4A free, permanent shared MongoDB cluster on AWS, GCP or Azure.
- Best for
- Document data models and learning MongoDB, with Atlas Search and Charts available.
- Free plan & limits
- 512 MB of storage on shared RAM and vCPU, up to 500 connections and about 100 operations per second. The free tier has no backups, one M0 cluster per project, and clusters inactive for a long time can be paused. Use it for prototypes, not production traffic.
Turso
turso.tech
4.3Hosted libSQL (a fork of SQLite) with replicas at the edge and support for many databases.
- Best for
- One database per tenant or per user, and local-first apps with embedded replicas.
- Free plan & limits
- About 5 GB of total storage, up to 100 databases, and monthly quotas of hundreds of millions of rows read and millions of rows written. Point-in-time restore covers a short window. No card is needed. Check current quotas on the pricing page, because Turso has revised them several times.
Firebase Cloud Firestore (Spark)
firebase.google.com
4.2A NoSQL document database with realtime sync and offline mobile SDKs.
- Best for
- Mobile and web apps that need live updates and offline support with Firebase Auth.
- Free plan & limits
- 1 GiB of stored data, 50,000 document reads, 20,000 writes and 20,000 deletes per day, and 10 GiB of egress per month. Requests are blocked when a daily quota is reached. Badly designed queries use up reads quickly, because every document returned counts as a read.
Upstash Redis
upstash.com
4.2Serverless Redis over HTTP or TCP, billed per command.
- Best for
- Caching, rate limiting, sessions and queues for serverless functions.
- Free plan & limits
- One free database with 256 MB of data and a monthly command quota (500,000 commands per month as of 2025). Use it as a cache or for ephemeral data, not as your main data store.
02 — Comparison
Side by side
Scroll sideways to see every tool. The first column stays pinned.
| Feature / Criterion | Neon | Supabase | Cloudflare D1 | MongoDB Atlas M0 | Turso | Firestore Spark | Upstash Redis |
|---|---|---|---|---|---|---|---|
| Engine | PostgreSQL | PostgreSQL | SQLite | MongoDB | libSQL (SQLite) | NoSQL documents | Redis |
| Free storage | 0.5 GB per project | 500 MB DB + 1 GB files | 5 GB (500 MB per DB) | 512 MB | ~5 GB | 1 GiB | 256 MB |
| Throughput limits | ~100 compute-hours/month | Shared nano compute | 5M reads / 100K writes per day | ~100 ops/s, 500 connections | Monthly row read/write quotas | 50K reads / 20K writes per day | 500K commands/month |
| When idle | Scales to zero, resumes in < 1 s | Paused after 7 days inactive | No sleep | May pause after long inactivity | No sleep | No sleep | No sleep |
| Databases / projects | Multiple projects | 2 active projects | Up to 10 DBs | 1 M0 cluster per project | Up to 100 DBs | 1 per Firebase project | 1 database |
| Backups on free tier | Short restore window | No PITR | Yes, 7-day Time Travel | No | Short PITR window | No | No |
| Card required | No | No | No | No | No | No | No |
| Extras | Branching | Auth, storage, realtime, APIs | Workers binding | Atlas Search, Charts | Embedded replicas | Realtime + offline SDKs | REST API, rate limiter SDK |
03 — Guide
How to set up a free cloud database step by step
Choose by data model and runtime
For relational data on Node, Python or serverless, use Neon or Supabase. For code already running on Cloudflare Workers, use D1. For JSON documents, use MongoDB Atlas, or Firestore if the app needs realtime updates on mobile. For caching and rate limits, use Upstash Redis. Migrating between engines later costs far more than choosing carefully now.
Create the project in the region closest to your app
Pick the same cloud region as your app server or functions, for example AWS us-east-1 next to a Vercel deployment in iad1. A database on another continent adds 100–200 ms to every query.
Use the pooled connection string
Serverless functions open many short-lived connections. Use Neon's '-pooler' host, or Supabase's transaction pooler on port 6543, and add sslmode=require. Keep the URL in an environment variable (DATABASE_URL) and never commit it to Git.
Lock down access
Turn on Row Level Security for Supabase tables exposed through the API. Restrict IP access lists in Atlas (don't leave 0.0.0.0/0 open). Use separate least-privilege database roles for your app and for migrations.
Add your own backups and watch the quotas
Most free tiers have no backups you can rely on. Schedule a nightly pg_dump or mongodump with GitHub Actions to private storage such as R2 or S3. Set usage alerts at 80% of each quota. On Supabase, any request at least once every 7 days keeps the project from being paused.
04 — FAQ
Common questions
Is a free cloud database really free, with no hidden costs?
Yes, as long as you stay within the quotas. None of the seven free tiers above needs a card or bills overages automatically. Instead they pause the project (Supabase), suspend compute (Neon) or reject queries once a daily limit is reached (D1, Firestore). You only start paying when you upgrade: about 5 USD/month for Cloudflare Workers Paid (which includes D1), 19 USD/month for Neon Launch, or 25 USD/month for Supabase Pro.
Which free cloud database is best for production?
For small production apps, Cloudflare D1 (no sleep, 7-day Time Travel) and Neon (resumes in under a second, branching) are the safest free options. Avoid using Supabase Free in production without a keep-alive, because projects pause after 7 days of inactivity. Avoid MongoDB Atlas M0 for real traffic: it is capped at about 100 operations per second and has no backups.
Do I lose my data if the project is paused?
Usually not. A paused Supabase project keeps its data and can be restored from the dashboard, and Neon only suspends compute while storage stays intact. However, providers can delete projects that stay inactive for a long time, and free tiers rarely include backups you can download. Keep your own nightly dump if the data matters.
How much traffic can a free database handle?
Cloudflare D1 allows 5 million rows read per day, which is enough for tens of thousands of page views if each page reads under 100 rows. Firestore's 50,000 daily document reads can run out after a few thousand page views if each view loads lists of documents. Neon's monthly compute allowance covers an app that is active a few hours a day.
What are the best alternatives if I need advanced features?
Supabase Pro (25 USD/month) adds 8 GB of disk, daily backups and no pausing. Neon Launch adds more storage and point-in-time recovery up to 7 days. PlanetScale offers managed MySQL and Postgres on paid plans only. Oracle Cloud Always Free includes 2 Autonomous Databases of 20 GB each if you can accept enterprise-style tooling. A Hetzner VPS (about 4–5 EUR/month) with self-managed Postgres gives you the most capacity per euro.
Can I connect a free cloud database from a static site?
Not directly with a database connection string, because the credentials would be visible in the browser. Instead, call it through a serverless function such as Cloudflare Pages Functions or Vercel Functions, or through a provider API that enforces per-user rules: Supabase with Row Level Security, or Firestore with Security Rules.
Scores reflect our own assessment of free-tier value. Prices and limits change, so check them on each provider's site before you buy.