Start Free
Loading article…
WordPress Tips

Egress Fees Explained for WordPress Sites

16 min read

Egress fees are what cloud storage providers charge when data leaves their network, and for a WordPress site that usually means every image, video and PDF a visitor downloads from your bucket. Storage is cheap almost everywhere, so egress is often the line on the bill that decides whether offloading media saves money or quietly costs more.

This guide explains what egress is, where it comes from on a WordPress site, and what the main providers charge, with prices checked September 2026. We then work through monthly examples for 100 GB, 1 TB and 5 TB of media served, show how a CDN changes the maths, and finish with practical ways to keep the bill small.


What Are Egress Fees?

“Egress” means data going out. In cloud storage it is the data that leaves the provider’s network, usually to a visitor’s browser on the public internet. The opposite, ingress, is data coming in when you upload files, and it is free with every provider in this guide.

egress fees: Egress prices at a glance
Egress prices at a glance

Providers call egress by different names on their pricing pages. You will see “data transfer out”, “outbound transfer”, “network usage”, “download bandwidth” or simply “bandwidth”. They all describe the same thing: gigabytes sent out of the bucket.

How egress fees are billed

  • Per gigabyte: most providers charge a price per GB (or per GiB) transferred each month.
  • Tiered: the per-GB price often drops as volume grows, for example after the first 10 TB.
  • Free allowance: some include a monthly amount free, either a fixed number or a ratio of what you store.
  • By destination: sending data to some regions, such as Australia or China, can cost more.
  • Zero-rated: a few providers charge nothing for egress at all, or nothing when the data goes to a partner CDN.

Why egress matters more than storage

A typical WordPress media library is measured in tens or hundreds of gigabytes. Storing 100 GB costs a couple of dollars a month on most services. Serving that media to visitors, though, can move many times the stored amount every month, because each file is downloaded again and again.

That is why two providers with similar storage prices can produce very different bills. The one with high egress fees gets more expensive every time your traffic grows. If you are still choosing where to store media, our overview of the best cloud storage for WordPress compares storage, features and ease of setup; this guide focuses only on the data transfer side.

Key point: Storage cost grows with the size of your library. Egress cost grows with your traffic. For a busy site, egress is usually the bigger number.

Where Egress Comes From on a WordPress Site

When media sits on your web server, image downloads use your hosting bandwidth. Once you offload media to a bucket and rewrite URLs, those downloads come from the storage provider instead, and its egress fees apply.

Source of egressHow it happensHow big it can get
Page viewsEvery image, video poster and background loaded by a visitorThe main driver for most sites
Large filesPDFs, audio, video and ZIP files downloaded in fullCan dwarf images on media-heavy sites
HotlinkingOther sites embedding your image URLsUnpredictable; you pay for their traffic
Bots and crawlersSearch engines, AI crawlers and scrapers fetching imagesOften a noticeable share of total transfer
Backups and syncsTools that download the bucket to another locationA full copy each time it runs
MigrationsMoving the whole library to a different providerOne-off, equal to the library size

Uploads from WordPress to the bucket are ingress, so offloading itself does not create egress. Uploading a new image, generating its thumbnails and pushing them to storage costs nothing in transfer with the providers below.

Browser caching helps, but only for repeat visits

A returning visitor’s browser may reuse images it downloaded before, if the files are sent with sensible cache headers. First-time visitors, bots and anyone on a new device still download everything. When you estimate egress, it is safer to assume most image requests reach the bucket or CDN.

Egress Fees by Provider (September 2026)

These are the published internet egress prices for the storage services most WordPress sites use. Figures come from each provider’s pricing page, checked September 2026, and are for standard storage classes and North American or European traffic unless noted.

ProviderInternet egress priceFree allowanceNotes
Amazon S3 (US East)$0.09/GB for the first 10 TB, then $0.085, $0.06 and $0.04/GB in higher tiers100 GB per month, shared across all AWS services and regionsTransfer from S3 to CloudFront is free
Google Cloud Storage$0.12/GiB for 0 to 10 TiB, $0.11/GiB to 150 TiB, $0.08/GiB above100 GB per month from North America, in US-WEST1, US-CENTRAL1 and US-EAST1 onlyAustralia and China destinations cost more
Cloudflare R2$0 (no egress fees)Not neededStorage $0.015/GB-month; operations are billed
Wasabi$0 if monthly egress is no more than your active storageUp to your stored volumeOutside the policy, Wasabi may limit or suspend service
Backblaze B2$0.01/GB above the free allowanceUp to 3 times your average monthly stored dataUnlimited free egress to partners such as Cloudflare, Fastly and bunny.net
Bunny CDN$0.01/GB (Europe and North America) up to $0.06/GB (Middle East and Africa)None; $1 minimum monthly chargeThis is CDN delivery pricing; Bunny Storage is billed separately
DigitalOcean Spaces$0.01/GiB above the allowance1,024 GiB per month in the $5 subscriptionThe $5 also includes 250 GiB of storage and the Spaces CDN

