WP-Stateless – Google Cloud Storage


Upload and serve your WordPress media from Google Cloud Storage (GCS) with the WP-Stateless plugin. In as little as two minutes, you will be benefitting from serving your media from Google Cloud’s distributed servers.

New to Google Cloud? Google is offering you a $300 credit to get you started.


  • Store and deliver media files on Google Cloud Storage instead of your server.
  • Google Cloud Storage is geo-redundant, meaning your media is delivered by the closest server – reducing latency and improving page speed.
  • Scale your WordPress website across multiple servers without the need of synchronizing media files.
  • Native integration between Google Cloud Storage and WordPress.
  • $300 free trial from Google Cloud. Nice!


  • Backup – Upload media files to Google Storage and serve local file urls.
  • CDN – Copy media files to Google Storage and serve them directly from there.
  • Stateless – Store and serve media files with Google Cloud Storage only. Media files are not stored locally.


  • Setup assistant makes getting started fast and easy.
  • No need to manually create service accounts or buckets – handled automatically.
  • Settings panel provides you with further GCS configuration and file url customization.
  • Mask the default GCS URL with your own custom domain.
  • Automatically replace hardcoded media URLs with GCS equivalents in post editor and meta.
  • Batch image thumbnail regeneration.
  • Synchronization tools for uploading existing files and images.
  • All settings supported with wp-config constants and network setting overrides.
  • Multiple modes: Backup, CDN, Stateless.
  • All files served in HTTPS mode.
  • Multisite compatible.

Support, Feedback, & Contribute

We welcome community involvement via the GitHub repository.

Custom Development

Looking for a unique feature for your next project? Hire us!


  • Settings Panel: Supports network setting and wp-config constant overrides.
  • Setup Assistant
  • Setup Assistant: Google Login
  • Setup Assistant: Approve Permissions
  • Setup Assistant: Project & Bucket
  • Setup Assistant: Complete
  • Edit Media: Image stored on Google Cloud Storage.


  1. Search, install, and activate the WP-Stateless plugin via your WordPress dashboard.
  2. Begin WP-Stateless setup assistant at Media > Stateless Setup and click “Get Started Now.”
  3. Click “Google Login” and sign-in with your Google account.
  4. Set a Google Cloud Project, Google Cloud Storage Bucket, and Google Cloud Billing Account and click “Continue.”
  5. Installation and setup is now complete. Visit Media > Stateless Settings for more options.
    For a more detailed installation and setup walkthrough, please see the manual setup instructions on Github.


What are the minimum server requirements for this plugin?

Beyond the official WordPress minimum requirements, WP-Stateless requires a minimum PHP version of 5.5 or higher and OpenSSL to be enabled.

What wp-config constants are supported?

For a complete list of supported wp-config constants, please consult the GitHub documentation.

How do I manually generate the Service Account JSON?

The WP-Stateless setup assistant will create the Service Account JSON automatically for you, but you can follow these steps if you choose to create it manually.

  1. Visit Google Cloud Console, and go to IAM & Admin > Service accounts.
  2. Click Create Service Account and name it wp-stateless.
  3. Set the role to Storage > Storage Admin.
  4. Check Furnish a new private key and select JSON as the key type.
  5. Open the JSON file and copy the contents into the Service Account JSON textarea within the WP-Stateless settings panel.
Where can I submit feature requests or bug reports?

We encourage community feedback and discussion through issues on the GitHub repository.

Can I test new features before they are released?

To ensure new releases cause as little disruption as possible, we rely on a number of early adopters who assist us by testing out new features before they are released. Please contact us if you are interested in becoming an early adopter.

Who maintains this plugin?

Usability Dynamics maintains this plugin by continuing development through it’s own staff, reviewing pull requests, testing, and steering the overall release schedule. Usability Dynamics is located in Durham, North Carolina and provides WordPress engineering and hosting services to clients throughout the United States.


March 22, 2019
Hi All, I would like to say this plugin really helps news portal that have a lot of images, may be hundreds GB or more than a Terabyte. I managed a news portal with currently 12GB images, all the images I have moved to Google Cloud Storage (GCS) with the help of this plugin. This plugin is powerful. One quick note: I hope there would be an alternative way to move the stateless images to GCS through SSH command, especially if we have hundreds GB of images in WP Media Library. Thank you.
November 10, 2018
After uninstalling, the module left behind hard-coded urls of images in post body pointing to Google Cloud Storage buckets. The last update was filled with bugs (see review before mine for a detailed explanation). I was forced to uninstall but now have to deal with the hard-coded urls left behind by this module.
November 1, 2018
A critical bug in version 2.1.8 of WP-Stateless marks the very last straw for our team and our clients. We can no longer afford to drop everything we're doing to troubleshoot why something that previously worked fine for many releases suddenly breaks without warning. From defined constants going unrecognized to site-wide banners displaying for absolutely no reason to the CDN bucket name becoming unset, breaking media uploads and front-end references, we're truly disappointed with what appears to be a refined, well-polished media management solution introducing unexpected bugs with every patch release. Question: Since when does a patch release introduce new bugs and break existing functionality? Answer: When semantic versioning practices aren't adhered to. Given a version number MAJOR.MINOR.PATCH, increment the: MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes. Version 2.1.6 introduced new constants, or, more precisely, replaced constants. This should have been reserved for a MAJOR version release, something considered as "incompatible API changes." Version 2.1.4 introduced an updated version of Google OAuth, a change which broke new setups for our entire team. This should have been reserved for a MINOR version release, something considered "a backwards-compatible change". Version 2.1.7 introduced a dashboard-wide notice for sites set to use Stateless mode, forcing file name rewriting even for users of the CDN mode. The banner meant for Stateless settings persisted even when unnecessary, causing confusion for all. This should have been reserved for a MAJOR version release, something considered as "incompatible API changes." The list goes on. Fortunately for us, the list will no longer be something that causes our team to scramble or our account managers and directors to have uncomfortable discussions with multi-million-dollar clients and projects.
September 19, 2018
This plugin saved my drive capacity and traffic. Please grow with WordPress!
Read all 25 reviews

