As of October 2026, Cloudflare Workers has a Free plan capped at 100,000 requests per day and a Paid plan with a $5 per month minimum that includes 10 million requests and 30 million CPU milliseconds. Past that, requests cost $0.30 per additional million and CPU time costs $0.02 per additional million CPU ms. There is no charge for data transfer or bandwidth.
I run my own site, my-blog.org, on Workers with D1 and R2, so this is the table I check before adding anything that runs on every request.
The two plans side by side
| Free | Paid (Standard) | |
|---|---|---|
| Requests | 100,000 per day | 10 million per month included, then $0.30 per additional million |
| CPU time | 10 ms per invocation | 30 million CPU ms per month included, then $0.02 per additional million CPU ms |
| Duration | No charge | No charge or limit |
| Minimum charge | $0 | $5 per month per account |
Paid has a default max CPU of 30 seconds per invocation, configurable up to 5 minutes. Cron Trigger and Queue consumer invocations can run up to 15 minutes of CPU.
What is billed and what is not
- Static assets: requests to static assets are free and unlimited, and they do not count toward Worker request billing.
- Subrequests: Cloudflare does not bill for subrequests your Worker makes.
- WebSockets: a connection is billed as one request (the initial upgrade). Messages routed through the Worker are not counted.
- Bandwidth: no charge for data transfer or bandwidth.
- Caching: with Workers Caching enabled, cache hits are billed at the request rate, but CPU time is billed only on cache misses or bypasses.
The practical consequence: a site that serves most pages as static assets pays almost nothing per page view, and the thing to watch is CPU milliseconds on the dynamic routes.
The limits that decide your architecture
| Limit | Free | Paid |
|---|---|---|
| Subrequests per invocation | 50 | 10,000 (configurable up to 10M) |
| Memory per isolate | 128 MB | 128 MB |
| Worker size (uncompressed) | 64 MiB | 64 MiB |
| Workers per account | 100 | 500 |
| Simultaneous open connections | 6 per invocation | 6 per invocation |
The 50-subrequest cap on Free is the one that surprises people. A route that fans out to 60 API or database calls fails on Free and works on Paid. The 6 simultaneous connections cap means a seventh is queued, so a Promise.all over 20 fetches runs in waves.
A worked estimate
Take 25 million requests in a month, with CPU time inside the included 30 million ms. Requests over the included 10 million: 15 million. Overage: 15 x $0.30 = $4.50. Added to the $5 minimum, that is about $9.50 for the month, before any other Cloudflare product you attach.
That is my own arithmetic from the published rates, not a quote from Cloudflare, and it assumes the $5 minimum is the base charge that includes the allowances. D1 and R2 are billed separately and I have not priced them here.
Guardrails worth setting
You can cap CPU time per invocation in your Wrangler config or the dashboard to guard against runaway costs. For a first Paid month, set a cap and read the usage page after a few days instead of trusting an estimate.
If you want to see what a Workers-hosted site feels like from the outside, the tool pages on mine are at my-blog.org/tools.
Limits of this post
Every figure is from Cloudflare's Workers pricing and limits pages as of October 2026. I did not look up D1, R2 or KV prices, and the Workers limits page I used does not list them. Prices change, so confirm on the pricing page before you budget.
FAQ
Is Cloudflare Workers free? Yes, up to 100,000 requests per day and 10 ms CPU per invocation.
What does the Paid plan cost? A minimum charge of $5 per month per account, which includes 10 million requests and 30 million CPU ms.
Do static assets cost anything? No. Requests to static assets are free and unlimited.
Is bandwidth billed? No. There is no charge for data transfer or bandwidth.
Why does my Worker fail with many fetches on Free? The Free plan allows 50 subrequests per invocation; Paid allows 10,000.


Top comments (0)