Your images live in a bucket,
not on your web server
Media Offload puts new uploads, every generated size and the unscaled original into an S3-compatible bucket and serves them from there. MinIO works out of the box; AWS S3, DigitalOcean Spaces and Cloudflare R2 are a settings change away.
The plugin works fully without a license. The key is free and only switches on WordPress’s automatic updates.
The rewrite happens wherever WordPress builds the URL itself, so themes, blocks and feeds follow along with no changes.
Offloading that looks after itself
Set your bucket up once. After that new files move themselves, and you can bring the old ones over whenever you like.
Moves on upload
When you add a file to the media library, it and every generated size go up to your bucket, and the public URL points there.
Deletes in both places
Delete a file in WordPress and it is removed from the bucket too. You don’t end up paying for files you thought were gone.
Test the connection first
The settings page has a test button that tells you where you stand before you move a single file. No guessing whether the keys are right.
Bring the old files along
The bulk tool works through the existing media library, so a site with ten years of images can come across too.
Run it from the terminal
wp media-offload status shows where you stand, run moves the rest, and resync picks up files belonging to already-offloaded images that never made it to the bucket. Handy on large sites and in deploys.
Not tied to one provider
Endpoint, keys, bucket, region, path-style, SSL and your own domain are all yours to set. MinIO, AWS S3, DigitalOcean Spaces and Cloudflare R2 all work.
Big files don’t topple PHP
Uploads stream from disk instead of being read into memory, so a video of several hundred megabytes won’t run your PHP memory limit into the ground.
Takes WebP and AVIF along
If another plugin has made .webp or .avif versions next to an image, they go up to the bucket alongside the original.
Keep or clear the local copy
By default the local file stays behind as a fallback. If you want the disk space back, turn on “delete local files” and they go once the upload is verified.
From install to bucket
If you already have a bucket and a key pair, there is not much more than a quarter of an hour in this.
Install the plugin
Put the folder in wp-content/plugins/beltoft-media-offload and activate it from the Plugins screen.
Point it at your bucket
Under Settings Media Offload, fill in the endpoint, access key, secret key, bucket and region. Press test and watch it connect.
Upload as you always have
New files land in the bucket on their own. To bring the old ones over, start the bulk tool and let it work.
For the large media libraries
A media library of many gigabytes is not something to sit and wait for in a browser tab. Run it from the command line instead and let it finish in its own time.
What you are likely to ask
And a couple of things worth knowing before you move a whole media library.
Give your web server less to carry.
Free and open source. Get your license, point the plugin at your bucket, and watch your next upload land in the right place. The license costs nothing and never expires.