Contributors & Developers

“WP-Stateless – Google Cloud Storage” is open source software. The following people have contributed to this plugin.


Change log


  • FIX – WP-Smush compatibility enhanced. GitHub Issue #366.
  • FIX – Fixed multisite installation support. GitHub Issue #370.
  • FIX – Fixed settings UI problems related to Cache-Busting option. GitHub Issue #373.
  • FIX – Other minor fixes.


  • FIX – Multisite Network Settings page fixed. GitHub Issue #369.
  • FIX – Fixed incorrect Compatibilities behavior when Bucket Folder is set. GitHub Issue #368.
  • FIX – Other minor fixes.


  • NEW – Added ability to start sync process from specific Attachment ID. GitHub Issue #360.
  • COMPATIBILITY – Added compatibility support for LiteSpeed Cache plugin. Especially to support optimized .webp images. GitHub Issue #357.
  • FIX – Other minor fixes.


  • NEW – Added new filter wp_stateless_skip_add_media. Allows skipping synchronization of the media object with GCS depending on custom condition. GitHub Issue #344.
  • FIX – Compatibility Manager is considering Child Themes now. GitHub Issue #351.
  • FIX – Custom domains handling has been fixed. GitHub Issue #358.
  • ENHANCEMENT – Imagify Image Optimizer and WP Smush compatibilities improved. GitHub Issue #359.


  • FIX – get_post_metadata does not break multi-dimensional arrays anymore. GitHub Issue #352.
  • FIX – PHP Warning: substr_compare() fixed. GitHub Issue #350.
  • FIX – Filtering Domain setting before saving in order to get rid of possible empty spaces. GitHub Issue #348.
  • FIX – Incorrect remote file path generated when disabled Organization setting. GitHub Issue #343.
  • FIX – Hiding admin notices correctly. GitHub Pull Request #355.


  • FIX – Proper ‘srcset’ attribute handling. GitHub Issue #342.
  • ENHANCEMENT – Minor fixes code quality.


  • FIX – Security patch for Authenticated Remote Code Execution (RCE) vulnerability.


  • FIX – Slow page generation when File URL Replacement is enabled. GitHub Issue #265.
  • FIX – Fatal error when WP Smush Pro compatibility is enabled. GitHub Issue #325.
  • FIX – Issue with Imagify. GitHub Issue #326.
  • FIX – Return correct srcset images. GitHub Issue #328.
  • FIX – Fatal error with GFForms. GitHub Issue #330.
  • FIX – Typo in admin notices. GitHub Issue #337.
  • ENHANCEMENT – Extended “File URL Replacement” options. GitHub Issue #336.
  • ENHANCEMENT – Service Account JSON is now hidden if set via constant. GitHub Issue #320.
  • ENHANCEMENT – New database table for tracking files not tracked in media library. GitHub Issue #307.
  • ENHANCEMENT – Updated depreciated function flagged by security software. GitHub Issue #300.


  • FIX – Resolved fatal error with OneCodeShop RML Amazon S3 plugin. GitHub Issue #317.
  • FIX – Resolved missing bucket in file URL when “storage.googleapis.com” was supplied in Domain field. GitHub Issue #318.
  • ENHANCEMENT – Support synchronization of files without metadata, such as .doc and .docx files. GitHub Issue #316.


  • FIX – WooCommerce product export.
  • FIX – PDF previews in media library now supported.
  • ENHANCEMENT – Improved error message when there is nothing to sync.
  • ENHANCEMENT – Domain field functionality now allows webmaster to control http or https
  • ENHANCEMENT – Notice about Stateless mode requiring the Cache-Busting option is displayed to those using Stateless mode.
  • ENHANCEMENT – Upload full size image before generating thumbnails.
  • COMPATIBILITY – Added compatibility support for Learndash plugin.
  • COMPATIBILITY – Added compatibility support for BuddyPress plugin.
  • COMPATIBILITY – Added compatibility support for Divi Builder export.
  • COMPATIBILITY – Added compatibility support for Elementor plugin.


  • ENHANCEMENT – Display dashboard-wide notice for existing users explaining stateless mode now enables cache-busting option.
  • ENHANCEMENT – Display notice when selecting stateless mode explaining stateless mode now enables cache-busting option.
  • ENHANCEMENT – Display required message on cache-busting setting description when stateless mode is enabled.

Earlier versions

Please refer to the separate changelog.txt file.