Faster image delivery — optimize in seconds

Why Is WordPress Slow? Your Images Are Still On The Server.

Every image your WordPress site uploads sits on your hosting server — eating disk space, slowing load times, and costing you performance. Image Offload & Optimize moves every image to cloud storage automatically, converts it to the fastest format your visitor's browser supports, and delivers it through a CDN — all in one plugin, all without touching your theme or breaking your site.

What does Image Offload & Optimize do?

It automatically offloads WordPress media to Cloudflare R2, Amazon S3, or Backblaze B2, converts images to WebP or AVIF format, and rewrites all image URLs — including in Gutenberg blocks, Elementor, Divi, and WooCommerce — so your server never serves a single image again.

Your WordPress Server Was Never Meant to Store Images

Every image you upload to WordPress — the original, the thumbnail, the medium size, the large size, every custom size your theme generates — sits on your server. A site with 5,000 images can have 30,000+ files consuming gigabytes of disk space. On shared hosting this means slow file reads, backup failures, and hosting upgrade pressure.

Image Offload & Optimize solves this at the root. The moment you upload an image, the plugin processes it, sends every size to your cloud bucket, and deletes the local copies. Your server disk stays clean permanently.

How do I move WordPress images to Cloudflare R2?

Step 1 — Install & Connect

Install Image Offload & Optimize and enter your R2 credentials in the plugin settings.

WP
R2
WEBP

Step 2 — New Uploads — Automatic

Every new image upload offloads to R2 automatically — no manual steps.

MIGRATING / 1,247

Step 3 — Existing Library — Bulk Migration

Bulk migration tool scans your media library and offloads everything in resumable batches — no timeouts, no broken images.

Free

Cloudflare R2 — Core Focus

R2 is zero egress cost. Every image served to your visitors costs nothing in bandwidth fees. Image Offload & Optimize is built around R2 as the primary storage provider — full connection testing, error handling, URL rewriting, and lifecycle management all optimised for R2.

Who this helps: Any WordPress site paying for bandwidth on S3. Switching to R2 typically eliminates egress costs entirely.
Free

Amazon S3

Full S3 support including custom endpoints, path-style URLs, and all regions. Works with S3-compatible providers.

Who this helps: Sites already on AWS infrastructure that want to keep storage in the same ecosystem.
Free

Backblaze B2

B2 is the lowest-cost object storage available. Image Offload & Optimize supports B2 natively with full lifecycle management.

Who this helps: Budget-conscious sites that want cloud storage without R2 or AWS.
Free

Auto Offload on Upload

Every image uploaded through WordPress — via the media library, WooCommerce product editor, ACF fields, or any standard upload hook — is automatically processed and offloaded. No manual steps.
Free

Auto Delete Local After Offload

Once the plugin confirms the image exists in your bucket, the local copy is deleted. The safe cleanup system verifies the upload succeeded before deleting — your originals are never lost.
Free

Safe Cleanup System

Before deleting any local file, the plugin checks that the R2/S3/B2 URL is reachable and the file exists in your bucket. If the check fails, the local file is kept and the status is marked for retry. You never lose an image silently.
Free

Lifecycle Management

When you edit, delete, or regenerate thumbnails in WordPress — the plugin syncs every change to your bucket automatically. Edit an image crop and the R2 version updates. Delete an attachment and the bucket file is removed. Regenerate thumbnails and all new sizes are uploaded.

Who this helps: Sites that regularly edit product photos, update hero images, or run thumbnail regeneration plugins.
Solo+

Bulk Migration

Scan your entire media library and offload every unprocessed image in resumable batches. Each image shows its own status — pending, processing, offloaded, failed. Pause and resume any time. Retry failures individually.

Who this helps: Any established site switching from local storage to cloud. Sites with 10,000+ images in their media library.
Solo+

Background Queue

Processing happens asynchronously via Action Scheduler. Your admin never times out. Large libraries process in the background while you work. Full retry with exponential backoff on failures.
Solo+

R2/B2 Usage Monitoring Dashboard

