CPW Media Offload for Cloudflare R2
Move your Media Library to Cloudflare R2, free disk space on your hosting and serve images from Cloudflare. Works with Elementor and any theme.
Solid choice
CPW Media Offload for Cloudflar… is a solid plugin choice in 2026, with a few things worth checking first. It runs on 50+ sites, is rated 5/5 and was last updated 1 week ago, and scores 75/100 on our health check.
- Actively developed — last update 1 week ago
- Tested with the latest WordPress (7.1)
- Small user base (50+ active installs)
- Very few reviews so far
How does it stack up?
Side-by-side on installs, updates, ratings & supportDaily downloads
Download spikes usually follow a new release — each site that auto-updates counts as a download.
Rankings
Where CPW Media Offload for Cloud… stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| cdn | >100 |
| cloudflare | #23 |
| media offload | #5 |
| r2 | #4 |
| webp | >100 |
Version adoption
Share of active sites per release.
Rating breakdown
★★★★★★★★★★ 5 from 2 reviews
About CPW Media Offload for Cloudflare R2
From the official readme · v1.3.2Description
CPW Media Offload for Cloudflare R2 copies your WordPress Media Library to a Cloudflare R2 bucket and rewrites the media URLs of your site so visitors download images, videos and documents from Cloudflare instead of your web server.
The Cloudflare R2 free tier includes 10 GB of storage and, when the bucket is served through a custom domain, no egress fees. That makes it a practical way to keep a small hosting plan fast: your server stops sending megabytes of images on every page view and stops filling its disk with thumbnails.
What it does
- Uploads new media, and every generated thumbnail size, to your R2 bucket.
- Optionally deletes the local copy after a successful upload, so the uploads folder stops growing.
- Rewrites attachment URLs,
srcsetsources, post content, widgets and blocks to the public bucket URL. - Bulk tool that offloads an existing library in small batches, with progress and a stop button.
- Copy files back to the server at any time, per file or for the whole library.
- Usage bar tuned for the 10 GB free tier, measured directly on the bucket.
- Optional WebP and AVIF conversion on delivery, done by Cloudflare itself, so no image is ever encoded on your server.
- Optional WebP conversion on upload, for sites that would rather store the smaller file.
- Cloudflare R2 column and per file actions inside the Media Library, including sending a changed file again.
- Rebuild tool that restores the offload index by checking the bucket, without uploading anything.
- Activity log so upload or permission problems are visible without server access.
WebP and AVIF without loading your server
Image conversion normally costs CPU: the server decodes the upload and re-encodes it, which is slow on shared hosting and simply unavailable where PHP was built without WebP support.
This plugin can hand that work to Cloudflare instead. Turn on Convert on delivery and your media URLs are served through Cloudflare Image Transformations, which converts each image to AVIF or WebP according to what the visitor’s browser accepts, resizes it to the width actually needed, and caches the result on the edge.
- Nothing is encoded on your web server, at upload time or afterwards.
- The originals on the bucket are never modified, so the change is fully reversible.
- Images already in your library are covered too: there is nothing to reprocess and nothing is rewritten in your database.
- Optionally, WordPress stops generating thumbnails altogether and Cloudflare produces every responsive size from the original. That is where the real saving on the 10 GB allowance comes from.
This requires a custom domain connected to your bucket, because transformations are served by the Cloudflare zone that answers for that domain. The r2.dev development address cannot do it. The Cloudflare free plan includes 5,000 unique transformations per month; repeat visitors are served from the cache and cost nothing.
Page builder and theme compatibility
Media URLs stored inside page builder data are rewritten as well, so background images, galleries and sliders keep working after an offload:
- Elementor and Elementor Pro, including generated CSS files and background images.
- Divi, Beaver Builder and WPBakery Page Builder.
- Block themes, classic themes, the block editor and any theme that uses the standard WordPress media functions.
Elementor’s CSS cache is cleared automatically after an offload so its generated files point at the new URLs.
Languages
The plugin is fully internationalised. Translations are provided through translate.wordpress.org, where Brazilian Portuguese and any other language can be contributed.
Security
- The secret access key is encrypted with your WordPress security keys before it is stored.
- Credentials can be defined as constants in
wp-config.phpand kept out of the database entirely. - Every form is protected with nonces and capability checks.
- No third party SDK is bundled: requests are signed with AWS Signature Version 4 and sent through the WordPress HTTP API.
External services
This plugin connects to the Cloudflare R2 storage service, which is the whole purpose of the plugin. It does not connect to any other external service and it sends no analytics or telemetry anywhere.
Cloudflare R2 (S3 compatible API)
- When: whenever a file is offloaded, restored, deleted or listed, and when you use the Test connection or Recalculate storage usage buttons.
- Where:
https://<your-account-id>.r2.cloudflarestorage.com(or the EU or FedRAMP jurisdiction endpoint you select, or a custom endpoint you enter). - What is sent: the media files you choose to offload, their file names and content types, your R2 access key id, a request signature generated from your secret access key, and a user agent string containing the plugin version and your site address.
- What is received: the storage responses of the service, including object listings and sizes used by the usage bar.
Files served to your visitors are additionally requested from the public bucket URL you configure (an r2.dev address or your own custom domain).
Cloudflare terms of service: https://www.cloudflare.com/terms/
Cloudflare privacy policy: https://www.cloudflare.com/privacypolicy/
Installation
- Install and activate the plugin.
- In your Cloudflare dashboard create an R2 bucket and an R2 API token with Object Read and Write permission.
- Go to Media → Cloudflare R2 and fill in the account id, access key id, secret access key and bucket name.
- Click Test connection.
- Give the bucket a public URL: either enable the
r2.devdevelopment URL, or, recommended for production, connect a custom domain to the bucket in Cloudflare. Paste that address in Public bucket URL. - Open the Offload tools tab and run Start offloading to move the existing library.
- Back in Settings, enable Serve media from R2.
- Only after checking that your site renders correctly, enable Delete the local copy after a successful upload to free disk space.
- Optional, and only if step 5 used a custom domain: enable transformations for that zone in Images → Transformations in your Cloudflare dashboard, then turn on Convert on delivery so Cloudflare serves WebP and AVIF without your server encoding anything.
Frequently asked questions
Do I need a paid Cloudflare plan?
No. The R2 free tier includes 10 GB of storage per month plus a monthly allowance of read and write operations, which is enough for most small and medium sites. The plugin shows how much of that allowance your media uses.
Does it work with Elementor?
Yes. Beyond the standard WordPress media functions, the plugin rewrites the URLs stored inside Elementor documents, so widgets, galleries and background images all point at Cloudflare. The Elementor editor keeps working with local paths, and Elementor’s CSS cache is cleared after an offload.
Will my media break if I deactivate the plugin?
No, as long as the local copies still exist: URLs simply go back to your server. If you enabled local deletion, run Copy everything back to the server in the Offload tools tab before deactivating.
Can I keep using the WordPress image editor?
Yes while the local copy is kept. With local deletion enabled, use Copy back to server on that file first, edit it, and it will be offloaded again.
Does it delete my files from R2 when I uninstall the plugin?
Never. Uninstalling removes only the plugin settings, log and internal post meta. Your bucket is left untouched.
I deleted the plugin and lost the record of what was offloaded. What now?
Your files are still on the bucket: the plugin never deletes them. Go to the Offload tools tab and run Rebuild the index, which checks every attachment against the bucket and restores the record without uploading anything. To stop it happening again, keep the setting Keep the settings and the offload index enabled, which is the default from version 1.1.0. Note that deleting a plugin runs its clean up routine, while updating one does not.
Does the plugin convert my images to WebP?
If you turn it on, and there are two ways to do it. Convert on delivery hands the work to Cloudflare, which is the recommended option and is covered in its own question below. Convert to WebP under Offloading does it on your own server instead: JPEG and PNG uploads are converted before the thumbnails are generated, so every size is WebP and the smaller file is what counts against your storage. GIFs are never converted so animations survive, and an image is only replaced when the WebP version really is smaller. It applies to new uploads: images already in the library are left as they are.
Can Cloudflare convert my images instead of my server?
Yes, and it is the better option. Turn on Convert on delivery under Image optimisation on Cloudflare. Your images are then served through Cloudflare Image Transformations, which converts them to AVIF or WebP per browser and caches the result. Your server never decodes or encodes an image, the originals on the bucket stay as they are, and images already in your library are covered without any reprocessing. You need a custom domain connected to your bucket and transformations enabled for that zone in Images → Transformations in the Cloudflare dashboard. The r2.dev development address does not…
What does the Cloudflare conversion cost?
The Cloudflare free plan includes 5,000 unique transformations per month. A unique transformation is one combination of options applied to one image: the first visitor pays for it and everyone after that is served from the cache, at no cost. Beyond the free allowance Cloudflare charges per thousand. The plugin uses a short ladder of five widths by default to keep that count low, and the cpw_r2_transform_widths filter lets you shorten it further.
Should I use the upload conversion or the delivery conversion?
Use one or the other, not both. The delivery conversion is the better default: it costs your server nothing, keeps your originals intact and applies to your whole library at once. The upload conversion is for sites without a custom domain on Cloudflare, or for anyone who would rather store the smaller file on the bucket and accept losing the original.
Can several sites share one bucket?
Yes. Give each site a different Path prefix, for example site-a and site-b.
What happens to files that fail to upload?
They are flagged and skipped so the bulk tool can continue. The reason is recorded in the Log tab, and Queue failed files again puts them back in line.
Changelog
Cosmetic release: makes the support panel easier to find. Nothing changes in how your media is offloaded or served.
1.3.2
- The donation link is easier to find: a “Buy me a coffee” button next to the plugin title, a redesigned support panel at the bottom of the screen and a short support note in the admin footer. Nothing changed in how media is offloaded or served.
1.3.1
- The plugin screen now has a support panel with a donation link and a shortcut to leave a review. Nothing changed in how media is offloaded or served.
- The plugins list shows a donation link in the plugin row.
1.3.0
- New: images can be converted to WebP or AVIF by Cloudflare on delivery, through Cloudflare Image Transformations. Your server no longer encodes anything, the originals on the bucket are left untouched, and images already in the library are covered without reprocessing.
- New: optional output format, delivery quality and maximum delivered width for the Cloudflare conversion.
- New: optional setting that stops WordPress generating thumbnails and lets Cloudflare produce every responsive size from the original, which is what frees space on the bucket.
- The settings screen warns when the public bucket URL is an r2.dev address, which cannot serve transformations.
1.2.1
- Removed the Plugin URI header, which pointed at a page that does not exist yet.
- Translations are no longer bundled: they come from translate.wordpress.org.
1.2.0
- The plugin is now called CPW Media Offload for Cloudflare R2. Only the name, the slug and the text domain changed: your settings, your offload index and your files on the bucket are untouched.
1.1.1
- Every credential field on the settings screen now has a “Where to find this in Cloudflare” panel showing the exact click path in the Cloudflare dashboard, including a warning that the secret access key is only ever displayed once.
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.
Best CPW Media Offload for Cloudfl… alternatives
All cdn plugins →FAQ
CPW Media Offload for Cloudflare R2: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org · checked Oct 8, 2026
Is CPW Media Offload for Cloudflar… free?
Yes. CPW Media Offload for Cloudflar… is free to download and use from the official WordPress.org plugin directory.
Is CPW Media Offload for Cloudflar… safe to use in 2026?
CPW Media Offload for Cloudflar… is a solid plugin choice in 2026, with a few things worth checking first. It runs on 50+ sites, is rated 5/5 and was last updated 1 week ago, and scores 75/100 on our health check.
How many websites use CPW Media Offload for Cloudflar…?
CPW Media Offload for Cloudflar… is active on 50+ WordPress websites and has been downloaded 491 times since it launched in September 2026. It was downloaded 411 times in the last 30 days.
Does CPW Media Offload for Cloudflar… work with WordPress 7.1?
Yes. The developer has tested CPW Media Offload for Cloudflar… up to WordPress 7.1.3, the latest release. It requires WordPress 6.0 or newer.
What PHP version does CPW Media Offload for Cloudflar… need?
CPW Media Offload for Cloudflar… requires PHP 7.4 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.
When was CPW Media Offload for Cloudflar… last updated?
The latest version, 1.3.2, was released on September 29, 2026 (1 week ago).
Who makes CPW Media Offload for Cloudflar…?
CPW Media Offload for Cloudflar… is developed and maintained by Criando Para Web.
What are the best alternatives to CPW Media Offload for Cloudflar…?
The most popular alternatives to CPW Media Offload for Cloudflar… are W3 Total Cache (900K+ installs), SpeedyCache (600K+ installs) and Breeze Cache (300K+ installs).
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org — no credit card



