Description
Alios Media Offload moves your WordPress and WooCommerce media to Cloudflare R2 (or any S3-compatible bucket: Wasabi, Backblaze B2, DigitalOcean Spaces, MinIO, and more) and rewrites your site’s media URLs to serve from your CDN domain.
It signs AWS Signature V4 requests itself and sends them through the WordPress HTTP API — no bundled SDK, tiny footprint, works on PHP 7.4 through 8.3+.
Features:
- Cloudflare R2 and generic S3-compatible storage (endpoint / region / path-style).
- Automatic offload of new uploads, with HEAD verification before marking complete.
- Two-layer URL rewriting: per-attachment filters (always safe) plus an optional, opt-in full-page output-buffer rewrite for theme and page-builder embedded images.
- Bulk migration of existing media (browser progress UI plus WP-CLI: wp r2mo migrate).
- Guided 5-step setup wizard and one-click connection test.
- Optional deletion of local copies after a verified upload.
- Credentials can be set as wp-config.php constants (overriding the database).
- Best-effort cache flush for popular cache plugins.
- Optional, dismissible reminder to leave a review after a week of active use.
External services
This plugin uploads and manages your media files on an S3-compatible object storage service that you configure with your own credentials. It does not connect to any service operated by the plugin author, and it sends no analytics, tracking, or telemetry.
What it connects to: the storage endpoint you enter in the plugin settings — for example Cloudflare R2, Amazon S3, Wasabi, Backblaze B2, DigitalOcean Spaces, or a self-hosted MinIO server. No connection is made until you save your own credentials and a bucket.
What data is sent, and when:
- Your media files (the original file and the image sizes WordPress generates) are uploaded to your bucket when you add a new attachment (if automatic offload is enabled) or when you run a migration.
- For each file, a HEAD request is sent to confirm the upload succeeded, and a DELETE request is sent when you delete the attachment (if it was offloaded).
- Each request is signed with your access key using AWS Signature V4. Your secret key is never transmitted; it is only used locally to compute the request signature.
Because the endpoint is the provider you choose, please review that provider’s terms and privacy policy. For the two most common providers:
- Cloudflare R2 — Terms: https://www.cloudflare.com/website-terms/ — Privacy: https://www.cloudflare.com/privacypolicy/
- Amazon S3 — Service Terms: https://aws.amazon.com/service-terms/ — Privacy: https://aws.amazon.com/privacy/
For other S3-compatible providers (Wasabi, Backblaze B2, DigitalOcean Spaces, MinIO, etc.), consult that provider’s own terms of service and privacy policy.
Installation
- Upload the plugin to /wp-content/plugins/alios-media-offload and activate it.
- Open Alios Offload > Setup Wizard, choose your provider, and enter your credentials, bucket, and Public Base URL.
- Click Test connection.
- Run Alios Offload > Migration to move existing media.
- After migration shows 0 pending, enable Full-page URL rewriting in Settings.
For best security, define your credentials in wp-config.php:
define('R2MO_ACCOUNT_ID', '...');
define('R2MO_ACCESS_KEY', '...');
define('R2MO_SECRET_KEY', '...');
define('R2MO_BUCKET', '...');
define('R2MO_ENDPOINT', '...'); // generic S3-compatible only
define('R2MO_REGION', '...');
define('R2MO_PUBLIC_BASE', 'https://cdn.example.com');
FAQ
-
Does it work with Cloudflare R2’s zero egress fees?
-
Yes. Point your Public Base URL at an R2 custom domain (or r2.dev) and your media is served with no egress charges.
-
Are my secret keys safe?
-
Define them as wp-config.php constants and they are never stored in the database. Otherwise they are stored in the options table, like most offload plugins.
-
Will it work with WooCommerce and Woodmart?
-
Yes. Product and gallery images use the standard media library. The optional full-page rewrite also covers theme and page-builder embedded image URLs.
Contributors & Developers
“Alios Media Offload” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Alios Media Offload” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.3
- Feature: After a week of use and at least one successful offload, a dismissible admin notice invites you to leave a 5-star review — with “maybe later” (30-day snooze) and “already reviewed” options.
- Fix: satisfy the WordPress.Security.ValidatedSanitizedInput sniff in the wizard’s settings-save AJAX handler (no behavior change).
1.1.2
- Fix: the Setup Wizard now saves your provider, credentials, and options automatically as you move through each step, so “Test connection” always tests what you just entered instead of stale or empty settings.
1.1.1
- Compliance: send storage requests through the WordPress HTTP API instead of cURL.
- Privacy: documented the external storage service in the readme.
- Fix: store secret/access keys without altering them; explicitly close the full-page output buffer on shutdown.
1.1.0
- Feature: Added WP-Cron based Background Migration to allow offloading large libraries (e.g. 30,000+ files) asynchronously without keeping the browser tab open.
- Feature: Redesigned Migration UI in admin area with two cards (Background and Browser migration).
1.0.1
- Fix: Prevent uninstall.php from deleting _r2mo_offloaded post metadata during plugin deletion, preserving offload state on reinstall.
1.0.0
- Initial release.