Amazon S3 has several storage classes, and the main difference between them is how quickly and how often you can get data back. S3 Standard is built for data you read often; the Infrequent Access and Glacier classes charge less to store data but add retrieval fees, minimum storage periods and, for the archive tiers, a wait before you can read anything. If most of your data is rarely opened but still sits in S3 Standard, you are paying for speed you don’t use.
That usually happens by default. Every object lands in S3 Standard unless someone says otherwise, and nobody revisits it. This guide compares the classes, shows where a cheaper class ends up costing more, and explains the lifecycle rules that move data automatically. It is one of the most common findings behind an AWS bill that is higher than it should be.
The storage classes compared
All the classes below are designed for the same durability, 99.999999999% (eleven nines). What changes is availability, where the data is held, how fast you can read it, and the small print. Figures are from AWS’s storage class comparison and Glacier storage classes page.
| Class | Built for | Availability Zones | Minimum storage charge | Minimum billable size | Retrieval |
|---|---|---|---|---|---|
| S3 Standard | Data read often | 3 or more | None | None | Milliseconds, no retrieval fee |
| S3 Intelligent-Tiering | Unknown or changing access | 3 or more | None | None | Milliseconds for the default tiers, no retrieval fee; a small monitoring fee per object |
| S3 Standard-IA | Read less than monthly, needed fast | 3 or more | 30 days | 128 KB | Milliseconds, per-GB retrieval fee |
| S3 One Zone-IA | Re-creatable data read rarely | 1 | 30 days | 128 KB | Milliseconds, per-GB retrieval fee; lost if the AZ is lost |
| S3 Glacier Instant Retrieval | Read about once a quarter, needed fast | 3 or more | 90 days | 128 KB | Milliseconds, per-GB retrieval fee |
| S3 Glacier Flexible Retrieval | Archives read once or twice a year | 3 or more | 90 days | None (40 KB metadata per object) | Restore first: 1–5 minutes (expedited), 3–5 hours (standard), 5–12 hours (bulk) |
| S3 Glacier Deep Archive | Long-term retention, rarely read | 3 or more | 180 days | None (40 KB metadata per object) | Restore first: 12–48 hours |
AWS’s own price comparisons give a sense of the steps: Glacier Instant Retrieval is up to 68% cheaper to store than Standard-IA, Flexible Retrieval up to 10% cheaper again, and Deep Archive up to 75% cheaper than Flexible Retrieval, at $0.00099 per GB-month (about $1 per TB). Check the rate for your own Region in the S3 pricing page or the AWS Pricing Calculator: London rates differ from the US figures AWS often quotes.
Where cheaper storage costs more
The lower storage price comes with three catches, and each one has turned a “saving” into a bigger bill.
- Minimum storage duration. Delete or move an object from Standard-IA after ten days and you still pay for 30. Glacier Instant and Flexible Retrieval charge for at least 90 days, Deep Archive for 180. Short-lived data, such as temporary exports or build artefacts, belongs in Standard.
- Minimum billable size. In Standard-IA, One Zone-IA and Glacier Instant Retrieval, a 10 KB object is billed as 128 KB. Millions of small log files or thumbnails can cost more there than in Standard.
- Retrieval fees. The IA and Glacier Instant classes charge per GB read. Data that turns out to be read every week costs more in IA than in Standard.
There is also a per-request charge each time a lifecycle rule moves an object, so moving millions of tiny objects can cost more than it saves. AWS’s lifecycle guidance says it doesn’t recommend transitioning objects under 128 KB for that reason, and since September 2024 new lifecycle rules don’t transition objects under 128 KB by default.
Intelligent-Tiering: when you don’t know the access pattern
S3 Intelligent-Tiering moves each object between tiers for you. An object not read for 30 consecutive days moves to the Infrequent Access tier (up to 40% cheaper to store, per AWS), and after 90 days to Archive Instant Access (up to 68% cheaper). If it is read again, it moves back to the Frequent Access tier. There are no retrieval fees and no minimum storage duration, which removes the main risks in the table above.
The trade-off is a small monthly monitoring and automation charge per object. Objects under 128 KB are not monitored, are not charged that fee, and stay in the Frequent Access tier. Intelligent-Tiering suits large objects with unpredictable access. For data you know is cold, such as seven-year records, a lifecycle rule straight to a Glacier class is cheaper.
A worked example
(Illustrative. The storage rates are assumed, chosen to reflect the ratios AWS publishes; price your own Region before deciding.) A 30-person wealth manager keeps 20 TB in S3 Standard: 2 TB of client documents opened daily, 6 TB of statements and reports from the last three years that are opened a few times a year, and 12 TB of records kept for regulatory retention and almost never read.
| Data | Before | After | Assumed rate (per GB-month) | Monthly storage |
|---|---|---|---|---|
| 2 TB active documents | Standard | Standard | $0.024 | $48 |
| 6 TB older statements | Standard | Glacier Instant Retrieval | $0.005 | $30 |
| 12 TB retention archive | Standard | Glacier Deep Archive | $0.002 | $24 |
| Total | $480 a month (all Standard) | about $102 a month |
The before figure assumes the same $0.024 Standard rate on all 20 TB. Two things keep this a real saving rather than a paper one. The statements must really be read rarely, because Glacier Instant Retrieval charges per GB on every read. And the archive must be something the firm can wait 12 to 48 hours for: fine for a records request with a statutory deadline measured in weeks, not for anything a customer needs today. The rates are rounded assumptions for illustration; the exact figures for your Region are on the S3 pricing page.
Lifecycle rules do the moving
An S3 Lifecycle configuration is a set of rules applied to a bucket or a prefix. Transition actions move objects to another class after a set number of days; expiration actions delete them. Rules apply to existing objects as well as new ones, so one rule can reclassify years of data.
A typical rule for the example above:
- Statements prefix: move to Glacier Instant Retrieval 90 days after creation.
- Retention prefix: move to Glacier Deep Archive after 30 days; expire after the retention period ends, if your records policy allows deletion.
- Every bucket with versioning: expire old (noncurrent) versions after a set period, because each one is billed as a full object.
Before writing rules, find out what is actually read. S3 Storage Lens and the storage class analysis feature show access patterns by bucket and prefix, and cost allocation tags show which team owns the spend.
Two cautions for regulated firms
Cheaper storage is not a resilience plan. One Zone-IA keeps data in a single Availability Zone, so it is no place for the only copy of anything you must be able to restore. And moving backups to an archive class changes how fast you can recover them: a Deep Archive restore taking up to two days needs to fit the recovery time you have agreed for that system. If backups are part of your disaster recovery, read why backups are not a DR plan before choosing a class for them.
Storage classes are one of the quickest fixes in an AWS bill: no code changes, and a rule can be undone. If you would like your storage and the rest of the bill reviewed, with every saving priced in pounds a month, see our AWS cost optimisation service.