15 September 2026 · Cloud & Dev APIs · 6 min read
Every "serverless pricing comparison" I've read stops at the headline rate — $0.20 per million requests here, $5 a month there — and never asks the one question that actually decides your bill: is your function waiting on something, or is it computing? I ran three workloads I've actually built (a Stripe-style webhook handler, a 20-million-request CRUD API, and a CPU-heavy image-resize pipeline) through today's live Lambda, Cloudflare Workers and Vercel Functions pricing. The cheapest platform changes completely between workload one and workload three, and it's not close.
This is the part that gets skipped. AWS Lambda bills GB-seconds — memory allocated × total wall-clock duration, whether your function is crunching numbers or sitting idle waiting on a database round-trip. Cloudflare Workers bills CPU time — only the milliseconds your code is actually executing, so a function that awaits a network call for 250ms and computes for 10ms is billed for 10ms, not 260ms. Vercel's Fluid compute splits the difference: it charges for Active CPU (compute only, like Workers) plus separately for Provisioned Memory (GB-hours reserved over wall time, like Lambda's memory side) plus a per-seat platform fee. Three different shapes. Rates verified live against each vendor's pricing page today: Lambda $0.20/1M requests + $0.0000166667/GB-second (400,000 GB-s and 1M requests free); Workers $5/mo base with 10M requests + 30M CPU-ms included, then $0.30/1M requests and $0.02/1M CPU-ms; Vercel Pro $20/seat/mo with 1M invocations, 4 Active CPU-hours and 360 Provisioned Memory GB-hours included, then $0.60/1M invocations, $0.128/Active-CPU-hour and $0.0106/GB-hour.
500,000 invocations/month, 300ms wall-clock each (a Stripe-style webhook that mostly waits on a database write — about 50ms of that is actual CPU), 128MB memory.
| Platform | Billable usage | Cost |
|---|---|---|
| AWS Lambda | 18,750 GB-s, 500K reqs — both under free tier | $0.00/mo |
| Cloudflare Workers | 25M CPU-ms (under 30M free), 500K reqs (under 10M free) | $5.00/mo (base plan) |
| Vercel Functions | 6.94 Active-CPU-hrs (2.94 over free) + 5.2 GB-hrs mem (free) | $20.38/mo |
Lambda's free tier swallows this workload whole — genuinely $0. Workers can't go below its $5 account-level base fee even at near-zero usage. Vercel starts $20 in the hole because Functions billing rides on a Pro seat, not a usage-only plan, so a side-project webhook pays platform tax before it serves a single request.
20,000,000 invocations/month, 180ms wall-clock (typical DB-backed CRUD call), of which 40ms is actual CPU, 512MB memory.
| Platform | Billable usage | Cost |
|---|---|---|
| AWS Lambda | 19M reqs over free + 1.4M GB-s over free | $27.13/mo |
| Cloudflare Workers | $5 base + 10M reqs over free + 770M CPU-ms over free | $23.40/mo |
| Vercel Functions | $20 seat + 19M reqs + 218.2 CPU-hrs + 140 GB-hrs over free | $60.81/mo |
Workers pulls ahead here because it never bills for the ~140ms/request the function spends idle waiting on the database — Lambda does, since GB-seconds count wall time regardless. Vercel's seat fee stops mattering much at this volume; what hurts is that it's the only one of the three billing Active CPU at an hourly rate steep enough ($0.128/hr) that 218 overage hours alone cost more than Lambda's entire bill.
2,000,000 invocations/month, 4 seconds wall-clock each (resizing and re-encoding uploaded images — genuinely CPU-bound, so 3.5s of that 4s is actual compute), 1GB memory.
| Platform | Billable usage | Cost |
|---|---|---|
| AWS Lambda | 1M reqs over free + 7.6M GB-s over free | $126.87/mo |
| Cloudflare Workers | $5 base + 6,970M CPU-ms over free | $144.40/mo |
| Vercel Functions | $20 seat + 1M reqs + 1,940.4 CPU-hrs + 1,862.2 GB-hrs over free | $288.72/mo |
The ranking flips. When a function is actually CPU-bound almost the whole time it runs, there's no idle time for Workers' CPU-only billing to save you from, and its $0.02/million-CPU-ms rate compounds fast at 7 billion milliseconds of real work — Lambda's flat GB-second rate ends up cheaper. Vercel loses on both axes at once: its $0.128/Active-CPU-hour is roughly 5x what Workers charges for equivalent CPU time, and it still bills Provisioned Memory GB-hours on top of that.
Not raw request volume — the ratio of active compute to wall-clock time. If most of your function's runtime is spent waiting (database calls, third-party API calls, queue polling), Cloudflare Workers' CPU-only billing is close to free money compared to Lambda charging for the wait. If your function is doing real CPU work near-continuously (image/video transforms, ML inference, PDF generation, cryptography), Lambda's GB-second model stops being a penalty and becomes the cheapest of the three, because nobody's charging you extra for compute that was never idle to begin with. Vercel's Fluid compute is priced for teams already paying for Pro seats for the rest of the platform (previews, analytics, edge config) — as a standalone function-cost decision, it lost all three scenarios here.
New to usage-based cloud pricing? Start with the free API-cost guides.
Deploy it yourself: DigitalOcean — $200 free credit ↗ · Hostinger VPS ↗
Rates verified live against AWS, Cloudflare and Vercel's official pricing pages, checked 2026-09-15. Reference estimates using each vendor's published on-demand/Pro-tier rates — enterprise discounts, reserved capacity and future rate changes vary; confirm current pricing at the source before budgeting.