R2 + image CDN

Stop Serving Full-Size Images. Build a Smarter Edge.

I set up Cloudflare R2 as your image CDN with on-demand resizing. Your site stops pre-generating dozens of thumbnails on every upload. Instead, R2 builds exactly the size each visitor needs, caches it at the edge, and serves it in under 50ms globally. Slow images dragging your scores? Start with a speed audit.

800+Businesses served
18+Years on WordPress
50msEdge delivery
1 filemu-plugin, no bloat

Why your media library is a bandwidth sinkhole

💾

Wasted storage

Every 3MB upload spawns 6-10 thumbnails. Across a few thousand posts that’s 50-100GB of dead weight nobody requested.

🔥

Origin overload

Every image request hits PHP and your bandwidth allocation. Images alone can saturate a busy server at peak traffic.

📉

Missing sizes

When a requested size doesn’t exist, the site falls back to the massive original and tanks your Core Web Vitals.

🐢

Slow backups

A bloated uploads folder makes backups crawl and restores risky, right when you need them to be fast.

🌍

No global edge

Without a CDN, a visitor in Sydney waits on your origin in Mumbai. Distance becomes latency on every single image.

🧩

Plugin bloat

Heavy optimization plugins add DB tables, settings screens, and their own slowdowns to fix a problem they half-create.

What you get

A modern edge that generates any size on demand and caches everything globally. One PHP file, no settings to babysit.

  • Cloudflare R2 bucket attached to your domain
  • Edge Worker for on-demand image processing
  • On-the-fly resizing: request hero-800×600.webp, get it built and cached
  • WebP conversion for every served image
  • Lightweight mu-plugin, one file, secret-protected endpoint
  • Pull-through cache for CSS, JS, fonts, and PDFs
  • Migration of existing uploads to R2 with validation
  • A before/after report on storage and origin load saved

Before → after

10 thumbnails per uploadSizes built only when requested
50-100GB origin bloatLean origin, assets on the edge
Origin hit per imageEdge cache under 50ms
Original served on missExact size, every time

Implementation workflow

1

Audit & baseline

I review your hosting, CDN, media library size, and thumbnail footprint to measure exactly how much storage you’re wasting.

2

R2 & Worker setup

I provision the R2 bucket on your domain and write the Edge Worker that handles on-demand image processing.

3

WordPress integration

I add the mu-plugin that rewrites assets to your R2 domain and exposes the private, secret-protected resize endpoint.

4

Migration & validation

I sync existing uploads to R2, confirm global CDN hits, and hand you a before/after report on the gains.

Let’s offload your media library

Send me your domain and rough media library size. I’ll outline exactly how much origin load and storage you can eliminate.

Start a project →