Your Cloud Storage Provider Is Overcharging You. Here Is the Proof.
Let's start with the uncomfortable truth. The price you see on a cloud storage pricing page is almost never the price you actually pay. Every single provider structures their pricing to look cheaper than it is. They highlight the per-GB storage rate and bury the fees that actually drive your bill: egress charges, API call costs, minimum retention penalties, and retrieval fees.
We have audited cloud storage costs for dozens of companies, and the pattern is always the same. Teams pick a provider based on the storage rate, get surprised by the bill three months later, and then scramble to figure out what went wrong.
So we decided to do the math that nobody else is publishing. We took six of the most popular cloud storage providers in 2026, modeled real-world workload scenarios at three different scale points, and calculated what you will actually pay per month. Not the marketing price. The real price, including every fee that matters.
The results are going to change how you think about cloud storage.
The Pricing Page vs Reality: Why Per-GB Rates Are Misleading
Before we look at the comparison tables, you need to understand why the headline storage rate is the least important number on any pricing page.
Here is a quick example. Wasabi advertises storage at $0.0059/GB. AWS S3 Standard charges $0.023/GB. Based on that alone, Wasabi looks 4x cheaper.
But now add a real workload. Say you store 10TB and your application reads 50% of that data per month across regions. On Wasabi, the storage is $59/month with zero egress. On AWS S3, the storage is $230/month plus $460 in egress charges. The real gap is not 4x. It is nearly 12x.
Now flip the scenario. You store 10TB but rarely access it, and you delete 20% of your data within 60 days. Wasabi's 90-day minimum retention policy means you pay for the full 90 days even on deleted data. Suddenly, Wasabi's effective cost is higher than you expected.
This is why you cannot compare cloud storage on a single number. You need to model your specific workload. Let's do that now.
The Complete 2026 Cloud Storage Pricing Breakdown
Here is every rate that matters, in one place. These are the published rates as of early 2026. All prices are in USD.
Storage and Core Fees
| Provider | Storage ($/GB/mo) | Egress ($/GB) | PUT Requests (per 1K) | GET Requests (per 1K) | Minimum Retention | Free Egress Allowance |
|---|---|---|---|---|---|---|
| AWS S3 Standard | $0.023 | $0.09 | $0.005 | $0.0004 | None | 100GB/month |
| AWS S3 IA | $0.0125 | $0.09 | $0.01 | $0.001 | 30 days | 100GB/month |
| Cloudflare R2 | $0.015 | $0.00 | $0.0045 | $0.00036 | None | Unlimited |
| Google Cloud Storage Standard | $0.020 | $0.12 | $0.005 | $0.0004 | None | Free tier varies |
| GCS Nearline | $0.010 | $0.12 | $0.01 | $0.001 | 30 days | None |
| Azure Blob Hot | $0.0184 | $0.087 | $0.0065 | $0.0004 | None | 5GB free |
| Azure Blob Cool | $0.01 | $0.087 | $0.01 | $0.001 | 30 days | None |
| Wasabi | $0.0059 | $0.00 | Included | Included | 90 days | Unlimited |
| Bunny Storage | $0.01 | $0.01 | Included | Included | None | Varies by plan |
| Backblaze B2 | $0.006 | $0.01 | $0.004 | Free | None | 3x storage/month |
Looking at this table, Wasabi and Backblaze look like the clear winners on price. But the table does not tell the full story. For that, we need to model real workloads.
Real-World Cost Modeling: What You Actually Pay
We modeled three scenarios that represent the most common cloud storage patterns we see across SaaS, AI, and media companies.
Scenario 1: 1TB Stored, Low Access (Backup/Archive)
Assume: 1TB stored, 50GB egress/month, 100K GET requests, 10K PUT requests, no data deleted within 90 days.
| Provider | Storage | Egress | API Costs | Total Monthly | Annual |
|---|---|---|---|---|---|
| Wasabi | $5.90 | $0.00 | $0.00 | $5.90 | $70.80 |
| Backblaze B2 | $6.00 | $0.00* | $0.40 | $6.40 | $76.80 |
| Bunny Storage | $10.00 | $0.50 | $0.00 | $10.50 | $126.00 |
| Cloudflare R2 | $15.00 | $0.00 | $0.08 | $15.08 | $180.96 |
| Azure Blob Cool | $10.00 | $4.35 | $0.20 | $14.55 | $174.60 |
| GCS Nearline | $10.00 | $6.00 | $0.15 | $16.15 | $193.80 |
| Azure Blob Hot | $18.40 | $4.35 | $0.11 | $22.86 | $274.32 |
| AWS S3 Standard | $23.00 | $0.00** | $0.09 | $23.09 | $277.08 |
| GCS Standard | $20.00 | $6.00 | $0.09 | $26.09 | $313.08 |
Backblaze B2 includes free egress up to 3x storage (3TB for 1TB stored), so 50GB is covered. AWS free tier covers 100GB egress/month, so 50GB is covered.
The takeaway: For low-access backup workloads, Wasabi is the clear winner at $5.90/month. But remember the 90-day minimum retention. If you frequently delete or overwrite data within 90 days, Wasabi penalizes you. Backblaze B2 is the best alternative with generous free egress and no retention requirement.
Scenario 2: 10TB Stored, Moderate Access (SaaS Application)
Assume: 10TB stored, 2TB egress/month, 5M GET requests, 500K PUT requests, some data churn.
| Provider | Storage | Egress | API Costs | Total Monthly | Annual |
|---|---|---|---|---|---|
| Wasabi | $59.00 | $0.00 | $0.00 | $59.00 | $708.00 |
| Backblaze B2 | $60.00 | $0.00* | $2.00 | $62.00 | $744.00 |
| Bunny Storage | $100.00 | $20.00 | $0.00 | $120.00 | $1,440.00 |
| Cloudflare R2 | $150.00 | $0.00 | $4.07 | $154.07 | $1,848.84 |
| Azure Blob Hot | $184.00 | $174.00 | $5.25 | $363.25 | $4,359.00 |
| AWS S3 Standard | $230.00 | $171.00 | $4.50 | $405.50 | $4,866.00 |
| GCS Standard | $200.00 | $240.00 | $4.50 | $444.50 | $5,334.00 |
Backblaze B2 free egress covers up to 30TB/month (3x 10TB stored), so 2TB is covered.
The takeaway: At moderate scale with real egress, the gap explodes. AWS S3 costs nearly 7x what Wasabi costs for the same workload. Cloudflare R2 is 2.6x more than Wasabi on storage, but the zero egress makes it excellent for workloads where egress is the dominant cost driver. If your egress were 5TB instead of 2TB, R2 would overtake Wasabi as the cheapest option because Wasabi has an unpublished "reasonable use" egress policy that kicks in when egress consistently exceeds storage.
Scenario 3: 100TB Stored, Heavy Access (AI/Media Platform)
Assume: 100TB stored, 30TB egress/month, 50M GET requests, 5M PUT requests, heavy churn in hot data.
| Provider | Storage | Egress | API Costs | Total Monthly | Annual |
|---|---|---|---|---|---|
| Wasabi | $590.00 | $0.00 | $0.00 | $590.00 | $7,080.00 |
| Backblaze B2 | $600.00 | $0.00* | $20.00 | $620.00 | $7,440.00 |
| Cloudflare R2 | $1,500.00 | $0.00 | $40.70 | $1,540.70 | $18,488.40 |
| Bunny Storage | $1,000.00 | $300.00 | $0.00 | $1,300.00 | $15,600.00 |
| Azure Blob Hot | $1,840.00 | $2,610.00 | $52.50 | $4,502.50 | $54,030.00 |
| AWS S3 Standard | $2,300.00 | $2,610.00 | $45.00 | $4,955.00 | $59,460.00 |
| GCS Standard | $2,000.00 | $3,600.00 | $45.00 | $5,645.00 | $67,740.00 |
At 100TB stored, B2 free egress is 300TB/month, so 30TB is well within the free tier.
The takeaway: At 100TB with heavy egress, GCS Standard costs $67,740/year while Wasabi costs $7,080/year. That is a $60,660 annual difference for the same data. Even R2 at $18,488/year is nearly 4x cheaper than AWS S3. If you are running a media platform or AI training pipeline at this scale on a hyperscaler without a storage strategy, you are effectively writing a check for $50K+ per year in avoidable costs.
The 8 Hidden Pricing Traps That Blow Up Cloud Storage Budgets
Trap 1: Wasabi's 90-Day Minimum Retention
Wasabi's headline rate is incredible, but the 90-day minimum retention policy means you pay for at least 90 days of storage on every object, even if you delete it after one day. For workloads with high data churn (temporary files, processing pipelines, short-lived caches), this can increase effective costs by 30% to 200% depending on your deletion patterns.
How to avoid it: Use Wasabi for data you know will live for 90+ days (backups, archives, media libraries). For high-churn workloads, use Cloudflare R2 or Backblaze B2 which have no minimum retention.
Trap 2: AWS S3 Request Pricing at Scale
AWS charges $0.005 per 1,000 PUT requests and $0.0004 per 1,000 GET requests. Sounds negligible. But if your application makes 100M GET requests per month (common for API-serving applications), that is $40/month just in GET request fees. PUT-heavy workloads (logging, analytics ingestion) can easily hit $500+/month in request fees alone.
How to avoid it: Batch small objects into larger ones where possible. Use S3 Express One Zone for latency-sensitive, high-request workloads. Or move request-heavy workloads to a provider that includes requests in the base price (Wasabi, Bunny).
Trap 3: GCP Egress Is the Most Expensive in the Industry
Google Cloud Storage charges $0.12/GB for egress to the internet. That is 33% more than AWS ($0.09) and 38% more than Azure ($0.087). For a 10TB/month egress workload, GCP costs $1,200/month in egress alone while Cloudflare R2 charges zero.
Most teams discover this after they have already built their architecture on GCS. Moving to a multi-storage strategy after the fact is possible but requires engineering work.
How to avoid it: If your workload involves significant egress, model the egress costs before choosing GCP. Consider using GCP for compute but storing egress-heavy data on R2 or B2 with S3-compatible API access.
Trap 4: Azure's Per-Operation Charges on Cool and Archive Tiers
Azure Blob Cool tier storage is cheap ($0.01/GB), but read operations cost $0.01 per 10,000 requests. That is 25x more than Hot tier read pricing. If you move data to Cool tier and then access it more than expected, the operation charges can exceed what you saved on storage.
Azure Archive tier is even more extreme: $0.02/GB retrieval fee plus $5.00 per 10,000 high-priority read operations. Retrieving 1TB from Archive tier costs $20 in retrieval fees plus operation charges. If you need that data urgently, high-priority retrieval adds another $50.
How to avoid it: Only use Azure Cool for data accessed less than once per month. Only use Archive for data you genuinely do not expect to access for years. Monitor access patterns monthly and promote frequently-accessed data back to Hot tier before the operation costs exceed the storage savings.
Trap 5: Cloudflare R2 Class B Operations at Scale
R2's zero egress is incredible, but Class B operations (reads) cost $0.36 per million. For most workloads this is insignificant. But for high-frequency small-object workloads (serving millions of thumbnails, API responses, or configuration files), the operation costs can add up. At 100M reads/month, that is $36/month. At 1B reads/month, it is $360/month.
How to avoid it: For high-frequency read workloads, put Cloudflare CDN in front of R2. Cached reads do not count as R2 operations. This is effectively unlimited free reads for cacheable content.
Trap 6: Cross-Region Replication Costs on Hyperscalers
All three hyperscalers charge for cross-region replication. On AWS, replicating 10TB to another region costs $0.02/GB for data transfer ($200) plus the storage cost in the destination region. With ongoing changes, the replication transfer costs can exceed $100/month for a moderately active 10TB bucket.
Most teams enable cross-region replication "for DR" and then never think about it again. We routinely find replication policies that were set up for a compliance requirement that no longer exists, or that replicate to three regions when one backup region would suffice.
How to avoid it: Audit your replication policies quarterly. Ask: "Do we still need this replication? Could we achieve the same DR guarantee with a single backup region instead of multiple?" Eliminating one unnecessary replication target on a 10TB bucket saves $200 to $500/month.
Trap 7: Backblaze B2's "Free Egress" Fine Print
B2's free egress is generous (3x your stored data per month), but it only applies to data downloaded via the B2 API or via Cloudflare CDN through the Bandwidth Alliance. If you download data through other means (direct HTTPS, other CDN providers), standard egress rates apply.
Also, if you store 10TB but your egress exceeds 30TB/month, the overage is $0.01/GB. Not expensive, but not zero either. And if you are using B2 as a Cloudflare R2 alternative, the free egress through Cloudflare CDN requires specific configuration that is not automatic.
How to avoid it: If you are counting on B2's free egress, make sure your access pattern goes through a supported path (B2 native API or Cloudflare CDN). For anything else, budget for the $0.01/GB overage rate.
Trap 8: The Unpublished Wasabi "Reasonable Use" Egress Policy
Wasabi advertises "free egress," but their terms of service include a clause that egress should not consistently exceed your total storage volume. If you store 1TB and regularly download 5TB/month, Wasabi reserves the right to throttle or surcharge your account.
In practice, this is rarely enforced for moderate imbalances. But for architectures where egress dramatically exceeds storage (CDN origin serving, data distribution platforms), this is a real risk that could disrupt your service.
How to avoid it: For egress-heavy workloads where downloads significantly exceed storage, use Cloudflare R2 instead. R2 has genuinely unlimited free egress with no reasonable use caveats.
The Decision Framework: Which Provider for Which Workload
Stop picking one provider for everything. The smart approach is matching providers to workload patterns:
Backup and Archive (Low Access, Long Retention)
Best choice: Wasabi ($0.0059/GB, zero egress) Why: The lowest per-GB rate with no egress charges. The 90-day retention is irrelevant for backup data that lives for months or years. Runner-up: Backblaze B2 at $0.006/GB if you need more flexibility on retention.
CDN Origin and Media Serving (High Egress, Moderate Storage)
Best choice: Cloudflare R2 ($0.015/GB, zero egress) Why: Egress is the dominant cost for CDN workloads, and R2 is the only provider with genuinely unlimited free egress and no fair-use caveats. Combine with Cloudflare CDN for cached reads at zero additional cost.
AI Training Data (Large Datasets, Compute-Adjacent)
Best choice: Same provider as your compute (usually AWS S3 or GCS) Why: Keeping training data in the same region as your GPU instances eliminates egress entirely and minimizes latency. The higher per-GB rate is offset by zero data transfer costs during training runs, which move massive amounts of data.
SaaS Application Data (Mixed Access, Moderate Egress)
Best choice: Cloudflare R2 or Backblaze B2 depending on volume Why: SaaS data has unpredictable access patterns. Providers with simple, egress-free pricing eliminate billing surprises. R2 for larger scale, B2 for smaller workloads where the 3x free egress is sufficient.
Multi-Region High Availability (Compliance, Financial Services)
Best choice: AWS S3 or Azure Blob with cross-region replication Why: For workloads that require specific geographic data residency, audit trails, and compliance certifications, hyperscalers are the only real option. The premium is the cost of compliance. Optimize with FinOps practices to control the spend.
Development and Testing
Best choice: Bunny Storage ($0.01/GB) or Cloudflare R2 Why: Dev/test workloads have unpredictable access patterns and frequent data churn. You need cheap storage with no retention penalties and no surprise egress bills. Bunny's flat $0.01/GB with minimal egress charges is ideal for environments that get created and destroyed frequently.
Step-by-Step: How to Optimize Your Cloud Storage Costs Right Now
Step 1: Map Everything (Week 1)
Create a complete inventory of every storage bucket, container, and volume across all providers and accounts. For each one, document:
- Total size and growth rate
- Monthly egress volume
- API request volume (GET, PUT, LIST, DELETE)
- Access pattern (how much of the data is actually accessed each month)
- Data churn rate (how much is created and deleted within 90 days)
- Current storage tier and whether it matches the actual access pattern
Most teams discover 20% to 30% more storage resources than they knew about. That is not unusual. It is the norm.
Step 2: Identify the Mismatches (Week 1-2)
Compare each bucket's access pattern against its current storage tier and provider. The most common mismatches we see:
- Hot data on archive tiers (costing a fortune in retrieval fees)
- Cold data on standard tiers (paying 4x to 10x more than necessary)
- Egress-heavy workloads on AWS or GCP (paying $0.09 to $0.12/GB when R2 or B2 would be free)
- High-churn data on Wasabi (paying the 90-day minimum on data that lives for days)
Step 3: Implement Quick Wins (Week 2-3)
These changes deliver immediate savings with minimal risk:
- Enable S3 Intelligent-Tiering on AWS buckets with unpredictable access patterns
- Delete orphaned snapshots, old backups, and abandoned test buckets
- Move egress-heavy workloads to R2 or B2 (S3-compatible API makes this straightforward)
- Implement lifecycle policies to transition cold data to cheaper tiers automatically
- Clean up incomplete multipart uploads (a surprising source of hidden storage costs)
Step 4: Restructure for Long-Term Savings (Week 3-6)
For larger savings that require architectural changes:
- Split your storage across providers by workload type (compute-adjacent data on hyperscalers, everything else on R2/B2/Wasabi)
- Implement a CDN in front of your object storage to reduce origin reads
- Set up automated cost monitoring with alerts for egress spikes and unexpected growth
- Review cross-region replication policies and eliminate unnecessary replicas
Step 5: Build FinOps Governance (Week 6-8)
Make the savings permanent:
- Tag every storage resource with team, application, and environment
- Build team-level cost dashboards showing storage spend breakdown
- Set up anomaly detection for unexpected cost increases
- Establish a quarterly storage cost review cadence
- Document storage provisioning guidelines so new buckets get created on the right provider and tier from day one
Cloud Storage Cost Optimization Checklist
| Category | Task | Status |
|---|---|---|
| Audit | Complete inventory of all storage across all providers | [ ] |
| Audit | Document egress, API requests, and access patterns per bucket | [ ] |
| Audit | Calculate true TCO including all fees (not just $/GB) | [ ] |
| Quick Wins | Delete orphaned snapshots and abandoned test data | [ ] |
| Quick Wins | Enable intelligent tiering on unpredictable-access buckets | [ ] |
| Quick Wins | Clean up incomplete multipart uploads | [ ] |
| Quick Wins | Move egress-heavy workloads to R2 or B2 | [ ] |
| Architecture | Match each workload to the optimal provider | [ ] |
| Architecture | Implement lifecycle policies for automatic tier transitions | [ ] |
| Architecture | Review and reduce cross-region replication | [ ] |
| Architecture | Add CDN caching in front of high-read object storage | [ ] |
| FinOps | Implement resource tagging on all storage | [ ] |
| FinOps | Deploy cost anomaly detection and budget alerts | [ ] |
| FinOps | Establish quarterly storage cost review process | [ ] |
What to Do Next
If you are spending more than $500/month on cloud storage, there is almost certainly money being wasted somewhere. The math in this guide gives you the tools to find it.
Start with the audit. Just mapping your storage resources and calculating true TCO (including egress and API costs, not just the per-GB rate) will probably reveal savings opportunities worth 20% to 40% of your current spend.
If you want a team to run this analysis for you and implement the optimizations, our Cloud Cost Optimization and FinOps service covers storage optimization as part of every engagement. We handle the audit, the migration, and the ongoing FinOps governance so your team stays focused on building product.
For teams planning a broader cloud migration or infrastructure modernization, storage strategy should be part of the architecture conversation from day one. Getting storage right at the start is dramatically cheaper than fixing it later.
The difference between the cheapest and most expensive options in this comparison is 10x at moderate scale. At 100TB, it is the difference between $7,000 and $67,000 per year. That is not a rounding error. That is a senior engineer's salary being spent on storage fees that do not need to exist.