AWS S3 Egress Fees Calculator:
How Much You’re REALLY Paying Per Visitor
S3 storage costs look cheap on paper. Data transfer costs are what quietly scale with your traffic. This guide breaks down the real math and shows you what you are actually paying per visitor, per month.
Updated 2026
Pricing & Cost Breakdown
Amazon S3 is one of the most widely recommended solutions for WordPress media offloading. The pitch is straightforward: move your media library to S3, pay a few cents per gigabyte of storage, and get your files off your hosting server. It sounds like the obvious choice, especially when the storage price looks so low on the AWS pricing page.
The storage price is not the problem. The egress fee is. AWS charges for every gigabyte of data transferred out of S3 to the internet. Every time a visitor loads a page on your WordPress site and their browser downloads your images from S3, that download costs you money. Not the storage. The delivery. And that cost scales directly with your traffic in a way that storage costs never do.
This guide walks through the actual math of S3 egress fees at different traffic levels, shows you what the real monthly cost looks like for a typical WordPress site or WooCommerce store, and explains why a flat-rate FTP alternative fundamentally changes the cost structure of WordPress media delivery.
How AWS S3 egress pricing actually works
AWS breaks its S3 pricing into several components. Storage is charged per gigabyte per month. API requests are charged per thousand operations. And data transfer out, which AWS calls egress, is charged per gigabyte transferred from S3 to the internet. The first 100GB per month is free. After that, the price is approximately $0.09 per GB for the first 10TB transferred, dropping slightly at higher volume tiers.
That $0.09 per GB number seems small. To understand why it is not, you need to think about it in terms of page loads rather than gigabytes. Every time a visitor loads a page with images, their browser downloads those images from S3. Each image transfer counts toward your egress total. And unlike storage costs, which are fixed and predictable, egress costs are variable and scale linearly with every additional visitor.
Amazon’s data centers pay real costs to move data across internet backbones. Egress fees pass some of those costs to customers. This is not unique to AWS. Google Cloud and Azure have similar structures. What makes it matter for WordPress sites is that media files are delivered on every page load by every visitor, which makes egress one of the most frequent and highest-volume cost triggers in the entire AWS billing model.
The real math: what you pay at different traffic levels
Let us work through the numbers with realistic assumptions. A typical WordPress blog or content site serves images on every page. A reasonable estimate for a content site is that each page view involves downloading between 300KB and 800KB of images. We will use 500KB as our baseline, which is conservative for any site with real photography or product images. For a WooCommerce store with product galleries, the per-page image payload is typically higher, often 800KB to 1.5MB per page view.
Looking at this table, the S3 numbers do not look catastrophic at moderate traffic. But this is the conservative estimate with 500KB per page view. WooCommerce stores with product galleries, zoom images, and multiple product photos per page routinely deliver 1.5MB to 3MB of image data per page view. At 1.5MB per page view and 100,000 monthly visitors, your S3 egress bill alone reaches $13 to $20 a month, before any storage or API request charges.
At 300,000 monthly visitors with a 1.5MB image payload, you are looking at $38 to $58 a month in egress alone. That is before you add storage fees, GET request fees, and any CloudFront distribution costs if you are using AWS’s own CDN in front of S3 (which adds its own data transfer charges). The real monthly AWS bill for a media-heavy site at this traffic level can easily reach $60 to $90 once every cost component is counted.
The hidden costs that do not appear in the headline pricing
Egress is the most significant variable cost, but it is not the only one. Understanding the full picture requires looking at several other AWS billing components that are easy to miss when comparing prices on a calculator.
Every time a visitor’s browser requests an image file from S3, that is a GET request. AWS charges $0.0004 per 1,000 GET requests. This sounds trivially small. A site with 50,000 monthly visitors loading 20 images per page generates 1,000,000 GET requests per month, which costs $0.40. Not huge, but it is real money that adds to the bill month after month and that is often overlooked in cost estimates.
The $0.09 per GB egress price applies to US East. S3 regions in Europe, Asia-Pacific, and South America have higher egress prices, ranging from $0.085 to $0.16 per GB. If your S3 bucket is in a region closer to your servers but not closest to your visitors, you pay higher egress rates than the baseline calculator suggests. Choosing the right region is not just a latency decision. It is a cost decision.
If your WordPress hosting server and your S3 bucket are in different AWS regions, data transferred between them also incurs charges. This is relevant when your WordPress host is on a VPS in one region and you created your S3 bucket in a different region for latency reasons. AWS charges $0.02 per GB for data transferred between regions, which adds up during bulk media syncs and WP Offload Media plugin operations.
Using S3 with WordPress requires configuring IAM roles, bucket policies, CORS settings, and a compatible plugin. The premium plugins that handle this well (WP Offload Media being the most popular) charge $99 to $299 per year depending on the license tier. That annual plugin cost is a fixed overhead that applies regardless of how little traffic you have. It is worth factoring into the total cost of the S3 approach, especially for smaller sites.
The WooCommerce multiplier: why stores pay more
For a WooCommerce store, the egress calculation changes significantly because product pages typically deliver more image data than content pages. A product page with a main image, four gallery images, two related product thumbnails, and a category banner easily delivers 1.5MB to 2.5MB of image data per page view. A customer who browses five products before purchasing generates 7.5MB to 12.5MB of image egress in a single session.
Consider a WooCommerce store with 40,000 monthly visitors. Average session involves viewing 3 product pages with 1.8MB of image data per page. Total monthly image egress: 40,000 visits × 3 pages × 1.8MB = 216GB. At $0.09 per GB after the 100GB free tier: 116GB × $0.09 = $10.44 per month in egress alone. Add storage ($0.023 per GB per month for a 20GB library = $0.46), GET requests (~$0.60), and a pro plugin license amortized ($16/mo). Total monthly S3 cost: roughly $28. A comparable FTP storage plan with CDN delivery costs $4 to $8/mo total.
The variable cost problem is more dangerous than the average cost
Monthly averages are manageable. Spikes are not. The structural problem with S3 egress fees is not what you pay in a typical month. It is what you pay when something exceptional happens: a product goes viral on social media, a major publication links to your store, or you run a Black Friday sale that drives three times your normal traffic.
In a spike month with three times normal traffic, your S3 egress bill triples. If you are a store that normally pays $10 a month in egress and you have a viral moment, that month could generate $30 to $50 in egress charges. If your viral moment involves a high-image-payload page, the bill can be higher still. Unlike hosting plans that have fixed caps, S3 egress has no ceiling. It scales with every byte of image data delivered to every visitor.
According to AWS’s official S3 pricing page, there are no monthly caps on data transfer charges. You are billed for whatever you use. This is a predictable billing model for Amazon. It is an unpredictable cost model for you. A flat-rate FTP alternative costs the same whether you had 10,000 visitors or 100,000.

