Why we deploy on Cloudflare (and not AWS).

330 cities, unlimited bandwidth, EUR 0/mo. Why Cloudflare for an Astro site, and the four cases where Vercel is the right call.

On this page · 9 sections

When we deliver an Astro site, it is hosted on Cloudflare. Not on a shared host, not on AWS, not on a VPS someone has to maintain. On Cloudflare Pages, with automatic deployment from GitHub.

This choice is not arbitrary. It is the result of a methodical comparison — price, performance, simplicity, long-term viability.

What “hosting a site” means in 2026#

Hosting a WordPress site means renting a server. That server runs PHP, manages a MySQL database, and rebuilds every page on every visit. It must be maintained, updated, and secured. It is a fixed monthly cost, regardless of traffic.

Hosting a static site (Astro, Hugo, Eleventy) is different. The site is built once — at deployment time. The result is a folder of HTML, CSS, JavaScript, and image files. Those files are distributed across a network of servers (CDN) and served directly to visitors. No server to maintain. No database. No PHP.

The question is no longer “which server to rent” but “which CDN to use”.

Why Cloudflare, not the others#

There are four serious options for hosting a static site in 2026: Cloudflare Pages, Netlify, Vercel, and AWS Amplify. Here is the honest comparison:

CriterionCloudflare PagesNetlifyVercelAWS Amplify
Free planYesYesYes (non-commercial)Yes (limited)
Free bandwidthUnlimited100 GB/mo100 GB/mo15 GB/mo
Paid plan$5/mo$19/mo$20/user/moVariable
Overage feesNone$40-55/100 GB$40-55/100 GBVariable
Points of presence330+ cities~20 regions~20 regions~30 regions
DDoS protectionIncludedBasicBasicVia AWS Shield

The table speaks for itself. But the two most important points deserve elaboration.

Unlimited bandwidth, no surprises#

This is the point that makes the difference day to day. On Cloudflare, bandwidth is unlimited on the free plan. No meter, no overage, no surprise bill.

On Netlify and Vercel, the free plan includes 100 GB of bandwidth per month. That sounds like a lot — until a blog post goes viral, an ad campaign drives traffic, or your images are a bit heavy. Exceeding the quota costs between $40 and $55 per additional 100 GB.

A business site with 50,000 visits per month and optimised images uses roughly 15 to 25 GB of bandwidth. On Cloudflare, that is free. On Netlify, that is free. On Vercel, that is free. The difference appears when traffic doubles — and it always doubles at the worst time.

Static hosting comparison, 2026 data.

330 cities, not 20 regions#

Cloudflare has servers in over 330 cities across 125 countries. When a visitor loads your site, files are served from the nearest server — not from a datacenter in Virginia or Frankfurt.

In practice: a visitor in Lyon gets your site from a server in Lyon (or Paris). A visitor in Montreal gets it from Montreal. On the sites we deploy, the Time to First Byte (TTFB) measured via Cloudflare Radar is under 50 milliseconds for the vast majority of visitors.

Competitors (Netlify, Vercel) have around twenty regions. That is sufficient for a North American or European audience, but it shows for a global one — and it shows in Core Web Vitals.

What happens when you publish a post#

Here is the full pipeline, from the moment you click “Publish” in Decap CMS to the site going live:

  1. Publish

    You click "Publish" in Decap CMS. The content is merged into the main branch on GitHub.

  2. Build

    Cloudflare detects the change on GitHub. It runs the Astro build — generating HTML, optimising images, producing sitemaps.

  3. Deploy

    The generated files are distributed across 330+ Cloudflare servers in seconds.

  4. Live

    Your post is accessible worldwide, served from the server nearest to each visitor.

Fig. 1 — The deployment pipeline, from publication to going live.

Total time: between 30 seconds and 2 minutes. No FTP, no manual deployment, no risk of breaking anything.

Security included, not optional#

With traditional WordPress hosting, security is your responsibility: core updates, plugin updates, SSL certificate, firewall, brute-force protection, backups. Many people pay for a security plugin (Wordfence, Sucuri) between EUR 100 and 300/year to handle all of this.

With Cloudflare Pages:

  • SSL/TLS is automatic and free
  • DDoS protection is included on all plans
  • Web Application Firewall (WAF) is available
  • No server to protect — there is no PHP, no database, no attack surface

A static site has no login form to brute-force, no /wp-admin to protect, no vulnerable plugin to exploit. Security by architecture is more reliable than security by plugins.

Astro + Cloudflare: a natural convergence#

In January 2026, Cloudflare acquired Astro (the company behind the framework). The Astro team joined Cloudflare. The framework remains open source and MIT-licensed.

What this changes for you:

  • The integration between Astro and Cloudflare is maintained by the same team
  • Performance optimisations are a priority
  • The long-term viability of the Astro + Cloudflare combination is assured

What it does not change:

  • Astro still works with Netlify, Vercel, or any other host
  • You are not locked into a proprietary stack
  • Your site code is yours, on your GitHub

Where Cloudflare is not the right choice#

A comparison that never says where its favourite loses is not a comparison. Here are the four places where Cloudflare costs more than it returns.

It does not run on Node.js. Cloudflare runs code on its own engine, workerd, not on Node. A dependency that touches the file system fails at build time unless you force the prerender environment to Node in the adapter config. CommonJS libraries sometimes need pre-compiling. On Vercel or Netlify it is Node, and the question never comes up.

The Astro adapter has left Pages. As of its latest version, Astro’s Cloudflare adapter targets Cloudflare Workers rather than Cloudflare Pages. A fully static site still deploys to Pages with no adapter at all, which is what we ship. But the moment you add server rendering, you move to Workers. Cloudflare is not closing Pages and maintains a migration guide, but the product direction is clear.

The free plan has walls this article had not mentioned. 500 deployments a month, 20,000 files per deployment, 25 MiB per file, one build at a time, and a build cut off at 20 minutes. For a brochure site none of these are reachable. For a site with tens of thousands of pages or images, the file ceiling arrives before any of the others.

Vercel is still ahead on comfort. Tooling, error messages, cold starts on server rendering: the developer experience is better there, and that difference costs time on complex projects. If your site is a server-rendered application rather than a content site, Vercel is the default choice, not Cloudflare.

These limits come from the documentation for Astro’s Cloudflare adapter and from Cloudflare’s own documentation on Pages limits and migrating from Pages to Workers.

What it costs in practice#

For a business site or company blog with normal traffic (up to 100,000 visits per month):

ItemMonthly cost
Cloudflare Pages hostingEUR 0 (Free plan)
Domain name~EUR 1/mo (EUR 12/yr)
SSL certificateEUR 0 (included)
CDNEUR 0 (included)
DDoS protectionEUR 0 (included)
Total~EUR 1/mo

Compare with traditional WordPress hosting: EUR 10 to 30/mo for the host, EUR 5 to 15/mo for premium plugins, EUR 5 to 20/mo for maintenance. Between EUR 20 and 65/mo — for a similar visitor experience, with more maintenance on the owner’s side. Over three years, the total cost gap exceeds the price of the site itself.


The choice of hosting is not a technical detail. It determines your site’s speed, security, reliability, and your monthly bill. If you want to see what your site would look like on this stack, the configurator gives you a price in 2 minutes.

Reading is good. Building is better.