Start Free
Loading article…
Guides & Tutorials

DigitalOcean Spaces WordPress Guide: $5 Media Offload Setup

12 min read

DigitalOcean Spaces WordPress setups are a favourite with developers and agencies for one reason: the pricing fits on a sticky note. Five dollars a month buys 250 GiB of storage, 1 TiB of outbound transfer and a built-in CDN. If your WordPress server already runs on a DigitalOcean Droplet, keeping your media in the same cloud is a natural next step.

This guide explains how to set up DigitalOcean Spaces for WordPress media, what the $5 plan really covers, how the built-in CDN works, how Spaces compares on cost with Cloudflare R2 and Amazon S3, and the limits worth knowing before you migrate a large library.


What Is DigitalOcean Spaces?

DigitalOcean Spaces is S3-compatible object storage from DigitalOcean, the cloud provider known for simple virtual servers called Droplets. Each storage container is called a Space (or bucket), and it works with the same tools and plugins that talk to Amazon S3.

Spaces is designed for exactly the kind of files WordPress produces: images, thumbnails, PDFs, audio and video. Instead of storing them on your server’s disk, you store them in a Space and serve them to visitors through the built-in CDN.

Why WordPress sites move media to Spaces

  • Smaller servers: you can run WordPress on a smaller Droplet or hosting plan when media no longer fills the disk.
  • Faster backups and migrations: without gigabytes of uploads, backups finish quickly and moving hosts is easier.
  • Faster images: the Spaces CDN delivers files from edge locations closer to your visitors.
  • Predictable billing: a flat monthly base price with clear overage rates.

DigitalOcean Spaces Pricing for WordPress

According to DigitalOcean’s pricing page (checked September 2026), Spaces works on a simple subscription model.

DigitalOcean Spaces WordPress: What the $5 Spaces plan includes
What the $5 Spaces plan includes
ItemPrice
Base subscription$5 per month
Included storage250 GiB
Included outbound transfer1 TiB
Extra storage$0.02 per GiB
Extra transfer$0.01 per GiB
Buckets includedUp to 100

Two details matter for WordPress. First, the $5 subscription covers every Space in your account, so an agency can host media for several client sites under one base fee. Second, traffic served through the Spaces CDN counts as normal Spaces transfer, so the CDN does not add a separate bill.

DigitalOcean also offers a cold storage option at $0.007 per GiB for rarely accessed data, but cold storage buckets do not support the CDN. For live WordPress media, use standard Spaces.

Real Cost Examples vs R2 and S3

Here is what DigitalOcean Spaces WordPress hosting costs for three typical sites, compared with Cloudflare R2 ($0.015 per GB-month, 10 GB free, no egress fees) and Amazon S3 Standard in us-east-1 (about $0.023 per GB-month, first 100 GB of transfer free, then about $0.09 per GB). We treat GB and GiB as equal for simple maths.

DigitalOcean Spaces WordPress: 200 GB stored, 1 TB served per month
200 GB stored, 1 TB served per month
SiteDigitalOcean SpacesCloudflare R2Amazon S3
50 GB stored, 300 GB served$5.00$0.60about $19
200 GB stored, 1 TB served$5.00$2.85about $86
500 GB stored, 3 TB servedabout $30$7.35about $272

For the third site, Spaces charges $5 plus 250 GB of extra storage ($5) plus about 2 TB of extra transfer (about $20). Operation fees on R2 are left out because most small and medium sites stay within its free tier.

What the numbers tell you

  • Spaces is far cheaper than S3 once you count transfer. S3’s bandwidth charges dominate the bill for any site with real traffic.
  • R2 is cheaper than Spaces in pure cost, mainly because it charges nothing for egress.
  • Spaces wins on simplicity if you already run on DigitalOcean: one account, one bill, and a CDN switch in the same dashboard.

For a side-by-side of all the main providers, see our best cloud storage for WordPress comparison.

Who Should Use DigitalOcean Spaces for WordPress?

Your situationSpaces a good fit?
WordPress already runs on a DigitalOcean DropletYes: same provider, same region, one bill
Agency hosting media for several client sitesYes: one $5 base covers up to 100 buckets
Site under 250 GB serving under 1 TB a monthYes: everything fits in the $5 plan
Very high traffic, many terabytes a monthCompare with R2, which has no egress fees
Tiny site with a few GB of mediaR2’s free tier may cost nothing at all

Spaces vs Keeping Media on Your Droplet

If WordPress already runs on a Droplet, you might wonder why not just buy a bigger disk. Here is how the two approaches compare for a growing media library.