How FTP changes the cost model entirely
The fundamental difference between S3 and an FTP-based media storage approach is the pricing model, not the technology. S3 charges you per gigabyte of data transferred. FTP storage providers typically charge a flat monthly fee for a storage allocation. Once you have paid for your storage tier, there is no incremental charge for how many times those files are accessed.
When you pair FTP storage with a CDN for delivery, the CDN handles the actual serving of files to visitors. CDN providers like BunnyCDN, Cloudflare, and others offer either very low per-GB delivery pricing or flat-rate plans. BunnyCDN, for example, charges roughly $0.01 per GB for delivery from North American and European edge nodes, approximately ten times less per gigabyte than S3 egress. Cloudflare’s CDN in front of compatible storage has zero egress fees.
The result is a cost structure where growth in traffic does not proportionally grow your media delivery cost. You pay for storage based on how many files you have. You pay for CDN delivery at a fraction of S3 egress rates. And you never receive a surprise invoice because a campaign or a piece of content performed well.

When does S3 actually make sense?
It is worth being balanced here. S3 is not the wrong answer for every use case. There are specific situations where its advantages outweigh the egress cost structure.
S3 makes sense when you are already heavily invested in the AWS ecosystem and your team has the technical capacity to manage IAM policies, bucket configurations, and CloudFront distributions correctly. It makes sense for enterprise-scale applications where the operational benefits of deep AWS integration justify the cost and complexity. It makes sense when your media files are accessed infrequently, reducing egress to a small fraction of storage costs. And it makes sense in regulated industries where AWS’s compliance certifications and audit trails are a requirement rather than a nice-to-have.
What S3 does not make sense for is the typical WordPress or WooCommerce site owner who wants to offload their media library, reduce hosting pressure, and serve images faster without building and maintaining a cloud infrastructure stack. For that use case, the complexity is high, the plugin cost is real, and the egress fees grow with your success rather than staying flat.
The setup that avoids the egress trap entirely
The practical alternative to S3 for WordPress sites is a setup that combines a dedicated FTP or SFTP storage server with a CDN for delivery. The FTP server stores your files. The CDN delivers them. Your WordPress plugin handles the bridge between your site and this infrastructure by syncing files to the FTP destination and rewriting image URLs on output to point at your CDN.
This is what a plugin like WP FTP Media by NEXU WP is designed to enable. You configure your FTP or SFTP connection, set a CDN base URL, run the bulk sync of your existing library, and from that point forward, new uploads go to your FTP server automatically and visitors receive images from your CDN. The plugin does not touch your database. Your WordPress admin looks and works exactly as before.

The cost calculation changes entirely when you switch to this model. Instead of paying $0.09 per GB of egress that scales with every visitor, you pay a flat monthly fee for storage that stays the same regardless of traffic. A viral month is a good month, not an expensive one. Growth becomes something to celebrate rather than something to budget for nervously.
If your current setup involves S3 or you are evaluating S3 for the first time, running the egress math for your actual traffic and image payload is worth doing before you commit. The numbers at low traffic look fine. The numbers as you scale are where the S3 model starts to diverge from what a flat-rate FTP setup would cost. That divergence only grows as your site grows.
Stop paying per visitor for media you already paid to store
WP FTP Media offloads your WordPress media to flat-rate FTP storage and serves it via any CDN, replacing the unpredictable S3 egress model with a fixed monthly cost that does not grow with your traffic.
This calculator really opened my eyes and not in a good way. at 50K visitors, the egress fees alone nearly tripled what I'd budgeted for media delivery. zero warning, just costs climbing with every page load.
Got this as a gift for a friend who's a musician running a small WooCommerce store for their merch. the calculator was kinda wild had no idea those S3 egress fees stacked up so fast once traffic actually starts rolling in. the free 100GB is cool and all, but after that, it's easy to see how costs could get out of hand real quick if you're not paying attention. definitely helpful to finally see the real numbers behind what they call "cheap" cloud storage. fingers crossed this keeps them from getting blindsided later!
I picked this up for my sister who's running a tiny WooCommerce store, and the side by side cost breakdown of S3 vs. fTP was a total lifesaver. She had zero clue those egress fees could sneak up on her like that during busy seasons this literally saved her from a bill shock meltdown. one tiny thing: it'd be great if the guide spelled out exactly when S3 ends up being the cheaper option (like for those super low traffic sites where you're barely moving data). But honestly?