Reading the fine print

  • AWS: the Amazon S3 pricing page describes the 100 GB free allowance as aggregated across all AWS services and regions, so an EC2 server or another bucket can use it up before your media does.
  • Google Cloud: the Cloud Storage pricing page prices egress in GiB and TiB, and the free 100 GB applies only to buckets in three US regions.
  • Cloudflare R2: R2 pricing says egress directly from R2, including through the S3 API and r2.dev domains, is free. You still pay for storage and for Class A and Class B operations beyond the free tier.
  • Wasabi: the Wasabi pricing FAQ sets pay-as-you-go storage at $7.99 per TB per month, with a 1 TB minimum charge and a 90-day minimum storage duration.
  • Backblaze B2: B2 pricing lists storage at $6.95 per TB per month, the first 10 GB free, and no minimum storage duration.
  • Bunny: the bunny.net CDN pricing page also offers a Volume network from $0.005/GB for very high traffic, with fewer locations.
  • DigitalOcean: the Spaces pricing docs say the transfer allowance covers both CDN and origin bandwidth.

Most of these providers have dedicated setup guides on our blog, including Backblaze B2 for WordPress, offloading media to Wasabi, Bunny Storage for WordPress and DigitalOcean Spaces for WordPress.

How to Estimate Your Own Egress

Before you can compare egress fees, you need a rough idea of how much data your site sends each month.

egress fees: Estimate your monthly egress
Estimate your monthly egress

You do not need perfect numbers to compare providers. A rough monthly estimate is enough to see which pricing model suits your site.

The simple formula

Monthly egress ≈ monthly page views × average media weight per page view

For example, 100,000 page views a month with about 1 MB of images per view is roughly 100 GB of egress. Add large downloads separately: 2,000 downloads of a 50 MB video is another 100 GB.

Where to find the inputs

  1. Page views: take the monthly figure from your analytics tool, then add a margin for bots, which many analytics tools do not count.
  2. Media weight per page: open a typical page in your browser’s developer tools, filter the Network panel by images and media, and note the total transferred size. Check a few page types, such as a post, a shop page and the home page.
  3. Large files: count downloads of PDFs, audio and video from your download logs or plugin stats.
  4. Current hosting bandwidth: your host’s control panel may show monthly bandwidth. Media is usually most of it, so it is a useful upper bound.
  5. Existing bucket: if you already offload, your provider’s dashboard or bill shows the real figure. Use that over any estimate.

Quick reference

Monthly page views0.5 MB media per view1 MB per view2 MB per view
50,00025 GB50 GB100 GB
100,00050 GB100 GB200 GB
500,000250 GB500 GB1 TB
1,000,000500 GB1 TB2 TB
2,500,0001.25 TB2.5 TB5 TB

Multiply your figure by a provider’s per-GB rate to get a first estimate of its egress fees. These figures use 1 TB = 1,000 GB to keep the maths simple. Real bills use each provider’s own units, and some bill in GiB, which is about 7% larger than a GB.

Worked Monthly Examples: 100 GB, 1 TB and 5 TB

Here is what egress fees look like for three traffic levels. The example site stores 200 GB of media and serves it directly from the bucket to visitors in North America or Europe, with no CDN in front.

egress fees: Egress cost to serve 1 TB a month
Egress cost to serve 1 TB a month

Assumptions

  • 1 TB = 1,000 GB; 5 TB = 5,000 GB.
  • AWS: the full 100 GB free allowance is available to the bucket (nothing else in the account uses it).
  • Google Cloud: the bucket is in a US region covered by the free 100 GB.
  • Backblaze B2: 200 GB stored gives a free allowance of 600 GB.
  • Wasabi: egress is compared with 200 GB of active storage.
  • DigitalOcean: 5,000 GB is about 4,657 GiB; 200 GB of storage fits inside the 250 GiB included.
  • Only egress (or the Spaces subscription) is shown. Storage and request charges are extra where they apply.
Provider100 GB served1 TB served5 TB served
Amazon S3 (direct)$0 (within free 100 GB)900 GB × $0.09 = $814,900 GB × $0.09 = $441
Google Cloud Storage (direct)$0 (within free 100 GB)900 × $0.12 ≈ $1084,900 × $0.12 ≈ $588
Cloudflare R2$0$0$0
Wasabi$0 (under 200 GB stored)Outside free egress policyOutside free egress policy
Backblaze B2 (direct)$0 (under 600 GB)400 GB × $0.01 = $44,400 GB × $0.01 = $44
Bunny CDN (EU/NA rate)$1$10$50
DigitalOcean Spaces$5 subscription$5 subscription$5 + 3,633 GiB × $0.01 ≈ $41.33