Media on the DropletDigitalOcean Spaces WordPress setup
Growing storageResize the Droplet or attach a volumeAutomatic; pay per extra GiB
Global deliveryFrom one region unless you add a CDNBuilt-in CDN
Server load from imagesEvery image request hits your serverHandled by Spaces and the CDN
Backups and snapshotsInclude every upload, so they grow largeMuch smaller: code and database only
Scaling to several serversFiles must be synced between serversAll servers share the same Space

The last row matters more as a site grows. Once you run WordPress on more than one server behind a load balancer, keeping uploads on local disks becomes a real headache. With Spaces, every server reads from and writes to the same place.

A quick way to estimate your size

Check the size of your wp-content/uploads folder in your hosting file manager or over SSH. That number, plus about a year of expected growth, tells you whether you will stay within the 250 GiB included in the base plan. To estimate transfer, look at your monthly bandwidth in your host’s statistics: most of it is usually images.

The Built-In Spaces CDN

Every Space can have a CDN turned on with one click. According to DigitalOcean’s documentation, you enable it from the Space’s Settings tab, and your files become available at an address in this format:

your-space.region.cdn.digitaloceanspaces.com

Edge cache TTL

The CDN keeps a cached copy of each file for a set time, called the edge cache TTL. The default is 1 hour. DigitalOcean notes that a longer TTL improves performance but delays updates until the cache expires.

For WordPress media, a longer TTL is almost always the right choice. When you edit or replace an image in WordPress, it normally gets a new file name, so the old cached copy does no harm. A TTL of a day or more means fewer trips back to the Space and faster loading for visitors.

Tip: Always use the CDN endpoint, not the direct Space endpoint, as the address your images load from. It costs the same and loads faster for visitors far from your Space’s region.

How to Set Up DigitalOcean Spaces for WordPress

These steps use OffloadX, which supports DigitalOcean Spaces on every plan, including the free one.

DigitalOcean Spaces WordPress: DigitalOcean Spaces WordPress setup
DigitalOcean Spaces WordPress setup

Step 1: Create a Space

In the DigitalOcean control panel, create a Spaces bucket. Choose a region close to your WordPress server, such as nyc3, ams3 or sgp1. If your site runs on a Droplet, pick the same region. Avoid dots in the bucket name if you plan to use the CDN with a custom domain (see below).

Step 2: Enable the CDN

Open the Space’s Settings, find the CDN section, click Edit and then Enable CDN. Set a longer edge cache TTL than the 1-hour default.

Step 3: Create a Spaces access key

Generate a Spaces key in the control panel. This is separate from a general DigitalOcean API token, and it is the most common setup mistake: an API token will not work as a Spaces access key. Save the Access Key ID and Secret Access Key; the secret is shown only once.

Step 4: Install OffloadX

Download OffloadX from offloadx.com, go to Plugins → Add New → Upload Plugin, upload the ZIP file and activate it.

Step 5: Enter your Spaces details

In OffloadX Credentials, choose DigitalOcean Spaces and enter:

  • Bucket Name: the Space name.
  • Region: for example nyc3.
  • Access Key ID and Secret Access Key from your Spaces key.
  • CDN Endpoint: your CDN address or custom subdomain.

Run the connection tester to confirm everything works.

Step 6: Turn on offloading and test

Enable automatic offloading for new uploads in Behaviour. Upload a test image, add it to a draft post and preview it. Open the image in a new tab: the address should show your CDN endpoint.

Using a Custom Domain With Spaces

Serving media from your own subdomain, such as media.yoursite.com, looks more professional and keeps your image URLs stable if you ever change storage provider. The Spaces CDN supports this, with one requirement: the subdomain must have an SSL certificate.

Two ways to get the certificate

  1. DNS managed by DigitalOcean: the control panel can issue a free Let’s Encrypt certificate automatically.
  2. DNS managed elsewhere: you upload your own certificate for the subdomain.

Two gotchas from the docs

  • A custom wildcard certificate already used elsewhere in your account cannot secure a CDN subdomain.
  • Wildcard certificates do not match bucket names that contain dots, which is why we suggest a name like yoursite-media instead of media.yoursite.com.

Once the subdomain is live, enter it as the CDN Endpoint in OffloadX. Our custom domain guide explains why a branded media domain helps SEO and future migrations.

Spaces Limits Worth Knowing

Most WordPress sites never hit these, but they matter for large libraries and busy stores. From DigitalOcean’s limits page:

LimitValueWhat it means for WordPress
Operations per second (new buckets)800 totalPlenty for normal traffic, especially with the CDN absorbing reads.
Operations per second (older buckets)500 totalVery large bulk migrations may need pacing.
Single upload sizeUp to 5 GBFine for images; very large videos need multipart uploads.
Deleting files in the control panelUp to 9,999 at onceUse the API or a tool for bigger clean-ups.

