WORDPRESS + GOOGLE CLOUD STORAGE

Your media library.
Free from your server.

Upload in WordPress. Store in your cloud. Keep every image when your infrastructure changes.

Free. Open source. Maintained by UDX since 2015.
01 / THE EDITORWP-Stateless
Actual UDX WordPress Media LibraryView full size ↗
02 / THE STORAGEWP-Stateless
Actual udx.io media objects in Google Cloud StorageView full size ↗
WordPress stays familiar. The storage changes.
FOLLOW THE FILE

The file stays. The server moves on.

01 / upload

Upload as usual.

Editors keep using the WordPress Media Library. WP-Stateless takes care of the storage handoff.

On udx.io: the same media workflow.
02 / store

Give the file a durable home.

The original and generated sizes go to your Google Cloud Storage bucket. Ephemeral mode removes the local copies after upload.

On udx.io: Ephemeral mode and stateless-udx-io.
03 / replace

Replace the application.

Deploy a new container or add a replica. The media stays in the bucket, with no uploads folder to copy between servers.

On udx.io: two disposable containers, one library.
04 / deliver

Keep the visitor’s image intact.

Every application server can reference the same media URL. An optional image CDN can resize and cache the response in front of the bucket.

On udx.io: Imgix handles image delivery.
Illustrated upload: a media file moves from WordPress into Google Cloud Storage. Two WordPress containers use the same stored media. Replacing a container does not remove the file. WordPressMEDIA LIBRARY UPLOAD YOUR BUCKETGoogle Cloud Storage WordPress / 01 WordPress / 02 WordPress / 03NEW CONTAINER. SAME FILE. REPLACEABLE SERVERSOne shared media URL THE VISITORSAME IMAGE.Independent of the server.
Illustrated workflow / your bucket, replaceable servers

You are looking at the example.

udx.io runs this setup. See the measured image delivery and the timed recovery drill in the handbook.

THE REAL PRODUCT

Familiar to your editors.
Different underneath.

01 / The familiar part

WordPress stays WordPress.

Drag a file into the Media Library. Write the alt text, choose the image, publish the page. Your editors keep the workflow they already know.

The familiar partWP-Stateless
The actual UDX WordPress Media LibraryView full size ↗
udx.io / actual Media Library, October 2026
02 / The part that changes

Choose where the file lives.

WP-Stateless connects the library to your Google Cloud Storage bucket. Four modes let you keep a local copy, serve from the bucket, or remove the dependency on local media storage.

DETAIL / MODE SELECTIONWP-Stateless
WP-Stateless settings showing Backup, CDN, Ephemeral, and Stateless modesView full size ↗
udx.io / Ephemeral mode, October 2026
03 / The part that lasts

The server can go.
The media stays.

The files live independently of the application. Add a replica or replace a container: each server can use the same media URLs. This is the bucket behind the site you are reading.

The part that lastsWP-Stateless
Actual stateless-udx-io bucket showing media used by this siteView full size ↗
udx.io / actual production bucket, October 2026

Captured from udx.io in October 2026: its WordPress Media Library, WP-Stateless settings, and Google Cloud Storage bucket. Open any capture to inspect the full image.

4,000+active installations reported by WordPress.org
496kdownloads since the plugin was listed in March 2016
268GitHub stars, 67 forks and 23 contributors
15compatibility add-ons for plugins that expect local files

Counts read from WordPress.org and GitHub on October 12, 2026. They are not updated live.

Four modes. One storage decision.

Choose whether the server keeps a copy. Every mode uses your own Google Cloud account.

ModeLocal copyServed from
Backupkeptserver
CDNkeptbucket
EphemeralThis sitesecondsbucket
Statelessnonebucket

Ephemeral and Stateless remove the dependency on local uploads. PHP still needs temporary storage. Compare configuration options in the documentation.

What ships in the box.

The plugin is the integration, not a hosted service. Everything below runs inside your WordPress install against a bucket in your own Google Cloud project.

Setup assistant

Signs in to Google Cloud and creates the service account and bucket for you. Manual setup is documented for teams that provision their own.

Settings as code

Every setting can be set with a wp-config constant or a network-level override, so environments are configured from the deployment, not the dashboard.

Custom domain

Mask the default storage URL with a hostname you own, so content holds addresses you control rather than Google's.

URL rewriting

Hardcoded media URLs in post content and meta are replaced with their bucket equivalents, so old links keep resolving after the move.

Sync tools

Upload an existing library to the bucket, in batches, and regenerate image sizes. Keep the local copy until every file is verified.

Multisite and serverless

Network installs are supported. Serverless platforms are supported too, including Google App Engine; give uploads a writable temporary directory.

Current release4.4.3, September 5, 2026
WordPress5.0 or later, tested with 6.9
PHP8.1 or later
PriceFree. Google Cloud bills storage and egress on your own account.

Constants, filters and release notes are in the documentation. The changelog lists every release since 2016.

Compatibility: 15 available add-ons

Some plugins write files outside the media library or read them straight from disk. Each add-on teaches WP-Stateless that plugin's paths. Install only the ones for plugins you actually run.

The add-on library explains what each one changes. Missing one? Open an issue on GitHub.

Before you install.

Is WP-Stateless free?

Yes. The plugin is free on WordPress.org and the source is public on GitHub. Google Cloud bills storage, operations and egress for the bucket on your own account; nothing is billed by UDX. Google's own pricing page is the source for those rates.

Can I move an existing media library into the bucket?

Yes. The sync tools upload existing files in batches and can regenerate image sizes. Synchronizing a large, older library is the step that deserves the most care, so start in Backup or CDN mode, keep the local copy until every file is verified in the bucket, and only then switch to Ephemeral or Stateless.

Which mode should I pick?

Ephemeral for containers with a writable but disposable filesystem, which is how udx.io runs. Stateless for a read-only application filesystem with writable temporary storage. Backup when you are staying on one server and want the bucket as insurance. CDN when you want bucket delivery today and a clean move later.

Does it work with my page builder, forms or commerce plugin?

The WordPress media library works without any add-on. Plugins that write their own files or read them from disk need the matching add-on from the list above. Test uploads, generated sizes and downloads on a staging copy before switching production.

Does it resize images or cache them at the edge?

No. WP-Stateless stores files and serves them from the bucket. For on-the-fly sizes and edge caching, put an image CDN or a cache in front of the bucket. Chapter 06 measures what that is worth on this site: a 57 percent smaller response at 800 pixels.

Who maintains it, and can I pay for help?

UDX maintains the plugin from Durham, North Carolina, with 23 contributors on GitHub. Issues and pull requests are welcome there. Paid help covers library migrations, bucket and CDN design, and the incident work when images stop loading; use the form at the bottom of this page.

Moving a media library you cannot afford to break?

Tell us how many files you have, where they live today and what serves them. We scope migrations, bucket and CDN design, and the incident work when images stop loading.