Usage

Day-to-day operation: Media → WP to S3, Test/Save, live offload, Media Library tools, and WP-CLI.

Admin screen

Open Media → WP to S3. Tabs:

TabPurpose
SettingsConnection, enable switch, CDN/base URL, delete-local, concurrency, etc.
MigrateBackground bulk upload of existing local files
ToolsFull doctor dump, optional historic content URL rewrite

Default capability: manage_options (Administrators). Override with:

define('WP_TO_S3_CAPABILITY', 'edit_posts'); // e.g. Editors

Configure connection

  1. Choose a provider preset (Amazon S3, R2, MinIO, Spaces, Linode, or Custom) to fill endpoint/region/path-style hints.
  2. Enter bucket, access key, and secret key (and adjust endpoint/region as needed).
  3. Leave Delete local after upload unchecked until you trust the setup.
  4. Click Test next to Save Changes.

What Test does

Test runs a fast probe against the configured bucket:

  1. PUT a tiny object wp-to-s3-connection-test/wp-to-s3.txt (body Hello, world!, under your key prefix if set)
  2. GET and verify the body
  3. DELETE the object

Failures list the method, HTTP status (when available), and error message.

Save gating

  1. After a green Test, click Save Changes.
  2. Check Enable and save again (or enable before testing if connection fields are already verified).

Prefer secrets in wp-config.php / environment variables for production. See Configuration.

Live offload (new uploads)

When Enabled is on and configuration is complete:

New sites never need Migrate if all media is uploaded after enable. See New WordPress site.

Media Library tools

FeatureWhat it does
List column S3 statusOffloaded / local only / dual / missing remote
Attachment metaboxPush to S3; delete local when remote OK
Bulk actionsPush selected; delete local when remote OK

These use the upload_files capability (anyone who can upload media).

Migrate (existing libraries)

For sites that already have files under wp-content/uploads, use the existing site guide.

Quick reference:

Live offload stays available while migrate runs — there is no migrate-only mode.

Same-host vs CDN

Details: Same-host vs CDN.

WP-CLI

See WP-CLI reference for doctor, migrate, and verify.

wp s3 doctor
wp s3 migrate --dry-run
wp s3 migrate --resume
wp s3 verify --sample=100