AWS S3 pricing per GB is $0.023 per GB-month for Standard storage plus $0.09 per GB of internet egress after the first 100 GB; Cloudflare R2 costs $0.015 per GB-month with free egress; Vultr Standard is $18 a month with 1 TB of storage and 1 TB of egress included. Rates checked October 17, 2026.
This post contains affiliate links. If you purchase through our links, we may earn a commission at no extra cost to you.
AWS S3 vs R2 vs Vultr pricing per GB: quick comparison
Here’s the rate card for the standard storage class on each platform, taken from each provider’s official pricing page (AWS figures are US East, N. Virginia).
| Metric | AWS S3 (Standard) | Cloudflare R2 (Standard) | Vultr Object Storage (Standard) |
|---|---|---|---|
| Storage price | $0.023/GB-month (first 50 TB) | $0.015/GB-month | $18/mo base, includes 1,000 GB; $0.018/GB after |
| Egress price | $0.09/GB for the first 10 TB/mo, lower after that; 100 GB/mo free | $0.00/GB | Included 1,000 GB/mo, then $0.01/GB |
| Free tier | Up to $200 in AWS Free Tier credits for new customers (since July 15, 2025) | 10 GB-month storage + 1M Class A + 10M Class B ops/mo, ongoing | Paid tiers from $6/mo (Archival); Standard $18/mo |
| Request/operation fees | PUT/COPY/POST/LIST $0.005 per 1,000; GET $0.0004 per 1,000 | Class A $4.50/million; Class B $0.36/million | API requests not billed |
| Max object size | 50 TB | 5 TiB | No published maximum |
Prices last checked: October 17, 2026.
The line that decides most comparisons is egress. R2 charges nothing for it, Vultr bundles 1 TB a month into the base fee, and S3 bills every gigabyte past the 100 GB allowance. Storage rates matter too, but they separate the three by less than a cent per GB.
AWS S3 pricing per GB explained
S3 Standard storage in US East costs $0.023/GB-month for the first 50 TB, $0.022 for the next 450 TB, and $0.021 past 500 TB. Uploading data into S3 is free. Getting it back out to the internet is where the bill grows:
| Monthly egress to the internet | Rate per GB |
|---|---|
| First 10 TB | $0.09 |
| Next 40 TB | $0.085 |
| Next 100 TB | $0.07 |
| Over 150 TB | $0.05 |
Source: AWS S3 pricing page, US East (N. Virginia), checked October 17, 2026.
The first 100 GB of internet egress each month is free, but that allowance is shared across every AWS service and Region on the account (China and GovCloud excluded). If the same account also runs EC2 or CloudFront traffic, the S3 share of that 100 GB shrinks fast.
AWS doesn’t charge for transfer from S3 to CloudFront, which is why routing downloads through CloudFront is the standard advice. It doesn’t make delivery free, though: CloudFront bills its own data transfer separately, so the charge moves rather than disappears.
Requests are billed on top. PUT, COPY, POST and LIST cost $0.005 per 1,000 ($5.00 per million), and GET requests cost $0.0004 per 1,000 ($0.40 per million). For a site serving a few thousand files a day that’s pocket change; for millions of small writes it adds up.
The old S3-specific free tier no longer appears on the AWS pricing page. Since July 15, 2025, new AWS customers get up to $200 in Free Tier credits that can be spent on eligible services including S3. The free plan lasts six months, and the credits have to be used within 12 months of creating the account. That’s a general cloud credit, not a storage allowance, so a busy EC2 instance can eat it before S3 sees much of it.
Cloudflare R2 pricing: storage, Class A/B operations, egress
R2’s pricing model is the simplest of the three. Standard storage runs $0.015/GB-month and egress is $0.00/GB, with no condition attached to how the data is served. Cloudflare measures storage as the average of daily peak usage over a 30-day period, so a one-day spike counts as one day, not a full month.
Where R2 does charge is operations. Class A operations (writes and lists, such as PutObject, ListObjects, UploadPart and CompleteMultipartUpload) cost $4.50 per million. Class B operations (reads, such as GetObject and HeadObject) cost $0.36 per million. DeleteObject, DeleteBucket and AbortMultipartUpload are free. For most workloads these fees are small next to storage, but they matter if you upload millions of tiny files or use small multipart chunk sizes on large objects: each uploaded part is its own Class A operation.
The free tier covers 10 GB-month of storage, 1 million Class A and 10 million Class B operations every month, and it doesn’t expire. It applies to Standard storage only. Infrequent Access drops storage to $0.01/GB-month but doubles the operation fees ($9.00 per million Class A, $0.90 per million Class B), adds a $0.01/GB retrieval fee and a 30-day minimum storage duration, and Cloudflare’s own billing example lists the free tier as not applicable.
Vultr Object Storage pricing explained
Vultr Object Storage is an S3-compatible service hosted in 14 of Vultr’s 33 regions: Amsterdam, Atlanta, Bangalore, Chicago, Delhi NCR, London, Los Angeles, Milan, New Jersey, Seattle, Silicon Valley, Singapore, Sydney and Tokyo. Instead of pure per-GB billing, every tier is a flat monthly fee with storage and bandwidth bundled in.
| Tier | Base price/mo | Included | Extra storage | Performance |
|---|---|---|---|---|
| Archival | $6 | 1,000 GB archived + 100 GB unarchived + 1 TB bandwidth | $0.006/GB archived; $0.018/GB unarchived | Same rate limits as Standard |
| Standard | $18 | 1,000 GB storage + 1,000 GB outbound | $0.018/GB | 800 ops/s, 600 Mbps (HDD, SSD index) |
| Premium | $36 | 1,000 GB storage + 1,000 GB outbound | $0.036/GB | 1,000 ops/s, 800 Mbps (HDD, SSD index) |
| Performance | $50 | 1,000 GB storage + 1,000 GB outbound | $0.050/GB | 4,000 ops/s, 1 Gbps (NVMe) |
| Accelerated | $100 | 1,000 GB storage + 1,000 GB outbound | $0.100/GB | 10,000 ops/s, 5 Gbps (NVMe) |
Source: Vultr Object Storage product page and limits documentation, checked October 17, 2026. Extra outbound transfer is $0.01/GB on every tier.
The two NVMe tiers are where Vultr competes on speed rather than price: Accelerated is rated at 12.5 times Standard’s operations per second. Most backup and media workloads won’t need either, and Standard is the tier the cost examples below use.
Archival needs a note of its own. Archived objects show as 0 bytes and have to be restored before they can be read, and versioning and Archival don’t mix: a bucket with versioning enabled is permanently ineligible for Archival.
The current lineup is newer than many write-ups suggest. Vultr relaunched Object Storage on March 3, 2025 with four tiers (Standard, Premium, Performance and Accelerated), deprecated the legacy product and moved existing customers to Standard automatically. Archival arrived on May 7, 2026 at $6 per TB a month. Some older third-party comparison sites also still quote a 250 GB egress allowance, while Vultr’s product page lists 1,000 GB.
Two things work in Vultr’s favor regardless of the headline rate: inbound transfer is free, and API requests aren’t billed, unlike R2’s Class A/B model or S3’s per-request pricing. Durability is rated at 11 nines (99.999999999%). If you’re already running compute on Vultr, put the bucket in the same region as your instances so uploads and reads stay close to the app. Current rates are on Vultr’s own Object Storage pricing page.
Real-world cost examples: what you’d actually pay
Rate cards are hard to compare in the abstract, so here’s what each provider costs at two scales. Assumptions: 1 TB = 1,000 GB, S3 in US East with its 100 GB free egress counted once, R2’s 10 GB free storage applied, Vultr on the Standard tier, and request/operation fees left out.
Scale 1: small indie project (100 GB stored, 500 GB egress/month):
| Provider | Monthly cost | How it adds up |
|---|---|---|
| Cloudflare R2 | $1.35 | (100 − 10 free) GB × $0.015; egress free |
| Vultr Standard | $18.00 | Storage and egress both fit inside the included 1 TB / 1 TB |
| AWS S3 | $38.30 | 100 GB × $0.023 = $2.30 storage + (500 − 100 free) GB × $0.09 = $36.00 egress |
Scale 2: larger workload (10 TB stored, 5 TB egress/month):
| Provider | Monthly cost | How it adds up |
|---|---|---|
| Cloudflare R2 | $149.85 | (10,000 − 10 free) GB × $0.015; egress free |
| Vultr Standard | $220.00 | $18 base + 9,000 GB extra storage × $0.018 ($162) + 4,000 GB extra egress × $0.01 ($40) |
| AWS S3 | $671.00 | 10,000 GB × $0.023 = $230 storage + (5,000 − 100 free) GB × $0.09 = $441 egress |
Prices last checked: October 17, 2026.
The ranking is the same at both scales: R2, then Vultr, then S3. At 100 GB, Vultr’s flat $18 costs more than R2 but less than half of S3’s bill, because the bundled terabyte of egress absorbs the 500 GB that S3 charges for. At 10 TB, Vultr’s overage on 9,000 GB of extra storage pushes it to $220, about $70 above R2, while S3’s egress alone ($441) is nearly three times R2’s whole bill. Egress is the variable to watch: if downloads double, S3’s bill grows by $0.09 per extra GB, while R2’s only moves by its Class B read fees.
Request fees, left out above, flip the picture for write-heavy workloads. Uploading 10 million small objects in a month costs $50 in PUT requests on S3 (10,000,000 ÷ 1,000 × $0.005) and $40.50 in Class A operations on R2 ((10 million − 1 million free) × $4.50 per million). On Vultr the same uploads add nothing, because API requests aren’t billed.
Cold backups are the other case where the default tiers mislead. Keeping 5 TB of archived backups on Vultr’s Archival tier costs $30 a month ($6 + 4,000 GB × $0.006), against $90 on Vultr Standard ($18 + 4,000 GB × $0.018), $50 on R2 Infrequent Access (5,000 GB × $0.01, before retrieval fees) and $74.85 on R2 Standard ((5,000 − 10) GB × $0.015). The catch is that archived objects must be restored before they can be read.
Calculate your exact object storage cost
The two examples use round numbers, and your own storage-to-egress ratio decides which provider wins. We built a free Object Storage Cost Calculator for that: enter GB stored and GB of egress per month, and it shows S3, R2 and Vultr side by side.
S3 compatibility and object size limits
All three expose an S3-compatible API, so tools like the AWS CLI, rclone, s3cmd and boto3 generally work against any of them with an endpoint change. Object size rarely decides the choice anymore. S3 raised its maximum object size from 5 TB to 50 TB on December 2, 2025, though a single PUT is still capped at 5 GB and anything bigger needs multipart upload. R2 allows objects up to 5 TiB: 5 GiB per single-part upload and 4.995 TiB via multipart (up to 10,000 parts). Vultr’s documentation doesn’t publish a maximum object size.
Feature depth differs more than size. Vultr’s S3 compatibility matrix lists support for bucket lifecycle rules, ACLs, object versioning, CORS, multipart uploads, object tagging, bucket policies and pre-signed URLs. It does not support bucket replication, event notifications, access logging, inventory or static website hosting. One quirk to know before scripting against it: Vultr gzip-compresses downloads, so the Content-Length header may not match the file size. Disabling gzip on the request fixes it.
Pick R2 for egress-heavy workloads, Vultr for colocated compute
- Choose Cloudflare R2 if egress is a meaningful part of your workload: media delivery, a CDN origin, public API responses or SaaS file downloads. Zero egress plus a free 10 GB tier that never expires makes it the cheapest of the three in both examples above.
- Choose AWS S3 if you’re already built around AWS (IAM, Lambda, CloudFront) or need objects up to 50 TB. AWS S3 pricing per GB on egress is the highest here at $0.09 for the first 10 TB, so pick it for the ecosystem, not the bill.
- Choose Vultr Object Storage if your app already runs on Vultr compute, you want one predictable monthly fee, and your usage roughly fits inside the bundled 1 TB of storage and 1 TB of egress. Skip it if you’ll store or serve many terabytes a month, where overage ($0.018/GB storage, $0.01/GB egress) lets R2 pull ahead, or if you need bucket replication or event notifications, which Vultr doesn’t support.