See exactly how much storage you're using, how many images are offloaded, and what your estimated costs are — directly in WordPress. No need to log into your cloud provider to understand your usage.

WebP and AVIF Aren't Optional Anymore — But Your Plugin Doesn't Support Them

Google's Core Web Vitals score your site on image efficiency. WebP images are 25-35% smaller than JPEG. AVIF images are 50% smaller than JPEG. Modern browsers support both. If your WordPress site is still serving JPEG and PNG to visitors, you are losing PageSpeed points, ranking positions, and conversions.

Popular Alternative — the market leader — does not convert images. It offloads them in whatever format they were uploaded. You need a separate plugin like Imagify or ShortPixel on top, at extra cost.

Image Offload & Optimize converts every image automatically — no extra plugin, no extra cost.

Does WordPress support WebP and AVIF automatically?

WordPress 5.8+ can generate WebP on upload if your server has Imagick or GD compiled with WebP support. However, many shared hosts do not support this, and no WordPress core feature handles AVIF. Image Offload & Optimize handles WebP and AVIF conversion reliably on any host by running conversion on a managed server rather than your hosting environment.

Free / Solo+

WebP Conversion — Automatic

Every image is converted to WebP on upload. The original is preserved. The WebP version is what gets offloaded to your bucket and served to visitors. Conversion happens either on your server (free tier, requires Imagick/GD) or on our managed processing server (Solo and above).
Solo+

AVIF Support

AVIF is the next-generation image format — 50% smaller than JPEG at equivalent quality. Image Offload & Optimize serves AVIF to browsers that support it and falls back to WebP for others, using <picture> tags with proper type attributes. AVIF conversion costs 2 processing units vs 1 for WebP — the plugin warns you when AVIF is enabled so you understand the limit impact.
Free

<picture> Tag Rendering

Instead of a simple <img> tag, the plugin outputs a proper <picture> element with WebP source, AVIF source, and an original-format fallback. Every browser gets the best format it supports — automatically.

<picture>
  <source srcset="image.avif" type="image/avif">
  <source srcset="image.webp" type="image/webp">
  <img src="image.jpg" alt="Product photo">
</picture>
Free

Failsafe Conversion

If managed server conversion fails, the plugin falls back to local Imagick/GD conversion automatically. If local conversion fails, the original image is used. Your site never shows a broken image under any failure condition.
Solo+

Managed Processing Server

This is the feature that separates Image Offload & Optimize from every competitor. On Solo and above, conversion does not happen on your hosting server. It happens on our dedicated imgproxy server. This means:

Cheap shared hosting works perfectly
No PHP memory limit issues during conversion
No Imagick/GD dependency on your host
No server load spike during bulk migration
Large images processed without timeout
Who this helps: Any site on shared hosting, budget VPS, or managed WordPress hosts with restricted server access.
Free

Full Image Size Support

Every WordPress-generated size is processed — thumbnail, medium, medium_large, large, and every custom size your theme or plugins register. All sizes are offloaded. All sizes appear correctly in srcset. Responsive images work exactly as expected.
Free

Responsive srcset Output

The plugin rewrites srcset attributes across all image output — including Gutenberg blocks, classic editor, widget areas, and theme template files. Browsers load the size appropriate for the visitor's screen automatically.
Free

Format Negotiation

The plugin detects browser support via Accept header and serves the optimal format per visitor. Chrome gets AVIF. Safari gets WebP. Older browsers get the original. No JavaScript required.
Free

Large Image Pre-Processing

Images over 5MB or 3,000px on either axis are normalised before conversion. A temporary resized copy is created, processed, and then deleted — the original WordPress attachment is never modified. This prevents memory exhaustion on large photography uploads.

Offloading Images Isn't Enough — They Still Need to Load Fast

Moving images to R2 solves storage. It does not automatically solve delivery speed. Without a CDN in front of your bucket, visitors download images from whichever R2 data centre your bucket is in — not the one closest to them.

Image Offload & Optimize handles the full delivery layer — CDN custom domain, correct srcset rewriting, fallback if CDN goes down, and delivery logging so you can see exactly what is happening.

