Cost

What does a web app on Cloudflare Workers cost?

Nothing, until your app passes 100,000 requests a day: Cloudflare’s free plan covers the app and its D1 database. Past that, the Workers Paid plan is $5 a month and includes 10 million requests. Worked through with Cloudflare’s and PlanetScale’s published prices, 10 million requests a month costs $5.80, and 100 million costs $50.40, by which point the data has moved to Postgres on PlanetScale. The framework itself is free.

How much does it cost to run a web app on Cloudflare Workers?

These are the totals the cost slider on the home page shows, from the same prices and assumptions. A request is a page or a form your app answers.

  • 10,000 requests a month, about 330 a day: $0. Cloudflare’s free plan covers it.
  • 100,000 requests a month, about 3,300 a day: $0. Cloudflare’s free plan covers it.
  • 1 million requests a month, about 33,000 a day: $0. Cloudflare’s free plan covers it.
  • 10 million requests a month, about 330,000 a day: $5.80. Past 100,000 a day, you’re on the $5 plan.
  • 100 million requests a month, about 3.3 million a day: $50.40. Your data has moved to Postgres on PlanetScale.

Up to 100,000 requests a day: free

Every Cloudflare account starts on Workers Free. Your app and its database run on it at no cost while each day stays within 100,000 requests, counted from midnight UTC. Only requests your app answers count: its scripts, styles and images are static assets, which Cloudflare serves free and without limit.

Over a 30-day month, that’s 3 million requests for $0. The free plan’s other limits that matter to an app:

Past 10 million: you pay for what you use

Each million requests over 10 million costs $0.30, and each million ms of CPU time over 30 million costs $0.02.

Cloudflare’s own worked example is a Worker serving 15 million requests a month at 7 ms each: $8.00, made of the $5, $1.50 of requests and $1.50 of CPU time. The figures here use the same 7 ms, so they come to the same total.

From 50 million: Postgres on PlanetScale

D1 is built on SQLite, and each database works through its queries one at a time. At 1 ms a query, Cloudflare puts that at about 1,000 a second. At 50 million requests a month, with 5 queries a request and the busiest hour at 3 times the average, your app asks for about 290 a second. That’s where the figures move the data to Postgres. Move sooner if your data is heading for D1’s 10 GB.

The move adds two lines to the bill: PlanetScale’s smallest Postgres, $5.00 a month on one server, and Cloudflare Hyperdrive, which connects your app to it and is included in Workers Paid. So 50 million requests a month is $28.40, and 100 million is $50.40, of which Cloudflare’s share is $45.40, as in its own worked example.

PlanetScale describes that server as for development and low-traffic workloads. A busy app may want a bigger one, or its High Availability setup with replicas in three zones, priced on the same page.

In your app, the move changes the database setup and its migrations, while your pages and most of your actions stay as they are. On Postgres, writes that must land together can also run as a transaction with logic between them: D1 has batches, but no such transactions. Do these apps scale? has the signs it’s time.

What the figures assume

The prices are Cloudflare’s and PlanetScale’s. The rest is ours, and the slider assumes the same:

  • Prices are Cloudflare’s and PlanetScale’s own, in US dollars, as of October 2026.
  • Each request uses 7 ms of CPU time, as in Cloudflare’s worked examples. At 15 and 100 million requests, our Cloudflare totals match theirs.
  • Requests are spread evenly over a 30-day month. The free plan counts by the day, so one busy day can take you past it sooner.
  • We move the data to Postgres at 50 million. If each page runs five queries and the busiest hour is three times the average, that’s nearly 300 queries a second, and one D1 database works through them one at a time. Move sooner if your data is heading for D1’s 10 GB.
  • PlanetScale’s $5 is its smallest Postgres, on one server. More storage and backups cost extra.
  • D1 costs nothing in the figures, so they assume your app stays within what each plan includes. Past that, Cloudflare charges $0.001 a million rows read, $1.00 a million rows written, and $0.75 a GB a month for storage over 5 GB.
  • Other Cloudflare products your app adds, such as Queues, R2 or KV, have their own allowances and prices, on the same pricing page.

Questions people ask

Is Cloudflare Workers free?

Yes, up to 100,000 requests a day, with D1 databases of up to 500 MB each. Cloudflare’s pricing page lists the free plan’s limits. Past them, Workers Paid is $5 a month for your whole account.

What happens if I go over the free plan?

Past 100,000 requests in a day, Cloudflare answers your app’s requests with error 1027 until the count resets at midnight UTC. Past D1’s daily reads or writes, its queries fail until then too. Workers Paid has no daily request limit, and moving to it lifts D1’s daily limits, typically within minutes.

How much does a database cost?

Nothing to start. D1 comes with both plans: up to 10 databases of 500 MB on the free one, and 10 GB a database with 5 GB of storage included on the $5 one, then $0.75 a GB a month. If you move to Postgres, PlanetScale’s smallest server is $5.00 a month, and Hyperdrive, which connects your app to it, is included in Workers Paid.

Do I pay for bandwidth?

No. Cloudflare charges nothing for data transfer or bandwidth on Workers or D1, and requests for your app’s scripts, styles and images are free.

Does the framework cost anything?

No. @popcomputer/web is open source under the MIT licence. You pay Cloudflare, PlanetScale if you move to Postgres, and the AI you build with.