Home › Blog › Vercel vs Cloudflare vs AWS hosting cost

Vercel+Supabase vs Cloudflare vs AWS: the real monthly bill for a small SaaS

Published 2026-08-21 · reference numbers, verify before budgeting

Run the same small SaaS workload through three hosting stacks and you get three numbers that don't mean the same thing. Vercel Pro plus Supabase Pro comes out to a flat $45/month. Cloudflare Workers plus R2 comes out to $5.30. Raw AWS Lambda plus S3 comes out to $3.70 — the cheapest number on the page, and the one you shouldn't actually trust.

The workload we're pricing

A small, live SaaS product, solo builder or two-person team: 5,000,000 function/API requests a month, 30 GB of monthly egress (API responses, images, downloads), and 20 GB of stored data across the database and object storage. Nothing exotic — this is roughly what an app with a few thousand active users looks like before it needs to think hard about infrastructure.

What each stack bills, line by line

Line itemVercel + SupabaseCloudflare Workers + R2AWS Lambda + S3
Base/compute planVercel Pro, $20/mo (1 seat)Workers Paid, $5/mo (10M req incl.)5M req × $0.20/M = $1.00
Database/storageSupabase Pro, $25/moR2: 20GB × $0.015 = $0.30not itemized here — see below
Egress (30 GB)bundled in planR2 egress: $030GB × $0.09 = $2.70
Visible monthly total$45.00$5.30$3.70*

Rates confirmed against each provider's current pricing page, verified 2026-08-21. *AWS total is requests + egress only — see why that number is incomplete below. Report outdated price →

The AWS number is missing its biggest line

Lambda charges two things: $0.20 per million requests, and a separate charge per GB-second of compute — memory allocated multiplied by how long the function actually runs. That second charge is where a real Lambda bill lives for anything that does actual work: a database call, an image resize, a JSON payload big enough to parse. It's also the one number that can't go in a clean comparison table, because it isn't a flat per-unit rate the way "$0.09 per GB egress" is — it depends on how much memory you allocated to the function and how many milliseconds it took, both of which are decisions you make per function, not a price the provider quotes you once. The $3.70 in that table is real. It's also not the bill. Model your own function's memory and duration against the serverless cost calculator or the AWS Lambda pricing guide before trusting a request-count number on its own — the gap between "$3.70" and "the actual invoice" is usually the whole story.

Why Cloudflare's number is the one you can bank on

Workers' $5 plan bundles a compute-time allowance into the flat fee alongside the request count, so a function that isn't doing something unusually heavy rarely spills into metered overage the way Lambda's duration charge does from the very first millisecond. Pair that with R2's $0 egress — no cap, no tier — and $5.30 is close to a complete number for this workload, not just the visible slice of one. That's the actual finding here: three pricing pages don't give you three equally honest quotes. Two of them (Vercel+Supabase, Cloudflare) are close to what you'll actually pay. AWS's is a floor with an open ceiling nobody prints on the homepage.

What we'd actually do with this

The takeaway

The cheapest number on a hosting comparison page is only useful if it's a complete number. Vercel+Supabase and Cloudflare+R2 both quote something close to what you'll pay. AWS quotes the part of the bill that's easy to quote and leaves the part that actually scales with your workload — compute duration — for you to model yourself. That's not a knock on AWS's pricing; it's a warning about reading a request-price line item as if it were the whole invoice, on any provider that separates the two.

Methodology: figures are reference estimates built from each provider's published pricing pages (Vercel, Supabase, Cloudflare Workers, Cloudflare R2, AWS Lambda, AWS S3), cross-checked against this site's own API price registry, verified 2026-08-21. The 5M request / 30GB egress / 20GB storage workload is an illustrative scenario, not telemetry from a production system. AWS S3 storage cost and Lambda GB-second compute charges are intentionally excluded from the headline total rather than estimated, since both depend on per-function assumptions this article doesn't make on your behalf — model them with your own numbers before budgeting. Providers revise pricing over time; treat the specific figures here as a snapshot to verify, not a permanent constant.