How do I use a CDN with WordPress images on R2?

In Image Offload & Optimize, enter your CDN subdomain (e.g. cdn.yourdomain.com) in the settings. The plugin rewrites every image URL — including thumbnails, srcset variants, and Gutenberg block output — to use your CDN domain. If the CDN becomes unavailable, the plugin falls back to direct R2 URLs automatically so your images keep loading.

Solo+

CDN Custom Domain

Configure a custom subdomain for image delivery. The plugin rewrites every image URL — src, srcset, thumbnails, and all Gutenberg block output — to use your CDN domain. Works with Cloudflare CDN, BunnyCDN, KeyCDN, or any CDN that proxies your R2 bucket.
Free

CDN Fallback

If your CDN domain becomes unreachable, the plugin automatically falls back to direct R2 URLs. Your images keep loading. You get an admin notice. Zero broken images for your visitors.
Solo+

CDN Domain Validation

The plugin validates your CDN domain before saving — HTTPS only, no paths, no query strings, valid hostname format. Misconfigured CDN domains are the most common cause of broken images after setup.
Solo+

Delivery Logging

Every CDN hit, failure, and rewrite issue is logged in the debug panel. You can see exactly which images are being served from CDN, which are falling back to R2, and which have rewrite issues — without touching server logs.
Free

Gutenberg Block Compatibility

This is a baseline requirement, not a premium feature. Every Gutenberg core block that outputs images — core/image, core/gallery, core/media-text, core/cover — has its URLs rewritten correctly. This works in the free tier. Locking this to premium would break images for the majority of WordPress users.
Free

Classic Editor Compatibility

Image URLs in classic editor content, widgets, and shortcodes are rewritten on output. No manual find-and-replace required after migration.
Free

Elementor Compatibility

Elementor image widget URLs are rewritten correctly. Free tier.
Solo+

ACF + Custom Fields

Images stored in Advanced Custom Fields and other custom field plugins are handled correctly. URL rewriting covers both direct image output and ACF's image array return format.
Solo+

WooCommerce Compatibility

Product images, gallery images, and variation images are all rewritten correctly — including the lightbox gallery and the cart thumbnail. This is a Solo+ feature because WooCommerce image handling requires additional hooks beyond standard WordPress output.
Free

Divi Compatibility

Divi image module URLs are rewritten correctly. Free tier.

Managing Image Plugins Across 25 Client Sites Is a Nightmare

If you manage client sites, you are dealing with this problem at scale. Each client has their own media library, their own storage credentials, their own quota. A single plugin that handles all of it — with a dashboard to see every site at once — is not a luxury. It is a requirement.

What is the best WordPress image offload plugin for agencies?

Image Offload & Optimize Agency plan supports 25 sites under one license. Each site has its own API key registered to its domain. An agency dashboard shows all sites, per-site storage usage, processing unit consumption, and queue status in one view. Multisite (subdomain and subdirectory) is also supported.

Enterprise

Unlimited Sites — Enterprise Plan

No ceiling on site count. Each domain is registered individually on dashboard.imageoffloader.com. Domain-level API keys mean a key for one site cannot be used on another — preventing key sharing abuse.
Agency

25 Site Licences — Agency Plan

One license covers 25 separate WordPress installations. Each site is registered individually on the dashboard with its own domain-locked API key.
Solo+

Domain-Locked API Keys

Every paid site gets a unique API key generated on our server and locked to the domain it was registered for. The plugin sends the domain in every request header. If the domain doesn't match the key, the request is rejected. This means a key stolen from one site is useless on any other site.
Agency+

Multisite Support

Subdomain multisite (client1.agency.com) and subdirectory multisite (agency.com/client1) both work correctly. Each subsite can use separate storage credentials or share a bucket with path prefixes.
Agency+

Agency Dashboard

dashboard.imageoffloader.com — all your client sites in one view. See per-site storage usage, processing units consumed, queue status, API key status, and plan information. Manage domain registration and key rotation without touching each WordPress install.
Solo+

Original Backup + Restore

