Originally published at devtoolpicks.com
Supabase pauses your database after 7 days of inactivity. That's not a bug. It's the free plan working exactly as documented.
You come back to a side project after a week, something's broken, and it turns out the entire backend went cold while you were away. Developers have literally built GitHub Actions workflows just to ping their Supabase database every few days and keep it alive. That's the state of things.
The permanent fix is upgrading to Pro at $25/month. Just to make pausing stop.
Meanwhile, a wave of developers spent the last year figuring out that SQLite is actually production-ready now. Turso. Cloudflare D1. Self-hosted Postgres on a €4 VPS. A whole generation of databases that cost $0-5/month for side projects, never pause, and in some cases are faster than managed Postgres.
Supabase is a great product. For the right project, it's the best thing out there. But if you're running multiple side projects on a tight budget, paying $25/month to keep a database awake is a rough deal when the alternatives are this good.
Here are five worth your time.
Quick Verdict
| Tool | Best For | Free Tier | Paid From |
|---|---|---|---|
| Turso | Multi-tenant apps, SQLite fans | 100 DBs, 5GB, never pauses | $4.99/mo |
| Neon | Serverless Postgres, Vercel/CF | 0.5GB storage, auto-resumes | $5/mo |
| Cloudflare D1 | Workers-based apps, edge | 5GB, 150M reads/day | $5/mo |
| Railway Postgres | Full-stack apps, simple deploys | $5 trial credit | $5/mo |
| Self-hosted Postgres | Cost-sensitive, full control | No free tier | ~€4.35/mo |
1. Turso
Turso is a cloud database built on SQLite. Not a managed Postgres service. Not a Firebase clone. Just SQLite running in the cloud, replicated globally, with a free tier that's hard to beat.
The free plan gives you 100 databases, 5GB of storage, and 500 million rows read per month. No credit card required. No pausing. It stays on indefinitely.
For most side projects, that's more than you'll ever need. If your app grows, the Developer plan is $4.99/month for unlimited databases and 9GB of storage. The Scaler plan comes in at $24.92/month (billed yearly) for more serious production use.
The architecture is worth understanding before you decide. Each Turso database is a SQLite file that can be replicated to edge locations close to your users. If you've built a multi-tenant SaaS before, you know the pain of one database holding every tenant's data together. Turso makes the per-tenant database model trivial: give each tenant their own database, migrations stay simple, data is properly isolated.
Turso runs on libSQL, a SQLite fork with additions the original lacks: network access over HTTP and WebSockets, multi-region replication, and embedded replicas. That last one means you can keep a local SQLite file in sync with a remote primary database, which gives you local-file read speeds alongside cloud durability.
What it's good at: Multi-tenant apps, edge deployments, side projects that need a permanent free tier, anything where you want SQLite simplicity with cloud availability.
Who should NOT use Turso: Write-heavy workloads with high concurrency will hit SQLite's single-writer limitation. If your stack depends on PostgreSQL-specific features like LISTEN/NOTIFY, stored procedures, or PostGIS, you'll be rewriting more than your connection string.
2. Neon
Neon is serverless Postgres. Real Postgres, not a compatibility layer. The same wire protocol, the same SQL dialect, the same extensions. You swap a connection string and your app works.
After Databricks acquired Neon in May 2025, pricing dropped significantly. Storage went from $1.75/GB to $0.35/GB per month. The free tier doubled its compute allowance from 50 to 100 compute-unit hours per month. These are real changes, not cosmetic.
The free plan gives you 0.5GB of storage per project and 100 CU-hours per month. No credit card required. No hard expiry.
Here's the distinction from Supabase that matters most: Neon does auto-suspend when your database is idle, but it resumes in under 500ms automatically. You won't come back to a broken app after a week away. Neon wakes itself up on the first query, no intervention required. It's not the same as Supabase's "project paused, please log in to unpause."
Paid plans start at a $5/month minimum on the Launch tier. The billing is usage-based, so a staging database with minimal traffic costs almost nothing, and a production database scales with your actual usage. Most indie hacker projects with real users run $5-20/month.
Neon also has database branching. Branch your production database, run a migration on the branch, test it, merge. This is genuinely useful if you do complex schema migrations and want a safety net before touching production.
What it's good at: Serverless apps on Vercel or Cloudflare Workers, projects that need real Postgres compatibility without any migration work, teams that run complex migrations and want database branching.
Who should NOT use Neon: If cold starts are unacceptable for your use case (real-time apps, latency-sensitive APIs), auto-suspend will bite you occasionally. Also, 0.5GB free storage fills faster than you'd think if you're storing anything beyond rows of text.
3. Cloudflare D1
Cloudflare D1 is SQLite at the edge. It runs inside the Cloudflare Workers platform, which means your database lives in the same runtime as your application code. No separate database server. No network hop between your Worker and your data.
The free tier is solid: 5GB of storage, roughly 150 million rows read per day, and about 3 million rows written per day. For a side project, the storage limit is what you'll watch first.
One thing to know about the free tier: limits reset daily at midnight UTC. If your app hits the daily read cap, queries fail until the reset. It's not ideal, but most side projects won't get close. The Workers Paid plan at $5/month bumps you to 25 billion reads per month and 50 million writes, which is a very different scale.
The pricing model is unusual. You pay for rows read and rows written, not compute time or connection slots. A SaaS with 1,000 small tenants running 100 queries per day with proper indexes could run at $2-3/month on paid. It's cheap when your queries are efficient.
The hard limit everyone discovers eventually: each D1 database maxes out at 10GB. That's a firm cap, no exceptions. The standard workaround is the same pattern Turso encourages: multiple small databases per tenant or per domain, rather than one large shared table. If your data model is unified and relational, plan for this constraint early.
D1 also requires you to be in the Cloudflare Workers ecosystem. It's a native binding, not a general-purpose database connection. You can't point a Laravel app on Hetzner at D1 without a Workers proxy in front of it.
What it's good at: Cloudflare Workers apps, edge computing, multi-tenant SaaS with small per-tenant datasets, anything already running in the Cloudflare ecosystem.
Who should NOT use Cloudflare D1: If you're not on Cloudflare Workers already, adding it just to use D1 is a significant dependency to introduce. The 10GB per-database ceiling is also a real wall for anything with meaningful user data. And concurrent write throughput hits the same SQLite bottleneck as Turso.
4. Railway Postgres
Railway is a deployment platform, but the managed Postgres is worth talking about on its own. You spin up a Postgres database with one click, get a connection string, and pay for what you actually consume. Billed by the second on actual CPU and memory usage, not reserved capacity.
There's no permanent free tier. New users get a $5 trial credit with no credit card required, which is enough to run a real database for several days of actual use. After that, the Hobby plan starts at $5/month, and your usage draws from that credit first.
The honest cost picture: a side project database with minimal traffic realistically runs $0.55-5/month. A production app with real users is typically $5-15/month for the database alone. That's still well below Supabase Pro at $25/month, and Railway Postgres never pauses.
The real argument for Railway is stack simplicity. If you're deploying a Node.js or Laravel app alongside a database, Railway bundles everything into one project with one dashboard and one bill. You get managed Postgres, managed Redis, managed deployments, preview environments on every pull request, and real-time resource metrics. For someone managing five side projects who doesn't want five separate hosting accounts, that matters.
One thing Railway is not: a Supabase replacement for the full platform. You get managed Postgres, not auth, file storage, or real-time subscriptions. If you rely on Supabase Auth, you'll need to replace that separately. Clerk and Auth0 are the common choices, and both are covered in the Clerk vs Auth0 vs Supabase Auth comparison if you're evaluating that decision.
What it's good at: Full-stack apps that want managed Postgres alongside application hosting, developers who want simple infrastructure without separate accounts everywhere, projects that need real Postgres for under $10/month.
Who should NOT use Railway: If you need auth, storage, and real-time subscriptions bundled together, Railway doesn't offer those. You'll build your own stack. And if you need a permanent free tier with no trial clock, Railway isn't the answer.
5. Self-hosted Postgres on Hetzner
This sounds more complex than it is. A Hetzner CX22 server gives you 2 vCPUs, 4GB RAM, and 40GB SSD for €4.35/month. You install Postgres, configure your connection string, and set up a daily backup to object storage. Your database never pauses, never gets throttled, never hits a free tier limit, and you can store as much data as your disk holds.
The initial setup takes about 20 minutes. After that, it's just a server you rarely touch. Postgres doesn't crash often, and automated backups cover most disaster scenarios.
The honest downside: you're now responsible for updates, monitoring, and backup integrity. Supabase and the managed options above handle all of that. If their server crashes at 3am, their team handles it. If your Hetzner server crashes at 3am, you handle it.
For many indie hackers, this is actually fine. The operational overhead of a single Postgres instance is low. €4.35/month is hard to argue with when you're running three or four databases on the same server and the total cost is still under $5.
This option pairs naturally with a deployment platform like Railway, or with tools like Coolify or Laravel Forge if you want a management UI. The Vercel vs Hetzner comparison covers the self-hosted VPS approach in more depth, and the Railway vs Render vs Fly.io comparison is worth reading if you're picking a deployment platform alongside your database.
What it's good at: Cost-sensitive indie hackers running multiple projects, anyone who wants full data ownership and no vendor lock-in, developers comfortable with basic Linux administration, projects at scale where managed database costs compound fast.
Who should NOT use self-hosted: If you're early stage and want to focus entirely on building, managing infrastructure adds cognitive overhead you might not want yet. The managed options above are cheaper by developer hours saved. Also, if you need compliance certifications like SOC 2 or HIPAA, self-hosted requires significantly more work to prove your setup than using a certified managed provider.
How to Choose
You're building on Cloudflare Workers: D1. It's built for this exact case.
You need real Postgres and you're already on Vercel: Neon. The integration is clean, the free tier is usable, and cold starts are fast enough for most apps.
You're building a multi-tenant SaaS: Turso. Per-tenant databases are trivial to spin up and isolate.
You want managed Postgres alongside your app hosting in one place: Railway. One dashboard, one bill.
You're running several side projects and $5/month per project adds up: Self-hosted Hetzner. One server, multiple databases, €4.35 total for all of them.
You need auth, storage, and real-time subscriptions as a bundle: Stay on Supabase and upgrade to Pro. None of these five alternatives replace the full Supabase platform. They replace the database layer only.
FAQ
Does Supabase really pause your database on the free plan?
Yes. Free projects pause after 7 days of inactivity. Inactivity means no database queries, not just no dashboard visits. The workaround most developers use is a GitHub Actions workflow that pings the database on a schedule. The permanent fix is upgrading to the Pro plan at $25/month, which removes pausing entirely.
Is SQLite actually production-ready in 2026?
For read-heavy workloads on single-writer patterns, yes. Turso and Cloudflare D1 have both hit production maturity, and real SaaS products run on them. The constraints are real: SQLite is single-writer, and D1's 10GB per-database cap is a hard limit. For most indie hacker projects that are read-heavy and small-to-medium in data volume, SQLite-based databases hold up well. For write-heavy apps with high concurrency, Postgres is still the safer choice.
What's the cheapest option for running multiple side projects?
A single Hetzner CX22 server at €4.35/month running multiple Postgres databases is the cheapest option if you're comfortable with basic Linux. If you want fully managed, Turso's free tier covers 100 databases at $0, which is enough for most personal projects. Neon's free tier is also permanent and gives you real Postgres at no cost.
Do Neon and Turso have the same pausing problem as Supabase?
No. Neon auto-suspends compute when idle but resumes in under 500ms on the next query, with no manual action required. Turso doesn't pause at all. Neither behaves like Supabase's free tier, which requires manual unpausing after inactivity or a workaround to prevent it.
Can I migrate from Supabase to one of these without rewriting my app?
If you're only using Supabase's database layer, migrating to any Postgres alternative is a connection string swap plus a schema export. If you're using Supabase Auth or Storage, those parts require replacing separately. The Supabase vs Firebase comparison covers what the full Supabase platform actually includes, which is helpful context before deciding what to swap out.
Final Take
Supabase is a real product. The 7-day pausing on the free plan is a documented limitation, not a scam, and $25/month for the full Pro platform is reasonable if you're actually using auth, storage, and real-time.
But if you're using Supabase primarily as a managed Postgres database, there are better deals in 2026. Turso is free for most side projects. Neon is close behind and keeps real Postgres compatibility intact. Railway gives you proper Postgres with full app hosting alongside it for $5/month. Cloudflare D1 is practically free if you're already on Workers. And self-hosted Hetzner is the most cost-efficient option once you're comfortable running a server.
The right call depends on what you're actually using from Supabase. Database only: Neon or Turso and don't look back. Full platform: Supabase Pro is probably the move, or you're rebuilding three things at once.

