Best WordPress CDN Options 2026: Free, Paid, and Host-Included

Cloudflare free, BunnyCDN, Rocket.net, Kinsta CDN, Cloudways CDN — which WordPress CDN is right for your site? Real performance comparison.

Dobromir Dechev
Dobromir WordPress agency owner

Quick answer

The best WordPress CDN in 2026 is Cloudflare Free for most sites, BunnyCDN for affordable asset delivery, and Rocket.net's Cloudflare Enterprise for agencies needing edge-cached HTML at sub-50ms TTFB.

Most guides about WordPress CDNs start and end with "your images load faster." That's true but it's the least interesting part. The real performance gain from a CDN isn't image delivery — it's full-page HTML caching at the edge.

When HTML is cached at a CDN's Points of Presence (PoPs), a visitor in Frankfurt doesn't wait for your server in New York to execute PHP, query the database, build the page, and send it back across the Atlantic. They get the pre-built HTML from a server that might be 10ms away. That's the difference between a 600ms TTFB and a 20ms TTFB. For Core Web Vitals, that difference is the entire ballgame.

The problem is that most CDNs — including Cloudflare's free tier — don't cache HTML by default. Caching dynamic WordPress pages at the edge requires either a specific configuration, an additional paid feature, or a hosting platform that handles it for you. This guide breaks down every serious CDN option for WordPress in 2026, what each one actually does versus what it claims to do, and which is right for your setup.


What a CDN actually does for WordPress

A CDN operates by storing copies of your content on servers distributed globally. When a visitor requests your site, the CDN serves the content from the nearest PoP rather than routing the request all the way back to your origin server. Here's what each layer means in practice:

Static asset delivery (images, CSS, JS): This is what all CDNs do, including free ones. A CSS file requested from London gets served from a London-region PoP rather than your server in Chicago. This reduces the round-trip for each asset and can cut page load times by 200–400ms for international visitors. Most WordPress sites see meaningful improvement from this alone.

Full-page HTML caching at edge: This is where the significant gains are. Instead of your origin server building the HTML for every request, the CDN caches the complete HTML response and serves it directly. A visitor to a cached page never touches your server at all. Cloudflare calls this feature APO (Automatic Platform Optimization). Rocket.net includes it. Kinsta's CDN does not — HTML is always served from Kinsta's origin servers.

TTFB impact: To illustrate the difference — a London visitor accessing a WordPress site hosted on a US server with no CDN or caching: TTFB around 600–900ms. Same site with static asset CDN only: TTFB still 600–900ms (the HTML itself still comes from the US). Same site with full-page HTML caching at edge: TTFB 20–50ms. The static asset delivery doesn't move the needle on TTFB. Only HTML edge caching does.

DDoS mitigation: CDNs, particularly Cloudflare, absorb traffic at the edge before it reaches your origin. This is a security benefit that comes alongside the performance features.


Free vs paid CDN: what you actually get

The gap between free and paid CDN tiers for WordPress is substantial, and it's worth being specific about what you lose on the free tier.

Cloudflare free tier:

  • Static asset caching at 200+ PoPs: yes
  • Full-page HTML caching (APO): no — this is a $5/month add-on
  • Image optimisation (Polish, WebP conversion): no — Pro plan ($20/month) and above
  • Priority support: no
  • Cache rules customisation: limited (3 rules on free)
  • DDoS protection: yes (basic)

Cloudflare Pro ($20/month):

  • Everything free includes
  • Polish image optimisation and WebP conversion
  • 20 cache rules
  • Mobile redirect rules
  • Priority email support

Cloudflare APO ($5/month, works on any plan):

  • Full-page HTML caching at Cloudflare's edge
  • Automatic cache bypass for logged-in users
  • Automatic WooCommerce bypass for cart/checkout pages
  • Cache purge on WordPress post publish (via Cloudflare WordPress plugin)

For most WordPress sites, Cloudflare free + APO ($5/month) gives you the biggest performance-per-dollar ratio of any CDN option.


Option 1 — Cloudflare (free tier)

