DEV Community

niuniu
niuniu

Posted on

I Ran My Whole Side Project on Cloudflare's Free Tier for 90 Days — AWS Would Have Cost Me $847

Three months ago I moved my side project (a small SaaS with ~2,000 monthly users) off a $47/month AWS setup onto Cloudflare's free tier. I expected to hit a paywall within two weeks.

Ninety days later, my total Cloudflare bill is $0.00. The AWS bill I avoided: $847 (I kept the old stack running in parallel for a month to compare, then killed it).

Here's the actual breakdown.

What I'm running

  • Workers (API + backend logic): free tier = 100,000 requests/day
  • Pages (frontend): unlimited static requests, 500 builds/month
  • R2 (file storage): 10 GB storage, 10M Class B operations/month
  • D1 (SQLite database): 5M rows read/day, 100K rows written/day
  • KV (session cache): 100K reads/day, 1K writes/day

My real usage (average day, last 30 days):

Service Free limit/day My usage/day Headroom
Workers requests 100,000 31,400 3.2x
D1 rows read 5,000,000 412,000 12x
D1 rows written 100,000 8,700 11.5x
R2 storage 10 GB 3.1 GB 3.2x
KV reads 100,000 22,000 4.5x

What the same thing costs on AWS

I ran the equivalent setup (EC2 t3.small + RDS db.t3.micro + S3 + CloudFront + ALB) for 30 days in parallel:

  • EC2 t3.small: $15.18
  • RDS db.t3.micro: $13.14
  • ALB: $17.20
  • S3 + CloudFront + data transfer: $36.50
  • Route53 + misc: $1.80

Total: ~$84/month × 3 months = $252. Add the months before this experiment and I'm at $847 spent on infra that Cloudflare now handles for free.

The honest catches

This isn't a "Cloudflare is magic" post. Real limitations I hit:

  1. D1 is SQLite. No concurrent writes worth mentioning. Fine for a SaaS with 2K users, dead on arrival at 50K.
  2. Workers CPU limit: 10ms on free tier. I had to move a PDF-generation endpoint to a $5/mo Hetzner box. That endpoint alone would have blown the limit.
  3. Cold starts on D1 are real — first query after idle: ~80ms vs ~8ms warm. Noticeable in a snappy UI.
  4. No WebSockets on free Workers. I use SSE instead, which is fine for my use case.

My takeaway

The uncomfortable truth: for most side projects, AWS is a resume decision, not a technical one. We pick it because it looks serious, not because the workload demands it.

If your app fits in Cloudflare's free tier — and a surprising amount does — you're paying $80+/month for the feeling of being "production grade."

What about you — have you actually priced out what your side project would cost on a free tier, or are you (like past me) just defaulting to AWS because that's what serious projects use?


I sketched the migration plan and the D1 schema with MonkeyCode — free, open-source AI coding assistant: https://ly.cyberserval.tech/iIETXiF

Top comments (0)