Every original image is stored in R2/originals/ before conversion. A one-click restore button in the media library lets you revert any image to its original format. Agencies never have to explain to a client why their original file is gone.
Agency+

Per-Site Usage Stats

Every registered domain has its own usage counter. See exactly how many WebP and AVIF conversions each client site has used this month, what their daily limit is, and whether any sites are approaching their quota.
Free

wp-config.php Constants

Agencies managing sites via version-controlled deployments can define credentials as constants in wp-config.php. Constants override database values. Credential fields are hidden from the settings UI when constants are set — preventing accidental overwrites during client handoffs.

define( 'IOO_ACCESS_KEY', 'your-access-key' );define( 'IOO_SECRET_KEY', 'your-secret-key' );define( 'IOO_BUCKET',     'your-bucket-name' );define( 'IOO_ENDPOINT',   'https://your-endpoint.r2.cloudflarestorage.com' );

Image Offload & Optimize vs Popular Alternative — Every Feature

FeaturePopular AlternativeImage Offload & OptimizeTier
Cloudflare R2Free
Amazon S3Free
Backblaze B2Free
Auto offload on uploadFree
Auto delete localFree
WebP conversionFree
AVIF conversionSolo+
Managed processing serverSolo+
Works on shared hostingSolo+
<picture> tag outputFree
Full srcset supportFree
Gutenberg compatibilityFree
Elementor compatibilityFree
Divi compatibilityFree
WooCommerce supportSolo+
ACF supportSolo+
Multisite supportAgency+
Bulk migrationSolo+
Background queueSolo+
CDN custom domainSolo+
Lifecycle managementFree
Safe cleanup systemFree
R2/B2 monitoringSolo+
Delivery loggingSolo+
Original backup + restoreSolo+
Agency dashboardAgency+
Domain-locked API keysSolo+
wp-config.php constantsFree
Free tier — usefulFree
Entry price$99/year$49/yearSolo
Agency price$199/year$129/yearAgency
Unlimited price$1,199/year$249/yearEnterprise

Common Questions About WordPress Image Offloading

What is WordPress image offloading?
WordPress image offloading is the process of moving uploaded media files from your WordPress hosting server to external cloud storage — such as Cloudflare R2, Amazon S3, or Backblaze B2. The plugin rewrites all image URLs in your content so visitors load images from the cloud storage URL instead of your server. This reduces server disk usage, improves load times, and eliminates bandwidth costs when using providers like Cloudflare R2 which has zero egress fees.
Why is my WordPress site slow even after installing a caching plugin?
Caching plugins solve HTML and database performance. They do not solve image delivery. If your images are large, uncompressed JPEG or PNG files served from your hosting server, a caching plugin will not fix your Core Web Vitals score. You need to offload images to cloud storage and convert them to modern formats like WebP and AVIF. Image Offload & Optimize handles both in one plugin.
Does WebP conversion work on shared hosting?
On the free tier, WebP conversion uses your server's Imagick or GD library — which may not be available or may be memory-limited on cheap shared hosting. On Solo and above, conversion runs on our managed processing server instead of your host. This means WebP and AVIF conversion works correctly regardless of your hosting environment.
What is the difference between WebP and AVIF?
WebP is a modern image format developed by Google, typically 25-35% smaller than JPEG at equivalent quality. AVIF is a newer format based on the AV1 video codec, typically 50% smaller than JPEG. AVIF has broader browser support as of 2024 but takes more processing power to encode. Image Offload & Optimize serves AVIF to browsers that support it and WebP to others — automatically, with no configuration required.
Is Cloudflare R2 free?
Cloudflare R2 has a generous free tier — 10GB storage and 1 million Class A operations per month at no cost. Critically, R2 has zero egress fees — you are never charged for bandwidth when visitors download images. This makes R2 the most cost-effective storage option for most WordPress sites.
What happens to my images if I deactivate the plugin?
If you have offloaded images and deactivate the plugin, your image URLs in content will point to your R2/S3/B2 bucket — they will still load correctly. However URL rewriting for new uploads will stop. The plugin includes a revert tool that can restore all URLs to local paths before deactivation if needed.
Can I use Image Offload & Optimize with WooCommerce?
Yes. Solo and above supports WooCommerce product images, variation images, gallery images, and cart thumbnails. All WooCommerce image output hooks are handled — including the lightbox gallery and the REST API image responses used by headless WooCommerce stores.
Does this work with headless WordPress?
Yes. The plugin rewrites image URLs in the WordPress database and REST API responses. If you are using WordPress as a headless CMS with a Next.js or Nuxt frontend, your frontend receives the correct R2/CDN URLs in the API response — no additional configuration required.
What is a processing unit?
Processing units measure conversion workload. One WebP conversion costs 1 unit. One AVIF conversion costs 2 units because AVIF is more CPU-intensive to encode. Failed or rejected requests cost zero units. Retries of the same job cost zero additional units. Units reset daily. If you hit your soft limit, images are queued and processed when your limit resets — your site never shows broken images.
How is Image Offload & Optimize different from Popular Alternative?
Popular Alternative only handles storage — it offloads images to S3 or DigitalOcean Spaces but does not convert them. You need additional plugins for WebP or AVIF conversion, and conversion runs on your server which fails on weak hosting. Image Offload & Optimize handles storage, conversion, and delivery in one plugin. Conversion runs on a managed server on paid plans so it works on any host. The Enterprise plan costs $249/year versus $1,199/year for Popular Alternative's equivalent plan.