Cloudflare's free tier is the correct starting point for any WordPress site that isn't on a host with an included CDN. Here's the setup:

Step 1: Create a Cloudflare account and add your domain. Cloudflare scans your existing DNS records and imports them. Verify the imported records match your current DNS configuration before proceeding.

Step 2: Change your domain's nameservers to the two Cloudflare nameservers assigned to your account. This is done at your domain registrar (Namecheap, GoDaddy, Google Domains, etc.). DNS propagation takes up to 24 hours but usually completes within 1–2 hours.

Step 3: Enable the proxy (orange cloud) for your A and CNAME records. Grey cloud = DNS only, no CDN. Orange cloud = traffic routes through Cloudflare. You want orange cloud on your apex domain and www subdomain.

Step 4: In Cloudflare > Caching > Configuration, set Caching Level to "Standard" and Browser Cache TTL to "4 hours" or longer for static assets. Set "Always Online" to on if you want Cloudflare to serve a cached version when your origin is down.

Step 5: Install the Cloudflare plugin for WordPress. This enables automatic cache purge when you publish or update posts. Without it, Cloudflare caches your HTML for the TTL duration and visitors see stale content after you make changes.

What free tier doesn't give you: HTML pages are not cached at the edge. Every page request still hits your origin server. You get the static asset delivery (images, CSS, JS) at edge, the DDoS protection, and the SSL termination at edge — but not the full-page TTFB improvement.


Option 2 — Cloudflare APO ($5/month)

Cloudflare APO (Automatic Platform Optimization) is the $5/month add-on that transforms Cloudflare from a static asset CDN into a full WordPress edge caching solution.

What APO adds:

APO caches your WordPress HTML pages at Cloudflare's edge PoPs. A visitor requesting your homepage gets the HTML from the nearest Cloudflare PoP — not from your origin server. This is the configuration that produces 20–40ms TTFB for visitors worldwide, regardless of where your origin server is located.

APO is WordPress-aware. It automatically bypasses edge caching for:

  • Logged-in WordPress users (so admin users see live content, not cached pages)
  • WooCommerce cart and checkout pages (so cart contents are always live)
  • Pages with active WordPress cookies

Cache is automatically purged when you publish or update a post, provided you have the Cloudflare plugin installed and configured with your API token.

Setup:

Enable APO from the Cloudflare dashboard under Speed > Optimization. Install the Cloudflare plugin for WordPress and configure it with an API token that has Cache Purge permissions. The plugin handles the cache purge on publish automatically from that point.

Performance reality:

With APO enabled, a WordPress blog post served from Cloudflare's London PoP to a London visitor will TTFB in 15–30ms. Without APO, the same visitor's request goes to your origin server — even if that's in a European data centre, you're looking at 80–200ms TTFB for a typical WordPress page. For a US-hosted site, the pre-APO TTFB to a European visitor is 400–800ms.

APO is worth the $5/month for virtually any content site. For WooCommerce stores with dynamic cart behaviour, it works correctly because of the smart bypass rules — but test thoroughly after enabling.



Option 3 — Rocket.net (Cloudflare Enterprise)

Rocket.net is a WordPress-specific managed host that bundles Cloudflare Enterprise as part of every plan, starting at $30/month. This isn't Cloudflare Pro or Business — it's Enterprise tier, which means:

  • 300+ PoPs (vs 200+ on free/Pro/Business)
  • Cloudflare's Argo Smart Routing for origin requests
  • Better cache hit rates due to larger PoP network
  • Tiered caching (regional caches between edge and origin)
  • Cloudflare Workers for edge logic

More importantly for WordPress: full-page HTML caching at edge is included and pre-configured. There's no $5/month APO add-on — Rocket.net's platform handles edge caching as a core feature, not an optional extra.

The practical difference between APO and Cloudflare Enterprise for a WordPress site is:

  • More PoPs = edge nodes closer to more visitors = marginally lower latency in less-served regions (Southeast Asia, South America, Africa)
  • Higher cache hit rates due to tiered caching architecture
  • No cost per CDN request beyond your hosting plan