The Google Cloud figures multiply GB by a per-GiB price, so treat them as close estimates. If the free allowance is already used elsewhere in your AWS or Google account, add about $9 (AWS) or $12 (Google) to each column.

What the examples show

  • At 100 GB a month, egress barely matters. Almost every option is free or costs a few dollars.
  • At 1 TB, serving straight from S3 or Google Cloud Storage costs more than the storage itself by a wide margin.
  • At 5 TB, the gap between the most and least expensive options is hundreds of dollars a month.
  • Wasabi suits sites that store a lot and serve relatively little. A small library with heavy traffic does not fit its policy.
  • Bunny’s figure is for its CDN delivery. If you store files in Bunny Storage, that is billed separately.
Key point: Serving media straight from S3 or Google Cloud Storage is the most expensive way to handle growing traffic. Put a CDN in front, or pick storage without egress fees.

How a CDN Changes Egress Fees

A CDN keeps copies of your files on servers close to visitors. When a file is cached at the edge, the visitor downloads it from the CDN and the bucket is not touched. The bucket only sends data when the CDN needs a fresh copy, which is called an origin fetch.

That changes egress fees in two ways. First, you pay the CDN’s delivery price instead of the storage provider’s egress price. Second, the storage provider only sees the origin fetches, which may be a small share of total traffic if your cache hit ratio is high. Our explainer on media offload vs CDN covers how the two fit together.

Common storage and CDN pairings

PairingBucket to CDNCDN to visitor
Amazon S3 + CloudFrontFree, according to AWS’s S3 pricing pageCloudFront pricing: always-free tier of 1 TB per month, or flat-rate plans
Backblaze B2 + Cloudflare or bunny.netFree, as B2 partnersCloudflare plan or Bunny per-GB rate
Cloudflare R2 + custom domainNo egress fees from R2Served through Cloudflare’s network
DigitalOcean Spaces + Spaces CDNIncludedCounts towards the 1,024 GiB allowance
Bunny Storage + Bunny CDNWithin BunnyBunny per-GB rate by region

The CloudFront example

The CloudFront pricing page lists an always-free pay-as-you-go tier of 1 TB of data transfer and 10 million requests per month. It also lists flat-rate plans, including a $15 per month Pro plan with a 50 TB allowance and no overage charges.

Compare that with the worked examples. Serving 1 TB straight from S3 cost about $81. Put CloudFront in front, and the S3-to-CloudFront transfer is free while 1 TB of delivery falls inside CloudFront’s free tier. Check the plan details for your region and request volume before relying on this, as requests and features are part of each plan.

Cache hit ratio matters

A CDN only saves egress when files stay cached. Media files rarely change, so they cache well, but short cache lifetimes, query strings that vary per request and frequent purges all send more requests back to the bucket. Aim for long cache lifetimes on images and use new file names when an image changes.

How to Reduce Egress Fees on WordPress

Whichever provider you use, sending fewer bytes lowers your egress fees and speeds up the site. These are the steps that make the biggest difference.

1. Serve smaller images

  • Compress on upload: reduce file size before images reach the bucket. OffloadX Starter and above include image compression.
  • Use modern formats: WebP files are usually smaller than equivalent JPEGs. OffloadX Starter adds WebP and Cloudflare Images support.
  • Let WordPress pick the size: responsive srcset markup lets browsers download a smaller size on small screens. Avoid inserting full-size originals into posts.
  • Lazy-load below-the-fold images: WordPress adds loading="lazy" to many images by default, so images a visitor never scrolls to are not downloaded.

2. Put a CDN in front of the bucket

For S3, Google Cloud Storage and B2, a CDN is the single biggest saving, because it swaps high per-GB egress for cheaper or free delivery. With R2, a custom domain for your R2 bucket is the recommended way to serve production traffic. In OffloadX, each provider has an optional CDN or delivery URL field for exactly this.

3. Set long cache headers

Media files uploaded to WordPress get unique names, so they can be cached for a long time. Long browser and CDN cache lifetimes mean repeat visitors and edge servers reuse files instead of fetching them again.

4. Block hotlinking and unwanted bots

If other sites embed your images, you pay for their visitors. CDNs such as Cloudflare and Bunny offer hotlink protection or referrer rules. Rate-limiting or blocking abusive scrapers at the CDN also cuts wasted transfer.

5. Keep large downloads in mind

Video is the fastest way to run up egress. Consider a dedicated video host or streaming service for large video libraries, and keep a close eye on popular PDFs and ZIP downloads.

6. Avoid needless full-bucket downloads

