# Cloudflare Workers vs AWS Lambda for Indie Developers (2026)

> Cloudflare Workers vs AWS Lambda in 2026: $5/mo with CPU-time billing and no egress fees vs a 1M-request free tier and GB-second billing. Costs at 5M and 50M.

- Canonical: https://zeroraised.com/blog/cloudflare-workers-vs-aws-lambda-for-indie-developers
- Published: 2026-11-15T13:30:00Z
- Author: ZeroRaised Team (https://zeroraised.com/blog/authors/zeroraised)
- Publisher: ZeroRaised (https://zeroraised.com/)
- Section: Building
- Tags: hosting, comparison, developer-tools, serverless

**Verdict:** Pick Cloudflare Workers for a JavaScript or TypeScript API that spends most of its time waiting on databases and other APIs: you pay for CPU time, not waiting time, the floor is $5 a month and egress is free. Pick AWS Lambda if you need more than 128 MB of memory, jobs that run for minutes, Python, Java or .NET, or tight links to S3, DynamoDB and SQS. With only a trickle of traffic, Lambda's free tier can beat Workers' $5 minimum.

Prices and limits come from Cloudflare's and AWS's own pages, checked on 15 Nov 2026. The worked examples and recommendations are ours.

## TL;DR

- **Workers:** Free plan of 100,000 requests per day at 10 ms CPU each. Paid is $5/mo, includes 10M requests and 30M CPU ms, then $0.30 per million requests and $0.02 per million CPU ms, and "There are no additional charges for data transfer (egress) or throughput (bandwidth)" ([Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/)).
- **Lambda:** Event Functions include 1M requests and 400,000 GB-seconds a month, then $0.20 per million requests and $0.0000166667 per GB-second on x86 in US East ([Lambda pricing](https://aws.amazon.com/lambda/pricing/)).
- **The real difference is billing.** On Workers, "Waiting on network requests (such as fetch() calls, KV reads, or database queries) does not count toward CPU time" ([Workers limits](https://developers.cloudflare.com/workers/platform/limits/)). On Lambda Event Functions you pay for the whole duration at your configured memory.
- **New on AWS:** Lambda Web Functions (12 Oct 2026) run ordinary Node.js HTTP servers with active-CPU billing, which narrows the gap.

**Disclosure:** ZeroRaised publishes this comparison and is a launch site for bootstrapped products. ZeroRaised has no commercial relationship with Cloudflare or AWS and earns nothing if you use either. Facts come from the linked sources as checked on 15 Nov 2026.

This post covers compute only. For the pieces around it, see [Vercel vs Cloudflare Pages](https://zeroraised.com/blog/vercel-vs-cloudflare-pages-for-indie-makers) for frontends, [Turso vs Cloudflare D1](https://zeroraised.com/blog/turso-vs-cloudflare-d1-for-indie-developers) for the database, [Cloudflare R2 vs AWS S3](https://zeroraised.com/blog/cloudflare-r2-vs-aws-s3-for-indie-makers) for storage and [our SaaS tech stack guide](https://zeroraised.com/blog/saas-tech-stack-for-solo-founders) for the whole picture.

## Isolates vs microVMs

**Workers run in V8 isolates.** Cloudflare: "Instead of creating a virtual machine for each function, an isolate is created within an existing environment." It says an isolate "can start around a hundred times faster than a Node process on a container or virtual machine", and Workers run across "thousands of machines distributed across hundreds of locations" ([How Workers works](https://developers.cloudflare.com/workers/reference/how-workers-works/)).

**Lambda runs on Firecracker microVMs.** Amazon Science says "Firecracker powers the AWS Lambda service" and gives AWS "a single microVM for the code that each customer program executes" ([Amazon Science](https://www.amazon.science/blog/how-awss-firecracker-virtual-machines-work)). Each execution environment goes through Init, Invoke and Shutdown, and is frozen and reused between calls ([Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)). It runs in the Region you pick.

Our read: isolates are why Workers can bill in CPU milliseconds and run everywhere for $5. MicroVMs are why Lambda can offer 10 GB of memory, a writable disk and almost any language.

### Lambda's new function types

The Lambda pricing page now lists Event Functions (the classic model) alongside Managed Instances, Durable Functions, MicroVMs and Web Functions ([Lambda pricing](https://aws.amazon.com/lambda/pricing/)). Web Functions are the one to watch here. AWS says they run a server "built with Express, Hono, Fastify, Next.js, or any Node.js framework", deploy with `aws lambda-web deploy`, handle up to 128 concurrent requests per environment, and run "Node.js 24 (nodejs24.x) on Arm64" in five Regions at launch ([AWS News Blog](https://aws.amazon.com/blogs/aws/announcing-aws-lambda-web-functions-for-fast-consistent-web-app-performance-anywhere/)). Pricing is $0.30 per million requests, $0.0000276944 per vCPU-second of active CPU and $0.0000036667 per GB-second of memory (Arm, US East), and "Memory is metered for as long as the execution environment exists", including time between requests.

Our read: Web Functions are a month old and the pages we checked do not say whether the free tier applies. Promising, but re-check the docs before you depend on them.

## Pricing side by side

| | Cloudflare Workers | Lambda Event Functions |
|---|---|---|
| Free | 100,000 requests per day, 10 ms CPU per invocation | 1M requests and 400,000 GB-s per month |
| Paid entry | $5/mo minimum, includes 10M requests and 30M CPU ms | No minimum |
| Requests | $0.30 per extra million | $0.20 per million |
| Compute | $0.02 per extra million CPU ms | $0.0000166667 per GB-s (x86, US East) |
| What is billed | CPU time only; no charge for duration | Duration times memory, waiting included, plus Init on cold starts |
| Egress | No charge | 100 GB a month free across AWS, then EC2 data transfer rates |
| HTTP endpoint | Included | Function URLs free; API Gateway HTTP API $1.00 per million |

Sources: [Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/), [Lambda pricing](https://aws.amazon.com/lambda/pricing/), [Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html), [EC2 on-demand pricing](https://aws.amazon.com/ec2/pricing/on-demand/), [API Gateway pricing](https://aws.amazon.com/api-gateway/pricing/).

Three details that matter:

- **The Workers Free plan is a hard stop.** Past 100,000 requests in a day (reset at midnight UTC), "Cloudflare returns Error 1027" unless the route fails open ([Workers limits](https://developers.cloudflare.com/workers/platform/limits/)).
- **Lambda bills cold starts.** AWS says of the cold start setup time: "You are charged for this time" ([Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)).
- **Lambda memory sets CPU.** "At 1,769 MB, a function has the equivalent of one vCPU" ([Lambda quotas](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)). Less memory is cheaper but slower.

**Function URLs vs API Gateway.** AWS says function URLs "follow the standard Lambda pricing model" and "There are no additional charges for the URL endpoint itself." It recommends API Gateway when you need custom domains, Cognito or OAuth authorizers, validation, caching or throttling ([choosing an HTTP invoke method](https://docs.aws.amazon.com/lambda/latest/dg/furls-http-invoke-decision.html)). HTTP APIs cost $1.00 per million requests and REST APIs $3.50 per million in US East, with 1M free calls each for up to 12 months ([API Gateway pricing](https://aws.amazon.com/api-gateway/pricing/)). Our read: start with function URLs. At 50M requests, API Gateway can cost more than the functions behind it.

## Two worked cost examples (ours)

These are our illustrations, not vendor quotes. Our assumptions: a JSON API that checks auth, queries a database and calls one outside API. Each request uses **5 ms of CPU** and takes **150 ms wall-clock**. Responses average 5 KB. Lambda is an x86 Event Function at **512 MB** behind a free function URL. Database costs are ignored, and prices are US East list prices.

### 5M requests a month

**Workers Paid:** 5M requests is inside the 10M included. CPU is 5M × 5 ms = 25M ms, inside the 30M included. **Total: $5.00.** (5M a month averages about 167,000 a day, over the Free plan's limit.)

**Lambda:** requests (5M - 1M free) × $0.20 = $0.80. Compute 5M × 0.15 s × 0.5 GB = 375,000 GB-s, inside the 400,000 free. About 25 GB of egress, inside the 100 GB free. **Total: about $0.80.**

### 50M requests a month

**Workers Paid:** requests (50M - 10M) × $0.30 = $12.00. CPU 250M ms - 30M included = 220M × $0.02 = $4.40. **Total: $5 + $12.00 + $4.40 = $21.40.**

**Lambda:** requests (50M - 1M) × $0.20 = $9.80. Compute 50M × 0.15 s × 0.5 GB = 3,750,000 GB-s; minus 400,000 free = 3,350,000 × $0.0000166667 = $55.83. **Total: about $65.63**, plus roughly 150 GB of egress beyond the free 100 GB at EC2 rates, plus $50.00 if you add an API Gateway HTTP API.

**Same Lambda case at 128 MB:** 937,500 GB-s, minus 400,000 free = 537,500 × $0.0000166667 = $8.96, so about $18.76 total before egress. Memory tuning is the biggest lever on Lambda, but 128 MB also gets you the smallest CPU share.

Our read: Lambda's free tier wins at small scale, and Workers pulls ahead as an I/O-bound API grows because waiting on your database is free. For CPU-heavy work (images, PDFs, big transforms) the gap narrows, and Workers' 128 MB memory cap may decide it first.

## Limits that decide it for you

| Limit | Cloudflare Workers | Lambda Event Functions |
|---|---|---|
| Memory | 128 MB per isolate | 128 MB to 10,240 MB |
| Time | Free: 10 ms CPU. Paid: 30 s CPU default, max 5 minutes; no duration limit for HTTP | 15 minute timeout |
| Code size | 64 MiB uncompressed | 50 MB zipped, 250 MB unzipped; 10 GB container image |
| Payload | Request body 100 MB on Cloudflare Free and Pro | 6 MB request and response (synchronous); 200 MB streamed |
| Disk | None | `/tmp` 512 MB to 10,240 MB |
| Account scale | 100 Workers (Free), 500 (Paid) per account | 1,000 concurrent executions by default, increasable |

Sources: [Workers limits](https://developers.cloudflare.com/workers/platform/limits/), [Lambda quotas](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html).

The two that bite: Lambda's 6 MB synchronous payload rules out uploads through the function (use presigned S3 URLs), and Workers' 128 MB rules out loading big files or heavy libraries into memory.

**Languages.** Workers has "first-class support" for JavaScript, TypeScript, Python and Rust, plus WebAssembly for C, C++, Kotlin and Go ([Workers languages](https://developers.cloudflare.com/workers/languages/)). Lambda Event Functions have managed runtimes for Node.js, Python, Java, .NET and Ruby, with Go and Rust on the OS-only `provided.al2023` runtime ([Lambda runtimes](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)).

## Cold starts, as each vendor documents them

We are not quoting third-party benchmarks. Cloudflare says isolates eliminate "the cold starts of the virtual machine model" ([How Workers works](https://developers.cloudflare.com/workers/reference/how-workers-works/)) and requires a Worker to start within 1 second. AWS says "Cold starts typically occur in under 1% of invocations. The duration of a cold start varies from under 100 ms to over 1 second", that they are more common in rarely invoked dev and test functions, and recommends provisioned concurrency for predictable start times, with SnapStart restoring environments from a snapshot ([Lambda execution environment](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)).

Our read: a low-traffic indie app looks a lot like the "rarely invoked" case, so keep Lambda packages small and imports lazy.

## Storage next door

| Need | Cloudflare (Workers Paid) | AWS |
|---|---|---|
| Key-value | KV: 10M reads included, then $0.50 per million | DynamoDB on demand: $0.125 per million reads, $0.625 per million writes |
| SQL | D1: 25 billion rows read, 50M written, 5 GB included | RDS or Aurora (not covered) |
| Objects | R2: $0.015 per GB-month, free egress | S3 |
| State and workflows | Durable Objects: 1M requests included, then $0.15 per million | Lambda durable functions, billed per durable operation |
| Queues | 1M operations included, then $0.40 per million | SQS |

Sources: [Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/), [DynamoDB on-demand pricing](https://aws.amazon.com/dynamodb/pricing/on-demand/), [Lambda pricing](https://aws.amazon.com/lambda/pricing/).

AWS says "Data transfer with AWS Lambda Event Functions is free in the same AWS Region" with S3, DynamoDB, SQS and SNS; attaching a VPC adds charges. Our read: Cloudflare's menu is shorter but sits on one $5 bill. For background jobs on either platform, see [Trigger.dev vs Inngest](https://zeroraised.com/blog/trigger-dev-vs-inngest-for-indie-developers).

## Local dev, frameworks and lock-in

**Local dev.** `wrangler dev` runs your Worker in a local `workerd` process, the same runtime as production, and "All resources your Worker is bound to in your Wrangler configuration are simulated locally", with optional remote bindings to real resources ([Workers development and testing](https://developers.cloudflare.com/workers/development-testing/)). On AWS, `sam local invoke` and `sam local start-api` run functions in "a local container using Docker", and AWS notes local testing "doesn't validate everything, such as permissions" ([SAM local invoke](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/using-sam-cli-local-invoke.html)).

**Frameworks.** Hono runs on both: Cloudflare has Hono guides ([framework guides](https://developers.cloudflare.com/workers/framework-guides/)), and Hono "works on AWS Lambda with the Node.js 18+ environment" via `@hono/aws-lambda` ([Hono docs](https://hono.dev/docs/getting-started/aws-lambda)). For Next.js, "Cloudflare recommends vinext as the default way to run Next.js applications on Cloudflare Workers" (vinext is in beta), keeping the OpenNext adapter for existing apps ([Next.js on Workers](https://developers.cloudflare.com/workers/framework-guides/web-apps/nextjs/)).

**Lock-in.** Our read: the function code moves easily, especially in Hono. Bindings and data do not: KV, D1 and Durable Objects on one side, IAM, DynamoDB and event triggers on the other. Choose the platform whose storage you would keep for three years. If you would rather avoid serverless altogether, see [Heroku alternatives](https://zeroraised.com/blog/heroku-alternatives-for-indie-hackers).

## Decision table (ours)

| Your situation | Our pick |
|---|---|
| TypeScript API that mostly waits on a database or APIs | Workers Paid |
| Under 1M requests a month, pre-revenue | Lambda free tier, or Workers Free |
| Global users, latency matters | Workers |
| Lots of bandwidth (downloads, media) | Workers plus R2 |
| Python data jobs, Java or .NET | Lambda |
| Over 128 MB memory or a writable disk | Lambda |
| Jobs of 5 to 15 minutes | Lambda |
| Reacting to S3, DynamoDB or SQS events | Lambda Event Functions |
| Existing Express or Next.js server, already on AWS | Try Lambda Web Functions |
| One small bill, few dashboards | Workers |

## Our pick

For most bootstrapped founders building a TypeScript API or SaaS backend, **start on Cloudflare Workers**: 10M requests for $5, free waiting time, free egress and a fast local loop. Write it in Hono so a later move is cheap. **Choose Lambda** when the work demands it: big memory, long runs, non-JavaScript runtimes or AWS event pipelines. Start with function URLs and keep memory low. **Use both** if one heavy job needs Lambda while Workers handles everything in front of it.

## Launch it

Once your backend is live, run through our [product launch checklist for bootstrapped makers](https://zeroraised.com/blog/product-launch-checklist-for-bootstrapped-makers), then [launch on ZeroRaised](https://zeroraised.com/submit), the launch directory for products built without institutional VC. For more stack comparisons, [join the ZeroRaised newsletter](https://zeroraised.com/newsletter).

## Frequently asked questions

### Is Cloudflare Workers cheaper than AWS Lambda?

For I/O-bound APIs it usually is once traffic grows, because Workers bills CPU time (waiting on network calls does not count) and charges no egress, while Lambda Event Functions bill wall-clock duration times memory. At very low traffic Lambda can be cheaper, because its free tier covers 1M requests and 400,000 GB-seconds each month while Workers Paid has a $5/mo minimum.

### Does Cloudflare Workers have cold starts?

Cloudflare says its isolate model "eliminates the cold starts of the virtual machine model" and that an isolate can start around a hundred times faster than a Node process in a container or VM. Its limits page sets a 1 second Worker startup limit. AWS documents that Lambda cold starts typically occur in under 1% of invocations and range from under 100 ms to over 1 second, and offers provisioned concurrency to reduce them.

### Do Lambda function URLs cost extra?

No. AWS's documentation says function URLs follow the standard Lambda pricing model and "There are no additional charges for the URL endpoint itself." API Gateway is billed separately: HTTP APIs are $1.00 per million requests and REST APIs $3.50 per million in US East, after a 1M-call free tier for the first 12 months.

### Can I run Python or Java on Cloudflare Workers?

Workers has first-class support for JavaScript, TypeScript, Python and Rust, plus WebAssembly for languages such as C, C++, Kotlin and Go. There is no Java runtime listed. Lambda Event Functions have managed runtimes for Node.js, Python, Java, .NET and Ruby, plus an OS-only runtime for Go and Rust.

### What are AWS Lambda Web Functions?

Announced on 12 Oct 2026, Web Functions let you run a standard Node.js HTTP server (Express, Hono, Fastify, Next.js) on Lambda. They run Node.js 24 on Arm64 in five Regions at launch, handle up to 128 concurrent requests per environment, bill active CPU time plus memory for as long as the environment exists, and charge $0.30 per million requests.

## Sources

- [Cloudflare Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/), last checked 15 Nov 2026
- [Cloudflare Workers limits](https://developers.cloudflare.com/workers/platform/limits/), last checked 15 Nov 2026
- [How Workers works](https://developers.cloudflare.com/workers/reference/how-workers-works/), last checked 15 Nov 2026
- [Workers languages](https://developers.cloudflare.com/workers/languages/), last checked 15 Nov 2026
- [Workers development and testing](https://developers.cloudflare.com/workers/development-testing/), last checked 15 Nov 2026
- [Workers framework guides](https://developers.cloudflare.com/workers/framework-guides/), last checked 15 Nov 2026
- [Next.js on Cloudflare Workers](https://developers.cloudflare.com/workers/framework-guides/web-apps/nextjs/), last checked 15 Nov 2026
- [AWS Lambda pricing](https://aws.amazon.com/lambda/pricing/), last checked 15 Nov 2026
- [AWS Lambda quotas](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html), last checked 15 Nov 2026
- [Lambda execution environment lifecycle](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html), last checked 15 Nov 2026
- [Lambda runtimes](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html), last checked 15 Nov 2026
- [Choosing function URLs or API Gateway](https://docs.aws.amazon.com/lambda/latest/dg/furls-http-invoke-decision.html), last checked 15 Nov 2026
- [Announcing AWS Lambda Web Functions (AWS News Blog)](https://aws.amazon.com/blogs/aws/announcing-aws-lambda-web-functions-for-fast-consistent-web-app-performance-anywhere/), last checked 15 Nov 2026
- [How AWS's Firecracker virtual machines work (Amazon Science)](https://www.amazon.science/blog/how-awss-firecracker-virtual-machines-work), last checked 15 Nov 2026
- [Amazon API Gateway pricing](https://aws.amazon.com/api-gateway/pricing/), last checked 15 Nov 2026
- [Amazon EC2 on-demand pricing (data transfer)](https://aws.amazon.com/ec2/pricing/on-demand/), last checked 15 Nov 2026
- [Amazon DynamoDB on-demand pricing](https://aws.amazon.com/dynamodb/pricing/on-demand/), last checked 15 Nov 2026
- [AWS SAM CLI: sam local invoke](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/using-sam-cli-local-invoke.html), last checked 15 Nov 2026
- [Hono on AWS Lambda](https://hono.dev/docs/getting-started/aws-lambda), last checked 15 Nov 2026

## Frequently asked questions

### Is Cloudflare Workers cheaper than AWS Lambda?

For I/O-bound APIs it usually is once traffic grows, because Workers bills CPU time (waiting on network calls does not count) and charges no egress, while Lambda Event Functions bill wall-clock duration times memory. At very low traffic Lambda can be cheaper, because its free tier covers 1M requests and 400,000 GB-seconds each month while Workers Paid has a $5/mo minimum.

### Does Cloudflare Workers have cold starts?

Cloudflare says its isolate model 'eliminates the cold starts of the virtual machine model' and that an isolate can start around a hundred times faster than a Node process in a container or VM. Its limits page sets a 1 second Worker startup limit. AWS documents that Lambda cold starts typically occur in under 1% of invocations and range from under 100 ms to over 1 second, and offers provisioned concurrency to reduce them.

### Do Lambda function URLs cost extra?

No. AWS's documentation says function URLs follow the standard Lambda pricing model and 'There are no additional charges for the URL endpoint itself.' API Gateway is billed separately: HTTP APIs are $1.00 per million requests and REST APIs $3.50 per million in US East, after a 1M-call free tier for the first 12 months.

### Can I run Python or Java on Cloudflare Workers?

Workers has first-class support for JavaScript, TypeScript, Python and Rust, plus WebAssembly for languages such as C, C++, Kotlin and Go. There is no Java runtime listed. Lambda Event Functions have managed runtimes for Node.js, Python, Java, .NET and Ruby, plus an OS-only runtime for Go and Rust.

### What are AWS Lambda Web Functions?

Announced on 12 Oct 2026, Web Functions let you run a standard Node.js HTTP server (Express, Hono, Fastify, Next.js) on Lambda. They run Node.js 24 on Arm64 in five Regions at launch, handle up to 128 concurrent requests per environment, bill active CPU time plus memory for as long as the environment exists, and charge $0.30 per million requests.