If you're starting fresh with a performance-first WordPress site and don't want to manage CDN configuration separately, Rocket.net is the most complete out-of-the-box solution. You're paying $30/month for hosting plus CDN rather than $10/month hosting + $5/month APO + your own Cloudflare account management.


Option 4 — Kinsta CDN (Cloudflare included)

Kinsta includes CDN on all plans, powered by Cloudflare's network. What Kinsta's CDN covers:

  • Static assets (images, CSS, JS, fonts) cached at Cloudflare's edge
  • Automatic cache purge when you publish or update in WordPress
  • Global coverage via Cloudflare's PoP network

What Kinsta's CDN does not do: HTML pages are not cached at Cloudflare's edge. When a visitor requests a WordPress page on Kinsta, the HTML is served from Kinsta's origin server (which uses full-page caching at the server level via Nginx FastCGI cache). The Cloudflare layer handles assets only.

This means Kinsta's TTFB performance is determined by the proximity of the Kinsta data centre you chose when setting up the site, not by Cloudflare's global PoP network. A visitor in Frankfurt accessing a Kinsta site hosted in Google Cloud's europe-west3 region will have a short round trip — good. A visitor in Brazil accessing the same site gets TTFB determined by the transatlantic/transpacific distance to the Kinsta origin.

For most Kinsta customers, the included CDN plus Kinsta's server-level page caching is sufficient. For global audiences where you have a significant portion of visitors far from your chosen data centre, adding Cloudflare APO on top of Kinsta is the correct move (you proxy Kinsta through Cloudflare's nameservers, enable APO, configure the API key — it works).


Option 5 — Cloudways CDN (Cloudflare add-on)

Cloudways offers a Cloudflare CDN add-on at $1.49/month per application. This is static asset delivery only — it does not include full-page HTML edge caching.

What it covers:

  • Images, CSS, JS, and other static assets cached at Cloudflare's edge
  • Basic DDoS protection at the Cloudflare layer
  • Easy setup from the Cloudways dashboard (no separate Cloudflare account needed)

