Safe Media Offload · media storage

Your media library in your own bucket. Your staging site can't touch it.

Moves WordPress uploads to Cloudflare R2, Amazon S3, Backblaze B2, DigitalOcean Spaces, Hetzner, Scaleway, Akamai (Linode), Google Cloud Storage or any S3-compatible storage, and serves them from your own domain. Paths mirror your uploads folder, so responsive images keep working.

From $29 a year or $89 once · WordPress 6.6+ · PHP 8.2+ · A bucket on R2, S3 or another S3-compatible service

Demo store · Settings › Safe Media Offload
Demo store · Settings › Safe Media Offload

Works with

  • Cloudflare R2
  • Amazon S3
  • Backblaze B2
  • DigitalOcean Spaces
  • Hetzner
  • Scaleway
  • Akamai (Linode)
  • Google Cloud Storage
  • MinIO
  • WooCommerce
  • Easy Digital Downloads
  • WP-CLI
  • Multisite
Why it matters

Your uploads folder keeps growing. Your disk doesn't.

Every product photo, every thumbnail size and every download lands on the same disk as your site, until the host asks you to buy the next plan. And every staging copy you clone can reach the same files.

"I was running out of space on my server provider's data plan and decided to offload my images to an Amazon S3 bucket."

A site owner on wordpress.org

"I cloned a site to a new staging environment, and then realized that it is now sharing it's media bucket with the live site."

A site owner on wordpress.org
How it works

Nothing moves until it works.

Test connection reaches your bucket, writes a file, reads it back, fetches it through your delivery domain the way a visitor would, and deletes it, reporting each step. Offloading starts once the bucket steps pass.

  1. 1

    Connect your bucket

    Pick the provider and enter what it asks for: account ID or region, the bucket, the keys and your delivery domain. Keys can stay in wp-config.php.

  2. 2

    Test the connection

    Each check is reported on its own, so if something is wrong you see exactly which step failed.

  3. 3

    Serve and move the rest

    Once the test passes, new uploads are copied to the bucket. Turn on serving to point their URLs there, then offload the existing library in the background. You can watch it, stop it, or bring everything back.

Built for real stores

Safe by default, visible when it isn't.

Paid downloads stay protected

WooCommerce and Easy Digital Downloads files never go to the public bucket. Add a private bucket and WooCommerce files are copied there; once the shop has checked the purchase, customers get a link that expires after five minutes.

Staging can't touch production

A copy of your database can serve production's media but never deletes or overwrites it. Clone the store as often as you like.

Local copies kept until you say so

Local files are kept by default. Deleting them frees disk space and is only possible while media is served from the bucket; Restore local copies brings everything back.

Failures are visible

Each file shows its offload status and last error. The settings screen counts what's waiting and what failed, links to each one, and Site Health warns when new uploads stop offloading.

Pricing

Pay for the sites you run.

Every plan has every feature. Local copies on localhost, .test or .local don't use a site.

Recommended for agencies

1 site

$89once

Pay once. The key never expires, and gets updates and support for as long as we sell the plugin.

Buy for life, 1 site
  • 1 site at a time
  • Updates for as long as we sell it
  • Email support for as long as we sell it

$29a year

Renews every year at the same price. Polar emails you a week before. Cancel any time from your account.

Buy for 1 site
  • 1 site at a time
  • Updates while your plan runs
  • Email support while your plan runs

Sold by Polar, our merchant of record, which adds any sales tax or VAT at checkout.

Recommended for agencies

25 sites

$539once

Pay once. The key never expires, and gets updates and support for as long as we sell the plugin.

Buy for life, 25 sites
  • 25 sites at a time
  • Updates for as long as we sell it
  • Email support for as long as we sell it

$179a year

Renews every year at the same price. Polar emails you a week before. Cancel any time from your account.

Buy for 25 sites
  • 25 sites at a time
  • Updates while your plan runs
  • Email support while your plan runs

Sold by Polar, our merchant of record, which adds any sales tax or VAT at checkout.

Plus any sales tax or VAT · Sold by Polar, our merchant of record · Full refund within 14 days · All plugins and the bundle

Questions

Are my paid downloads safe?

Yes. WooCommerce and Easy Digital Downloads files stay on your server, where the shop checks the purchase before serving them, and are never copied to the public bucket. With a private bucket, WooCommerce files go there and customers get a link that expires after five minutes.

I replaced an image and still see the old one.

Files keep their names, so a replaced image goes to the same URL. Browsers check again after a day; purge the URL at your CDN to update it sooner.

What happens if I deactivate the plugin?

While every file still has a local copy, nothing: your site serves them from its own server again. If you deleted local copies, those files stop loading until the plugin is active again, so run Restore local copies before removing it for good.

Does uninstalling delete my files?

Never from the bucket. Uninstalling removes the settings and keys but keeps the record of files that exist only in the bucket, so reinstalling serves them again.

Can I run it from the command line?

Yes: wp zdom status, wp zdom offload (add --dry-run to list what would move), wp zdom verify and wp zdom download.