Backups and sync jobs that download the whole bucket every night create egress fees on providers that charge for it. Use tools that copy only changed files, or back up within the same provider where that is free.

7. Choose storage to match traffic

If your site is busy and you do not want a separate CDN bill, storage without egress fees removes the problem. Our Cloudflare R2 vs Amazon S3 comparison looks at that decision in more depth.

Common Egress Surprises

SurpriseWhy it happensWhat to do
The AWS free 100 GB is gone earlyIt is shared across all AWS services and regionsCheck other AWS usage; do not count on the allowance
Migration bill from the old providerMoving a library out is egress from the old bucketPlan migrations once; check the provider’s migration terms
Wasabi usage warningMonthly egress was higher than stored dataAdd a CDN, or choose a provider that suits high traffic
R2 bill is not zeroStorage and operations are billed even though egress is freeCheck Class A and Class B operation counts
Higher bill for some countriesSome destinations and CDN regions cost moreCheck regional rates if much of your traffic is outside Europe and North America
Traffic spike from one postA viral page or hotlinked imageUse a CDN and set a billing alert
GB vs GiB mismatchSome providers bill in GiBCompare like for like; a GiB is about 7% larger

Most providers let you set a budget or billing alert. Set one before you switch media delivery to a bucket, so a sudden spike is noticed within days rather than at the end of the month.

Choosing a Provider by Traffic Profile

There is no single cheapest provider, even when egress fees are the main concern. The right choice depends on how much you store compared with how much you serve.

Your siteEgress-friendly optionsWhy
Small blog, under 100 GB served a monthAlmost any providerEgress fees are tiny or covered by free allowances
Busy content site, 1 TB or more servedCloudflare R2; B2 with a partner CDN; S3 with CloudFrontNo egress fees, or free bucket-to-CDN transfer
Large archive, low trafficWasabi, Backblaze B2Low storage prices; egress allowance tied to stored data
Wants one simple billDigitalOcean SpacesStorage, 1,024 GiB transfer and CDN in one $5 subscription
Wants tight regional controlBunny Storage + Bunny CDNPer-region pricing, from $0.01/GB in Europe and North America
Already on AWSS3 + CloudFrontStay in one account; avoid serving directly from S3

OffloadX supports Cloudflare R2, Amazon S3, Wasabi, Google Cloud, DigitalOcean Spaces, Bunny Storage and any S3-compatible service on every plan, including Free. That means you can pick the provider whose egress fees suit your traffic without changing plugins later.

Frequently Asked Questions

What are egress fees in simple terms?

They are charges for data leaving a cloud provider’s network. On a WordPress site with offloaded media, that is mostly images and files downloaded by visitors.

Does uploading media to a bucket cost egress?

No. Uploads are ingress, which is free with all the providers in this guide. Egress applies when files are downloaded from the bucket.

Is Cloudflare R2 completely free to serve from?

R2 charges no egress fees, but you still pay for storage above the free 10 GB and for operations above the monthly free allowances. For most WordPress sites those costs are small.

How does Backblaze B2’s free egress work?

B2 includes free egress up to three times your average monthly stored data, then charges $0.01 per GB. Egress to partner CDNs such as Cloudflare, Fastly and bunny.net is free without that limit.

What happens if I exceed Wasabi’s egress policy?

Wasabi says a use case where monthly egress exceeds active storage is not a good fit for its free egress policy, and it may limit or suspend service for regular violations. It suits storage-heavy, low-traffic sites best.

Does a CDN remove egress fees?

It moves most of them from the storage provider to the CDN, which is often cheaper or free. The bucket still sends data for cache misses, and the CDN may charge for delivery.

Is S3 to CloudFront transfer free?

Yes. Amazon’s S3 pricing page lists data transferred out to CloudFront as free. You then pay CloudFront’s delivery pricing, which includes an always-free 1 TB per month tier.

How can I check how much egress my site uses?

If you already offload, your storage provider’s usage dashboard or bill shows it. If not, multiply monthly page views by the media weight of a typical page, then add large file downloads.

Conclusion

Egress fees can be the largest part of a media storage bill, and they grow with your traffic, not your library. Estimate what your WordPress site serves each month, compare providers using the worked examples above, and put a CDN in front of any bucket that charges per GB. Then pick an offload plugin that lets you switch providers as your traffic changes.

See OffloadX Plans →

Egress, storage and CDN prices were checked on the Amazon S3, Amazon CloudFront, Google Cloud Storage, Cloudflare R2, Wasabi, Backblaze B2, bunny.net and DigitalOcean pricing pages in September 2026. Worked examples are estimates using 1 TB = 1,000 GB and exclude taxes, storage and request charges unless stated. Prices change, so always check the provider’s current page before you commit.