Move your WordPress media
to S3, Cloudinary, or a DAM.
Offload your WordPress media library to AWS S3, Cloudinary, Azure Blob, AEM, or any of 12 destinations — with alt text, captions, titles, and the /uploads structure preserved. Read-only against your live site, resumable, with a complete old→new URL map for rewriting your posts.

Why teams move media off WordPress
The four reasons we hear from WordPress teams.
The media library has no real structure
WordPress dumps everything into a flat /uploads/YYYY/MM tree with no folders, tags, or taxonomy. Past a few thousand images it becomes impossible to find or govern — and a real DAM or object store with prefixes is a big step up.
Serving images from WordPress is slow + pricey
Every image request hits your WP host. Offloading to an object store + CDN is faster, cheaper, and frees your origin — but only worth it if the move keeps alt text and existing URLs intact.
Alt text + captions are trapped in WP
Years of accessibility and SEO metadata (alt text, captions, titles) live only in the WordPress database. A plain file copy to S3 drops all of it, and you start the new home with bare filenames.
Going headless or consolidating sites
Moving to a headless front end, or merging media from several WordPress sites into one DAM, means extracting attachments + metadata cleanly — exactly the part the WP admin and most plugins do not handle well at scale.
How it works
Four steps from connect to rewritten URLs.
01
Connect WordPress
Paste your site URL + an Application Password (WP 5.6+) for a user with upload_files. Read-only against your live site, encrypted at rest, never logged.
02
Pick a destination
S3, Cloudinary, Azure Blob, GCS, AEM, Bynder, or any of 12 supported destinations.
03
Start the migration
Attachments stream directly from WordPress. Alt text, captions, titles, descriptions, and the /uploads path all carry over.
04
Rewrite your URLs
On completion you get a CSV of every old→new URL — run a WP-CLI search-replace or a CDN rewrite. No broken images.
Schema-aware translation
Alt text and captions move with the files — not just the bytes.
WordPress attachment metadata — alt text, caption, title, description, and the /uploads path — maps onto the destination’s model: S3 user-metadata, Cloudinary context, or AEM jcr: fields. Your accessibility + SEO metadata survives the move.
Source
WordPress
Destination
AWS S3
Attachment
hero.jpg (image/jpeg)
S3 object
images/2026/06/hero.jpg
Upload path
/uploads/2026/06/
key prefix
images/2026/06/
Alt text
Spring hero banner
x-amz-meta-alt
Spring hero banner
Caption
Shot on location, 2026
x-amz-meta-caption
Shot on location, 2026
Title
Spring Hero
x-amz-meta-title
Spring Hero
MIME + dimensions
image/jpeg · 1920×1080
ContentType + meta
preserved verbatim
What you actually get
Migration infrastructure, not an export plugin.
Alt text + caption preservation
Every attachment's alt text, caption, title, and description maps to the destination's metadata model — your accessibility and image-SEO metadata survives the move instead of being dropped.
Complete old→new URL map
You get a CSV of every WordPress media URL paired with its destination URL. Run a WP-CLI search-replace across posts + meta, or rewrite at the CDN layer — no broken images after cutover.
Folder/date structure carried
The /uploads/YYYY/MM structure maps to destination key prefixes by default, or flatten/re-prefix while you migrate. Deterministic mapping — you always know where each file landed.
Read-only + audited
We only call the WordPress REST API to read attachments — never write back, so your live site and database are untouched. Per-asset audit row from WP fetch to destination ACK.
Where WordPress media can land
Offload to object storage, a CDN, or a DAM.
S3 + a CDN is the classic offload; Cloudinary adds on-the-fly transforms; AEM or Bynder gives you a real DAM with taxonomy. Univaultport maps WordPress alt text, captions, and titles to each destination’s metadata model so nothing is lost in the move.
+ 6 more (Contentful, Dropbox, Google Drive, FTP, SFTP, local).
Simple, usage-based pricing
Pay only for what you migrate.
No subscription, no per-asset fee, no minimum — and free credits on signup so you can run a real migration end-to-end before you pay anything. See the pricing page for current rates and enterprise options.
WordPress migration FAQ
The questions that come up before every media offload.
- Most WordPress libraries are a few GB to a few hundred GB, which completes in hours. We pull attachments via the WordPress REST API in parallel and stream them straight to the destination, so wall-clock time is set by destination throughput, not WP. The migration is resumable, and a 100k-attachment library is no different from a small one — just more pages of the same loop.
Offload WordPress media
without losing metadata.
Sign up, connect WordPress, pick a destination, kick off a real migration. 1,000 free credits — no card required.