Built for the WordPress Ecosystem — Not Around It

Security First

Credentials stored encrypted. Secret keys masked in the UI — never printed in full. Every admin action protected by nonces and capability checks. Debug logging off by default. Your R2/S3 credentials never appear in logs, error messages, or API responses.

Never Breaks Your Site

Every failure has a fallback. If conversion fails, the original image is used. If the CDN goes down, R2 URLs serve instead. If R2 upload fails, the local file is kept. If URL rewriting fails, the original local URL renders. Your visitors never see a broken image under any failure condition.

Your Data, Your Bucket

Images go directly to your R2/S3/B2 bucket — not ours. We never have access to your media. If you cancel your subscription, your images stay in your bucket and continue loading. No vendor lock-in. No hostage data.

PRICING

Start free. Upgrade only when you actually need more.

Use the free version to optimize and offload new uploads. Upgrade when you need bulk migration, advanced processing, and expanded delivery controls.

Solo / Entry

Image Offload & Optimize$49/year — 1 site
Popular Alternative$99/year — 1 site

Agency

Image Offload & Optimize$129/year — 25 sites
Popular Alternative$199/year — 20 sites

Unlimited / Enterprise

Image Offload & Optimize$249/year
Popular Alternative$1,199/year

WebP conversion

Image Offload & OptimizeBuilt in
Popular AlternativeRequires separate plugin

AVIF support

Image Offload & Optimize
Popular Alternative

Works on cheap hosting

Image Offload & Optimize
Popular Alternative

Managed processing server

Image Offload & Optimize
Popular Alternative

Free tier

Image Offload & OptimizeFull featured
Popular AlternativeLimited

Free

$0/yr
$0/mo
1 site
  • R2 + S3 + B2 connection
  • WebP conversion
  • Auto offload on upload
  • Gutenberg compatible
  • Full srcset support
Get Started Free

Solo

$49/yr
$4/mo
1 site
  • Everything in Free
  • Bulk migration
  • AVIF support
  • CDN custom domain
  • WooCommerce support
Buy Now
Most Popular

Agency

$129/yr
$11/mo
25 sites
  • Everything in Solo
  • 25 sites
  • Multisite support
  • Agency dashboard
  • Higher processing limits
Buy Now

Enterprise

$249/yr
$21/mo
Unlimited sites
  • Everything in Agency
  • Unlimited sites
  • Highest priority queue
  • 10,000 units/day
  • Fair use verified
Buy Now

No artificial image limits.

Start free. Upgrade when you need bulk migration or managed processing. 6x cheaper than the market leader at every tier.

Get your image workflow under control

Install the plugin, connect your storage, and let it handle the rest — no extra tools, no extra cost.

Install Plugin Now