DEV Community

Alex Chen
Alex Chen

Posted on

I Ran My Entire SaaS on Free Tiers for 6 Months. Total Cost: $0 (Full Breakdown)

Six months ago I launched a small SaaS (an invoice generator for freelancers). I told myself I'd migrate to "real" infrastructure once I got traction.

I never did. The free tiers held. Total infrastructure cost over 6 months: $0.

Here's the exact stack, the real usage numbers, and where each service breaks.

The $0 stack

Layer Service Free tier limit My actual usage (peak month)
Hosting Vercel 100GB bandwidth 23GB
Database Supabase 500MB Postgres 310MB
CDN/WAF Cloudflare Unlimited requests 410K requests
Cache/Queue Upstash 10K commands/day 4.2K/day
Email Resend 100 emails/day 61/day
Auth Supabase Auth 50K MAU 1,240 MAU
Analytics Cloudflare Web Analytics Free
Error tracking Sentry 5K events/month 1.8K

Total paid: $0. Estimated equivalent on AWS: ~$85/month.

What surprised me

1. Vercel's free tier is absurdly generous. 100GB bandwidth covered 23GB of real traffic with room to 4x. The catch: no commercial use on Hobby plan technically — I switched to Cloudflare Pages for the landing page to stay clean.

2. Supabase free tier pauses after 7 days of inactivity. My project is active daily so it never paused, but a dormant side project will sleep. First request after pause takes ~2s to wake.

3. Cloudflare is the backbone. Free DDoS protection, CDN, and analytics. Their Workers free tier (100K requests/day) now runs my PDF generation too:

// Cloudflare Worker — PDF render trigger, free tier
export default {
  async fetch(request, env) {
    const { id } = await request.json();
    const invoice = await env.DB.prepare(
      "SELECT * FROM invoices WHERE id = ?"
    ).bind(id).first();
    return new Response(JSON.stringify(invoice), {
      headers: { "Content-Type": "application/json" }
    });
  }
};
Enter fullscreen mode Exit fullscreen mode

4. Upstash Redis free tier resets daily. 10K commands/day sounds small, but with careful caching (only session + rate limiting), I use 42% of it.

Where the free tiers break (honest limits)

  • ~2,000 MAU: Supabase free gets tight on database size
  • ~50GB bandwidth: Vercel Hobby becomes a terms-of-service risk for commercial apps
  • Background jobs: no free tier handles long-running jobs well — I use GitHub Actions cron (2,000 free minutes/month) for nightly invoice reminders

The code I write for this stack is mostly glue between free APIs. I use MonkeyCode (free, open-source) as my AI pair programmer for exactly this kind of integration boilerplate: https://ly.cyberserval.tech/iIETXiF

The controversial part

I don't think free tiers are "for toy projects" anymore. Between Vercel, Cloudflare, Supabase and Neon, you can serve thousands of real users at $0. The paid-cloud-first mindset is a tax on builders who haven't checked the free-tier math in 2026.

The real cost isn't money — it's the 5 vendor dashboards you have to watch instead of one.


What's the most users you've served on a pure free-tier stack? Did anything break in an embarrassing way?

Top comments (0)