Last year I was paying for Railway ($5-20/month, always creeping up), a $6 VPS for cron jobs and bots, and AWS for a Postgres that mostly sat idle. Total damage: ~$40/month, $480/year, for side projects that made $0.
So I moved everything to free tiers and ran it for 90 days. Here's the bill, the breakage, and what I'd never move.
The replacement map
| Was paying | For | Moved to | Real limit |
|---|---|---|---|
| Railway $15/mo | 3 small Python APIs | Cloudflare Workers (100k req/day) | 10ms CPU per request — killed my image-resize endpoint |
| AWS RDS $25/mo | Postgres | Neon free tier | 0.5GB storage, scales to zero, 190 branches |
| VPS $6/mo | cron + a Discord bot | Cloudflare Cron Triggers + Supabase Edge Functions | Cron: fine. Long-running bot: had to rethink it |
| Netlify Pro $19/mo | 2 static sites | Cloudflare Pages | Unlimited bandwidth — actually unlimited, unlike the "100GB" elsewhere |
The Neon setup that replaced my $25 RDS bill
# Serverless driver — works over HTTP/WebSocket, no persistent connection
# pip install psycopg[binary] or use @neondatabase/serverless for Node
import psycopg
conn = psycopg.connect(os.environ["DATABASE_URL"]) # neon.tech connection string
cur = conn.execute("SELECT count(*) FROM events")
The killer feature nobody talks about: database branching. I spin up a branch per PR, run migrations against it, and delete it. On RDS that would've meant a second instance at $25/month.
The honest catch: cold starts. Scale-to-zero means the first query after idle takes ~1-2 seconds. For a dashboard, fine. For a latency-sensitive API, I added a 5-minute keep-alive ping from a Cloudflare Cron Trigger — hacky, but free.
What broke
-
Railway → Workers: Workers has no persistent filesystem and a 10ms CPU limit on free. Anything with
PIL,pandas, orffmpegdies. One of my three APIs went back to... a $0 Oracle Cloud free tier VM instead (4 ARM cores, 24GB RAM, genuinely free — the best-kept secret in this list). - The Discord bot: needs a persistent WebSocket connection. Cron triggers can't do that. It lives on the Oracle VM now too.
The 90-day bill
$0.00. Railway sent me a "we miss you" email. AWS sent nothing because I deleted the account resources properly (check your free-tier expirations — that's how they get you).
Unpopular opinion: Railway's DX is better than every free tier here combined, and it's still not worth $180/year for a hobby project. If your project makes $0, your infrastructure should cost $0.
Full stack list with the exact limits for each service (I keep it updated as free tiers get nerfed — looking at you, Heroku and PlanetScale): https://ly.cyberserval.tech/iIETXiF
What's the most surprising thing you've gotten away with hosting for free? And has anyone actually hit Cloudflare Workers' 100k requests/day limit on a personal project?
Top comments (0)