What it doesn't cover:

  • HTML caching at edge (you still need your origin server to serve HTML on every request, relying on Cloudways' server-level caching via the Breeze plugin or Varnish)
  • APO-equivalent full-page edge caching

For a budget WooCommerce setup on Cloudways, the $1.49/month CDN add-on combined with Breeze's full-page cache at the origin is a solid and inexpensive stack. Breeze handles full-page caching at the Cloudways origin server — your PHP/database overhead is eliminated for cached pages. Cloudflare delivers assets globally. The limitation is that your TTFB is still constrained by the distance between visitor and your chosen Cloudways data centre.

If you want HTML edge caching on Cloudways, you can create a separate Cloudflare account, point your DNS to Cloudflare's nameservers (rather than using the Cloudways CDN add-on), and enable APO. This costs $5/month with Cloudflare directly rather than the $1.49/month Cloudways add-on, but you get full HTML edge caching.


Option 6 — BunnyCDN (cheapest paid)

BunnyCDN charges $0.01 per GB of traffic, with no minimum monthly fee beyond a $1 minimum. For image-heavy sites with high traffic volume, this pricing model beats every flat-rate CDN option at sufficient scale.

How to use BunnyCDN with WordPress:

BunnyCDN is a pure CDN — it doesn't integrate with WordPress's publish/update cycle natively. Setup options:

  • WP Offload Media + BunnyCDN: Offload your wp-content/uploads/ directory to BunnyCDN's storage. Media files are stored on BunnyCDN and served from their network. The WordPress plugin handles the URL rewriting. This is the cleanest integration for media-heavy sites.
  • Rewrite via .htaccess or Nginx: Rewrite requests for /wp-content/ to your BunnyCDN pull zone URL. Simple, no plugin required, but requires server configuration access.
  • CDN Enabler plugin (free): Rewrites static asset URLs in page HTML to your BunnyCDN pull zone. No server access required.

BunnyCDN does not offer full-page HTML caching for WordPress. It's a pure static asset CDN.

When BunnyCDN makes sense:

  • You have a media-heavy site (photography portfolios, high-res product images) with predictable traffic
  • You're already using Cloudflare for HTML caching and want a separate CDN for bandwidth-heavy assets (keep asset costs on BunnyCDN's $0.01/GB instead of Cloudflare's metered pricing at higher tiers)
  • Budget is constrained and your monthly asset traffic is low enough that BunnyCDN's per-GB billing stays under flat-rate alternatives

CDN comparison table

CDN optionPriceFull-page HTML cachingPoP countWooCommerce safeAuto cache purge
Cloudflare freeFreeNo200+YesWith plugin
Cloudflare APO$5/monthYes200+Yes (smart bypass)Yes
Rocket.net (Enterprise)Included ($30/month hosting)Yes300+YesYes
Kinsta CDNIncluded in hostingNo (assets only)200+YesYes
Cloudways CDN$1.49/month/appNo (assets only)200+YesWith plugin
BunnyCDN$0.01/GBNo90+YesManual / plugin

Which CDN to choose

Content-only blog or brochure site: Cloudflare free + APO ($5/month total). Full-page HTML edge caching, auto cache purge on publish, global TTFB in 20–40ms. Nothing else at this price point comes close.

WooCommerce store: Rocket.net if budget allows — the Cloudflare Enterprise edge caching handles the WooCommerce bypass rules correctly, and you're not maintaining a separate CDN configuration. Alternatively, Cloudways + Cloudflare APO if you want more infrastructure control and are comfortable managing two services. Kinsta + Cloudflare APO also works well — Kinsta's server-level caching handles authenticated requests, APO handles the public-facing cached pages.

Agency managing many sites: Kinsta with CDN included per site. One billing relationship, CDN automatically configured per site, no per-site CDN setup overhead. The limitation (no HTML edge caching) is acceptable for most client sites where the Kinsta origin's TTFB is already fast due to server-level caching.

High-traffic media or image-heavy site: BunnyCDN for static assets at $0.01/GB + Cloudflare APO for HTML caching. Split the CDN role — Cloudflare handles HTML edge caching and DDoS mitigation, BunnyCDN handles the bandwidth-intensive image delivery at the lowest per-GB cost available.

Budget-constrained setup: Cloudflare free tier. You get DDoS protection, SSL termination at edge, and global asset delivery for free. Enable Cloudways CDN ($1.49/month) or pair with a server-level caching plugin to compensate for the lack of HTML edge caching. When you have $5/month to spare, add APO.


Frequently Asked Questions

Do I need a CDN for WordPress?
Yes, for any site with a global or national audience. A CDN reduces latency by serving assets from servers geographically close to each visitor. Full-page HTML caching at the CDN edge (available on Cloudflare Pro+ and Rocket.net) is the most impactful performance upgrade you can make.
Is Cloudflare free good for WordPress?
Cloudflare Free is excellent for asset delivery (images, CSS, JS) and provides DNS-level DDoS protection. It does not cache HTML pages by default — you need Page Rules or a Cache Rule to cache HTML, which requires careful WooCommerce and logged-in user exclusions.
What is the best free CDN for WordPress?
Cloudflare Free is the best free CDN option. It covers 330+ PoPs globally, includes DDoS protection, and a free SSL certificate. BunnyCDN is the best paid option for pure asset delivery at around $1/month for most small sites.
What is the difference between Cloudflare Free and Pro for WordPress?
Cloudflare Pro ($20/month) adds image optimisation (Polish), mobile image resizing, and faster firewall rule updates. For most WordPress sites, Free is sufficient. The biggest upgrade comes from Business or Enterprise tier, which enables full HTML edge caching.
Does my WordPress host include a CDN?
Kinsta includes Cloudflare CDN on all plans. Rocket.net includes Cloudflare Enterprise. Cloudways offers their own CDN as a paid add-on. SiteGround and Hostinger include basic CDNs. Always verify whether your host's included CDN caches HTML pages or just static assets.

Was this article helpful?