Installation
Install OffloadX like any standard WordPress plugin. No server configuration required.
Download the zip
Get offloadx.zip from your purchase confirmation email or your account on offloadx.com.
Upload via WP Admin
Go to Plugins → Add New → Upload Plugin. Select the zip, click Install Now, then Activate Plugin.
OffloadX appears in the sidebar
After activation, an OffloadX menu item appears in your WP Admin sidebar. A 🔑 License item also appears as a separate menu for entering your license key.
First Setup
Get from a fresh install to your first offloaded file in five steps.
Enter your storage credentials
Go to OffloadX → Credentials. Select your provider tab, enter the required fields, and click Test Connection to verify everything works.
Activate your license
Go to OffloadX → License. Enter your license key and click Activate. Free plan works without a key — skip this step if you're on Free.
Configure Behaviour settings
Go to OffloadX → Behaviour. Enable Auto-Offload New Uploads so future uploads go directly to the cloud. Enable WebP Conversion if you want images compressed automatically.
Run Bulk Migration
Go to OffloadX → Bulk Migration. Click Start Migration to offload your existing media library. For large libraries, enable Background Mode first.
Replace database URLs
Go to OffloadX → URL Replace. Click Replace All URLs so all WordPress content references point to your CDN instead of local file paths.
Dashboard
Your central overview. Live stats, quick action buttons, a CDN coverage chart, and connection status — all updating in real time.
Stat Cards
Four stat cards update live via AJAX polling every 15 seconds during a migration:
Quick Actions
Connection Status
Credentials
Connect OffloadX to your cloud storage provider. All credentials are encrypted with AES-256-CBC — never stored in plain text.
Provider Tabs
Delivery Options
https://cdn.yourdomain.com or your r2.dev URL. Required for Bunny Storage — the Pull Zone URL goes here.After saving, always click Test Connection — OffloadX uploads a tiny test file, reads it back, then deletes it. If this passes, all uploads will work.
Behaviour
Control how OffloadX handles uploads, what gets offloaded, file organisation, and notifications. Changes take effect immediately on save.
Upload Behaviour
Database & URL Settings
Image Optimisation
File Organisation Business+
my-site/2024/01/image.jpg. Useful for multiple sites in one bucket.image/jpeg,image/webp,image/png. Leave empty to offload all supported types.Document Offloading
application/* types — PDFs, DOCX, ZIP, and all other document formats.Integrations
Email Notifications
Bulk Migration
Offload your entire existing media library to cloud storage. Resumable, registry-aware, and adaptive — handles libraries of any size.
Already Offloaded
Migration Controls
Speed Selector
Fast
Agency: 6 lanes × 50 files/batch. Pro/Business: 2 lanes × 10 files. Use when server load is low.
Normal
Balanced speed. Recommended for most sites. Adaptive delay between batches.
Gentle
Reduced parallelism. Good for live sites during peak traffic hours.
Slow
Minimum load — sequential with long delays. For resource-constrained hosting.
Background Mode
curl_multi concurrent uploads for maximum throughput.URL Replace
Rewrite all references to local media URLs across your entire WordPress database — posts, pages, Elementor data, widgets, options, and theme mods.
Database URL Replacement
Revert to Local URLs
Rollback History
Every URL Replace batch is logged. Each entry shows date, number of URLs replaced, and a Rollback button — full undo without any backup plugin needed.
Scheduled Offload
Run offload automatically every day at a time you choose. Designed for sites that receive regular uploads and want hands-off media management.
Controls
How it works
Unlike a simple cron that processes a fixed batch, the scheduled run loops continuously until every pending file is processed — up to a 2-hour maximum. It processes 50 files per loop iteration and stops only when no pending files remain or time runs out.
* * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/nullSafety Check
Verify that every offloaded file is publicly accessible via its CDN URL before permanently deleting local copies. Prevents data loss from broken uploads.
Cache Tools
After migration and URL replacement, flush your site's caches so visitors see the new CDN URLs instead of cached local paths.
Manage Files
Browse, inspect, search, and delete files directly in your storage bucket from WP Admin — no need to log in to your provider's dashboard.
View Modes
File List
AI Advisor
An AI-powered chat assistant inside your dashboard that answers questions about your media setup, migration strategy, provider selection, and cost optimisation.
Quick Prompts
Analyze my setup
Reviews your current provider, file counts, and coverage to give specific improvement recommendations.
Migration plan
Generates a step-by-step plan to safely move all remaining local media to cloud storage.
Recommend a provider
Based on your site stats, recommends the best storage provider for your use case.
Reduce costs
Suggests ways to reduce storage and bandwidth costs while maintaining performance.
Free-form Chat
Type any question and click Ask AI. The advisor has context about your site's stats — total media, offloaded count, pending files — so answers are specific to your situation.
License
Manage your OffloadX license key, view your plan details, and access the version history for rollbacks.
Activating a License
Paste your license key
Enter the license key from your purchase email. Keys are in the format XXXX-XXXX-XXXX-XXXX.
Click Activate
OffloadX contacts the license server, validates the key, and registers your site's URL. Features unlock instantly — no page reload required.
Status updates
The card updates to show your plan tier, expiry date, active sites vs allowed, and a green "Active" badge.
Plan Information
Version History & Rollback
Click "Load versions"
Fetches all available releases from the update server. Each version shows upload date, release notes, and WP/PHP requirements.
Click the version button
Newer versions show an Update button; older versions show a Roll back button.
Confirm and install
WordPress downloads the zip via a signed URL and installs it using its native upgrader. Settings, license data, and all WP options are untouched.
Cloudflare R2 Setup
Zero egress fees, 10 GB free monthly storage, and a global CDN. The most cost-effective option for most WordPress sites.
1. Create a Bucket
Cloudflare Dashboard → R2 Object Storage → Create Bucket
Log in at dash.cloudflare.com. Left sidebar → Storage & Databases → R2 Object Storage → Create Bucket.
Name and location
Give it a name e.g. my-wp-media. Location: Automatic is fine. Click Create Bucket.
Enable public access
Open the bucket → Settings → Public Access → enable R2.dev subdomain. This gives you a free public URL like pub-xxxx.r2.dev.
2. Create an API Token
R2 Overview → Manage R2 API Tokens → Create API Token
Set Permissions to "Object Read & Write", select your bucket, no expiry
Copy all three values
Access Key ID, Secret Access Key (shown once), and your Account ID from the R2 Overview URL.
3. Fields in OffloadX
dash.cloudflare.com/{account_id}/r2my-wp-mediapub-xxxx.r2.dev URL or custom domain. Example: https://pub-abc123.r2.devAmazon S3 Setup
Industry-standard object storage with broad region coverage. Egress fees apply — consider pairing with CloudFront for CDN delivery.
1. Create a Bucket
AWS Console → S3 → Create Bucket
Log in at console.aws.amazon.com. Choose a unique name and the region closest to your server.
Configure public access
Uncheck Block all public access and add a bucket policy granting s3:GetObject to Principal: * on all objects.
2. Create IAM Credentials
IAM → Users → Create User (e.g. offloadx-wp)
Attach policy — minimum: s3:PutObject, s3:GetObject, s3:DeleteObject, s3:ListBucket
Security credentials → Create access key → copy Access Key ID and Secret
3. Fields in OffloadX
us-east-1, eu-west-1AKIA...https://cdn.yourdomain.comWasabi Setup
S3-compatible storage with no egress fees and flat-rate pricing. Excellent value for high-bandwidth sites.
1. Create a Bucket & Access Key
console.wasabisys.com → Buckets → Create Bucket
Name your bucket, choose a region. Note the exact region code.
Access Keys → Create New Access Key
Copy the Access Key and Secret Key immediately.
2. Fields in OffloadX
ap-southeast-1, us-east-1, eu-central-1DigitalOcean Spaces Setup
Simple S3-compatible object storage with a built-in CDN. Ideal for teams already on DigitalOcean infrastructure.
1. Create a Space
cloud.digitalocean.com → Spaces → Create a Space
Choose a region (e.g. nyc3, ams3, sgp1). Enable the CDN if desired.
API → Spaces Keys → Generate New Key
Not the same as your DigitalOcean API token. Spaces keys are separate. Copy the Key and Secret shown once.
2. Fields in OffloadX
nyc3, ams3, sgp1https://your-space.nyc3.cdn.digitaloceanspaces.comBunny Storage Setup
Ultra-low cost storage with no egress fees. Requires a Pull Zone for public file delivery.
1. Create a Storage Zone
dash.bunny.net → Storage → Add Storage Zone
Enter a zone name, choose a region. Note the exact zone name.
Zone → FTP & API Access → copy the Password (= API key)
CDN → Add Pull Zone → set Origin URL to your storage zone
The Pull Zone CDN URL (e.g. https://my-zone.b-cdn.net) is what OffloadX uses for public media URLs.
2. Fields in OffloadX
https://my-zone.b-cdn.netPlans & Features
OffloadX is freemium. The Free plan works without any license key. Paid plans unlock features and higher file limits.
| Feature | Free | Starter | Pro | Business | Agency |
|---|---|---|---|---|---|
| Basic migration & auto offload | ✓ | ✓ | ✓ | ✓ | ✓ |
| Dashboard & URL rewriting | ✓ | ✓ | ✓ | ✓ | ✓ |
| File limit | 50 files | Unlimited | Unlimited | Unlimited | Unlimited |
| WebP conversion | — | ✓ | ✓ | ✓ | ✓ |
| Scheduled offload | — | ✓ | ✓ | ✓ | ✓ |
| DB URL Replace + rollback | — | ✓ | ✓ | ✓ | ✓ |
| Safety Check | — | ✓ | ✓ | ✓ | ✓ |
| Offload Documents & PDFs | — | — | ✓ | ✓ | ✓ |
| Email notifications | — | — | ✓ | ✓ | ✓ |
| Manage Files & CDN scan | — | — | ✓ | ✓ | ✓ |
| Cache Tools | — | — | ✓ | ✓ | ✓ |
| Site Folder in Storage | — | — | — | ✓ | ✓ |
| Selective MIME Types | — | — | — | ✓ | ✓ |
| WooCommerce support | — | — | — | ✓ | ✓ |
| 6 parallel migration lanes | — | — | — | — | ✓ |
| Background mode (30s cron) | — | — | — | — | ✓ |
Updates & Rollback
OffloadX is self-hosted — updates come directly from offloadx.com, not WordPress.org. The update system works exactly like a WordPress.org plugin.
Beyond This WordPress Plugin Documentation
Step-by-step guides and official references that go further than this WordPress plugin documentation.
Provider setup guides
Each guide covers the provider side in detail, with costs, limits and troubleshooting: Cloudflare R2, Amazon S3, Wasabi, Bunny Storage, DigitalOcean Spaces and Backblaze B2.
Official provider documentation
For bucket settings, keys and permissions, the providers' own docs are the final word: Cloudflare R2 docs, Amazon S3 user guide and WordPress.org's guide to managing plugins.
Planning your setup
Not sure which provider to pick, or moving from another plugin? Start with our cloud storage cost comparison, the media offload vs CDN guide and the WP Offload Media migration guide. If something in this WordPress plugin documentation is unclear, email support and we will help.
Troubleshooting
Solutions to the most common issues.
SignatureDoesNotMatch error
The Secret Access Key stored in the database doesn't match what the provider expects.
"2 Pending" but all images look fine
PDFs, DOCX, ZIP, or other document files are in your media library. OffloadX only counts image/video/audio by default. Enable Offload Documents & PDFs under Behaviour (Pro+) to include them.
Files uploading but not loading publicly
Cloudflare R2
Enable the R2.dev subdomain in your bucket's Settings → Public Access, or connect a custom domain.
Amazon S3
Disable Block Public Access and add a bucket policy granting s3:GetObject to all principals.
Bunny Storage
Create a Pull Zone and enter its CDN URL in the Pull Zone field. Storage Zone URLs are never public.
Wrong delivery URL
Check the Delivery section in Credentials. The URL must match where files are actually accessible. Run URL Replace after correcting.
Test Connection fails
Re-save credentials
Re-type the Secret Access Key and save. Salts may have changed since first save.
Check permissions
Your API key needs PutObject + GetObject + DeleteObject + ListBucket permissions on the bucket.
Check region
For S3/Wasabi/DO: region in OffloadX must exactly match the region chosen when creating the bucket.
Check CORS / bucket policy
Some providers block all access by default. Check your bucket's access policy and ensure it allows the required operations from your server's IP.