Is S3 really free to start? The free tier and what comes after
S3 has a genuine free tier for the first year, but requests, data transfer out, and storage class choices shape the bill the moment you outgrow it. Here is what the free tier covers and what actually drives S3 cost.
Quick answer
S3 is free to start within limits: the AWS free tier covers about 5 GB of standard storage, a modest number of GET and PUT requests, and a small amount of data transfer out per month, for the first twelve months. Beyond that, S3 bills on three axes: storage per GB per month (varies by storage class), requests per thousand (GET, PUT, LIST priced differently), and data transfer out to the internet per GB. For most workloads the surprise is not storage, it is requests and egress, so those are where cost discipline matters.
S3 genuinely is free to start. The AWS free tier gives new accounts a few gigabytes of standard storage, a capped number of requests, and a little egress each month for the first year. For a hobby project or a static site that fits inside those limits, you really can run on S3 for free. The nuance is what happens after the free tier ends or you outgrow it, because S3 bills on more than just stored bytes.
What the free tier covers
| Dimension | Free tier (first 12 months) |
|---|---|
| Standard storage | About 5 GB per month |
| GET requests | Tens of thousands per month |
| PUT/POST/LIST requests | A couple thousand per month |
| Data transfer out | A small allotment per month |
These limits are generous enough for prototypes and small static sites. If you are estimating the cost of a low-traffic site, S3 plus a CDN can genuinely be nearly free, which is why it anchors most static site cost estimates. The reality check arrives when traffic grows or the free year lapses.
The three axes of S3 cost
After the free tier, S3 bills on storage, requests, and transfer. Storage is per GB per month and varies by class: Standard is the default, while colder classes trade retrieval latency and fees for cheaper storage, which is the whole point of comparing storage class tiers and archive options like Glacier versus Deep Archive. Requests are billed per thousand, with writes and lists costing more than reads. Data transfer out to the internet is per GB and is often the biggest line for a busy public bucket.
Where the surprise usually is
For most real workloads the storage bill is modest and the surprise is requests and egress. An application making millions of small GET requests, or listing large buckets frequently, racks up request charges that dwarf the storage. A popular download or media bucket serving directly to the internet pays egress on every byte, which is why fronting S3 with a CDN and following an egress reduction checklist matters. The bytes at rest are cheap; moving and touching them is where cost lives.
Keeping S3 cheap as you grow
Use lifecycle policies to move cold objects to cheaper classes automatically, front public buckets with a CDN so egress and requests hit the cache instead of S3, avoid chatty request patterns (batch and cache listings), and delete or expire data you no longer need. S3 stays cheap when you treat storage class, request volume, and egress as three separate levers rather than assuming a low storage bill means a low total bill. Free to start, cheap to run, but only if you watch requests and transfer.
FAQ
Is S3 free to start?
Yes, within limits. The AWS free tier gives new accounts about 5 GB of standard storage, tens of thousands of GET requests, a couple thousand write requests, and a small egress allotment per month for the first twelve months. A prototype or small static site that fits inside those limits can genuinely run on S3 for free during that first year.
What does S3 cost after the free tier?
S3 bills on three axes: storage per GB per month (varying by storage class), requests per thousand (with writes and lists costing more than reads), and data transfer out to the internet per GB. For most workloads the storage bill is modest and the real cost is requests and egress, so those are where discipline matters once you outgrow the free tier.
Why is my S3 bill high when I store little data?
Almost always requests or egress rather than storage. An application making millions of small GET requests, or listing large buckets frequently, racks up request charges that dwarf storage cost. A popular public bucket serving directly to the internet pays egress on every byte downloaded. The bytes at rest are cheap; touching and moving them is where cost accumulates.
How do I reduce S3 cost as I grow?
Use lifecycle policies to move cold objects to cheaper storage classes automatically, front public buckets with a CDN so cached requests and egress bypass S3, avoid chatty request patterns by batching and caching listings, and expire or delete data you no longer need. Treating storage class, request volume, and egress as three separate levers keeps the total bill low.
Does colder S3 storage always save money?
Not always. Colder classes charge less per GB stored but add retrieval fees and latency, so they save money only for data you rarely read. Frequently accessed objects can cost more in a cold class once retrieval fees are counted. Match the storage class to the access pattern, and use lifecycle policies to transition objects as they age rather than defaulting everything to one class.
Does C3X price S3 before deploy?
C3X reads your Terraform and prices S3 buckets and related storage resources against a live catalog before deploy, so the storage class and configuration choices are visible in the pull request. Request and egress volume depend on runtime traffic, but the storage class and structural decisions that shape the bill are exactly what C3X surfaces at design time.
What to do next
Price your storage choices before they reach production. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.