Universal Storage comparison
WP Offload Media alternative for S3, R2 and reversible migration
WP Offload Media is a mature WordPress storage product with a broad feature set. KAZCODE Universal Storage takes a different approach: keep the Media Library portable, make verification and restore first-class operations, and make provider changes reversible.
Competitor information checked September 23, 2026 against the current WordPress.org listing and official WP Offload Media documentation/pricing. Products change; verify the linked official sources before a production decision.
At a glance
| Area | WP Offload Media | KAZCODE Universal Storage |
|---|---|---|
| Primary focus | Mature media offload platform with CDN delivery, private media and paid integrations. | Media offload, verification, restore and reversible storage migration. |
| Existing Media Library in free version | WordPress.org states Lite offloads newly uploaded files; its existing-library upload tool is Pro. | Existing Media Library migration is included in Free. |
| Providers listed in current public docs | Amazon S3, DigitalOcean Spaces and Google Cloud Storage. | Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2, MinIO and custom S3-compatible endpoints. |
| Restore / download back to server | Download-to-server tools are documented as Pro functionality. | Restore to wp-content/uploads is a Free capability. |
| Changing storage provider | Official docs describe downloading/removing from the old bucket, configuring the new provider, then uploading again. | Pro keeps source and destination as separate profiles and supports resumable copy, destination verification and verified cutover. |
| CSS / JS / font assets | Paid Assets functionality can serve site assets through a CDN. | Not a feature: Universal Storage intentionally handles Media Library attachments, not theme/plugin static assets. |
| WooCommerce / EDD integrations | Dedicated paid integrations are offered. | Focuses on WordPress Media Library storage; it does not claim equivalent private-download integrations. |
| Licensing model | Paid plans are currently based on offloaded Media Library item quotas across unlimited sites. | Pro plans are licensed by site count; the current plans share the same feature set. |
Sources: WP Offload Media on WordPress.org, official documentation, official pricing.
The most important Free difference: existing media
WP Offload Media Lite's current WordPress.org page explicitly says that an established site's existing Media Library is not copied by Lite; only newly uploaded media is offloaded. The bulk upload tool for existing media is part of Pro.
Universal Storage Free includes migration of the existing Media Library. That distinction matters when the goal is not a greenfield setup but moving a real site with years of attachments away from local disk.
It also means you can test the full lifecycle in Free: configure storage, offload new media, migrate historical attachments, verify remote state and restore files locally without first changing to a paid plan.
Provider choice: R2 and S3-compatible storage
WP Offload Media's current public provider documentation is centered on Amazon S3, DigitalOcean Spaces and Google Cloud Storage. That is a strong fit when one of those services is exactly what you need.
Universal Storage is designed around Amazon S3 plus S3-compatible object storage. It has provider presets for Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 and MinIO, plus a custom S3-compatible path. If R2 is the target, start with the Cloudflare R2 WordPress guide or the R2 vs S3 comparison.
Restore is part of the safety model
WP Offload Media has well-documented download-to-server tooling, but its own documentation identifies those download tools as Pro functionality.
Universal Storage keeps restore in Free. The reason is architectural rather than a checklist distinction: if an offload product can remove local copies, the reverse path should be testable before you depend on remote-only media.
See Restore media and Verify media.
Changing providers: two different operational models
WP Offload Media's official provider-change guide is conservative: bring media back to the server/remove it from the old bucket, configure the new provider, then upload again. That is understandable and preserves a known local handoff point.
Universal Storage Pro is built for a different workflow. Multiple storage profiles can coexist, so the existing provider remains authoritative while the destination is filled. The migration records progress, verifies the destination, and only then switches delivery. Optional source cleanup is a separate post-verification decision.
For an S3 → R2 example, read the verified migration runbook.
Where WP Offload Media is a stronger fit
A fair comparison should include the cases where WP Offload Media offers functionality that Universal Storage deliberately does not try to copy.
- Its paid product has dedicated WooCommerce and Easy Digital Downloads integrations.
- It documents private media and signed-URL workflows.
- Its paid Assets feature can rewrite CSS, JavaScript and font delivery through a CDN.
- Google Cloud Storage is part of its documented provider set.
- It has a long-established ecosystem and extensive compatibility documentation.
If those are core requirements, they should carry real weight in your decision.
Where Universal Storage is worth evaluating
- You specifically need Cloudflare R2 or another S3-compatible target.
- You want to migrate an existing Media Library in the Free product.
- You want verification and local restore available before paying for Pro.
- You want source and destination profiles to coexist during a provider migration.
- You want verified cutover rather than editing a live profile in place.
- You prefer site-count licensing to a media-item quota model.
Migrating from WP Offload Media without guessing remote state
Universal Storage includes a dedicated WP Offload Media importer. It reads legacy
as3cf_items attachment records and the newer file-level model used by
WP Offload Media 3.4+ when those rows are available. Originals and generated sizes are
adopted when the source data identifies their object keys.
The importer is intentionally read-only toward the source plugin. It creates KAZCODE inventory records without deleting WP Offload Media rows or remote objects. Ambiguous custom endpoints are not guessed into the wrong profile.
- Back up the WordPress database.
- Configure the matching storage profile in Universal Storage.
- Run the WP Offload Media import.
- Review skipped or malformed source rows.
- Verify representative originals and generated sizes.
- Disable the old plugin only after delivery remains correct.
Use the full WP Offload Media import guide before changing anything on a production site.
Pricing models are different, not directly equivalent
WP Offload Media's current paid plans are primarily tiered by the number of offloaded Media Library items across unlimited sites. Its official pricing page currently ranges from small media quotas through an unlimited tier, with feature availability also varying by plan.
Universal Storage Pro is licensed by site count: the current 1-site, 5-site and 20-site plans share the same Pro feature set. Current KAZCODE prices are shown on the product pricing section; use the official WP Offload Media pricing page for its current plans because promotional pricing can change.
Migration decision checklist
- Do you need R2 or custom S3-compatible storage?
- Is your historical Media Library already offloaded?
- Do you need private/signed product downloads or asset-CDN rewriting?
- Do you require a managed restore path before removing local media?
- Will you change providers later?
- Do you prefer media-count or site-count commercial licensing?
There is no reason to switch a stable site merely because another plugin exists. The useful reason to migrate is that your operational requirements have changed and the new model solves them more cleanly.
Test the migration path before committing
Install Universal Storage Free, import the existing offload inventory, verify a representative sample and test restore while the current plugin remains available.