The operations limit is the one to watch. Serving images through the CDN keeps most reads away from the Space itself, which is another reason to always use the CDN endpoint.

Keeping Your Spaces Setup Secure

Your Spaces access key can upload, overwrite and delete files, so treat it like a password.

  • Use a key just for WordPress. If you run several sites, give each its own key so you can revoke one without affecting the others.
  • Never share keys in support tickets, chat or code repositories. If a key leaks, delete it in the control panel and create a new one.
  • Keep private files out of public Spaces. Paid downloads, invoices and member-only documents should not be served from a public CDN address.
  • Turn on two-factor authentication for your DigitalOcean account.

Migrating Your Existing Media

On OffloadX paid plans, Bulk Migration uploads your existing Media Library in the background and URL Replace updates file links in your database, so old posts load from Spaces too.

Before you migrate

  • Back up files and database.
  • Compress images first: every megabyte saved is saved on storage and on transfer for as long as the file is online.
  • Check your total size: if the library is close to 250 GiB, estimate the overage so the first bill is not a surprise.
  • Test on staging if your site uses unusual image sizes or a page builder.

After you migrate

  • Browse the site logged out and confirm images, PDFs and media load from the CDN address.
  • Check a few old posts, not just recent ones.
  • Run PageSpeed Insights on key pages and compare with your earlier results.
  • Once everything checks out, remove local copies to free disk space.

Moving from WP Offload Media? Our OffloadX vs WP Offload Media comparison covers the differences.

Common Problems and Fixes

ProblemLikely causeFix
Connection test fails with “access denied”Using a DigitalOcean API token instead of a Spaces keyCreate a Spaces access key and use that.
Bucket not foundWrong regionUse the Space’s exact region code, such as ams3.
Images return 403 to visitorsFiles are not publicly readableCheck the file permissions in the Spaces control panel.
Custom domain SSL errorCertificate missing or bucket name has dotsIssue a certificate; avoid dots in bucket names.
Updated image still shows old versionCDN cache has not expiredPurge the file from the CDN cache in the control panel.
Slow or failing bulk migrationOperations limit reachedLet the migration run in the background at a steady pace.

Frequently Asked Questions

Is DigitalOcean Spaces good for WordPress?

Yes. It is S3-compatible, includes a free built-in CDN and costs $5 a month for 250 GiB of storage and 1 TiB of transfer, which covers many WordPress sites completely.

Do I need a Droplet to use Spaces?

No. Spaces works with WordPress hosted anywhere. Using the same region as a DigitalOcean Droplet just makes uploads a little faster.

Does the Spaces CDN cost extra?

No separate fee. CDN traffic is billed as normal Spaces transfer, and the first 1 TiB each month is included in the $5 plan.

Is DigitalOcean Spaces cheaper than Amazon S3 for WordPress?

For most sites, yes, mainly because of transfer costs. A site serving 1 TB a month pays about $80 in S3 transfer alone, while Spaces includes 1 TiB in the base price.

What is the difference between a Spaces key and an API token?

An API token manages your DigitalOcean account. A Spaces key is an S3-style access key for reading and writing files. Offload plugins need the Spaces key.

Can I offload WooCommerce images to Spaces?

Yes. In OffloadX, WooCommerce support is included on the Business and Agency plans. See our WooCommerce offload guide for which files to keep private.

What happens if I go over 250 GiB or 1 TiB?

Nothing breaks. You pay $0.02 per extra GiB of storage and $0.01 per extra GiB of transfer, added to the $5 base.

Should I use cold storage for old WordPress media?

Not for files still shown on your site. Cold storage buckets do not support the CDN, so keep live media in standard Spaces and use cold storage only for archives and backups.

Which Spaces region should I pick for WordPress?

The region closest to your WordPress server, so uploads are quick. The CDN handles delivery to visitors elsewhere, so the storage region matters less for page speed.

Can one Space hold media for several WordPress sites?

It can, using a separate folder per site, but separate Spaces are easier to manage. The $5 base plan already includes up to 100 buckets.

Conclusion

A DigitalOcean Spaces WordPress setup is simple and affordable: $5 a month covers most sites, the CDN is built in, and it pairs naturally with Droplets. Use a Spaces key, turn on the CDN with a long cache time, and compare with R2 if your traffic runs into many terabytes.

See OffloadX Plans →

Pricing and limits checked September 2026 from DigitalOcean, Cloudflare and AWS. Providers change prices from time to time, so confirm current rates on their websites.