Explanation
Why the waste happens and who it affects.
If a bucket is no longer being read from or written to - and its contents are not required for compliance, backup, or retention purposes-it represents ongoing cost without delivering value. Many organizations overlook these idle buckets, especially in shared or legacy accounts, leading to unnecessary storage costs over time.
Billing model
The pricing dimensions that drive this cost.
S3 charges based on the total storage used (per GB per month), the selected storage class, and the number and type of requests made (PUT, GET, LIST, etc.). Storage costs accrue continuously, even if the data is never accessed. Buckets with no read or write activity still incur storage charges for all retained data.
How to detect
5 checks to find it in your estate.
- Identify S3 buckets with no read or write activity during the defined lookback period
- Review object access patterns to confirm that stored data is not being queried or updated
- Check whether the bucket was associated with a decommissioned workload, environment, or application
- Assess whether the data is still needed for compliance, reference, or future recovery
- Validate with data owners or security stakeholders before making changes
How to fix
How to remove the waste.
If a bucket is confirmed to be inactive and nonessential, delete the bucket and all stored objects. Alternatively, move the data to a lower-cost storage class such as Glacier Flexible Retrieval or Deep Archive for long-term retention at reduced cost. Consider applying lifecycle policies going forward to automatically clean up inactive data.
Before archiving, check the bucket's object count and average object size. Each object transitioned to S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive incurs a transition request charge and 40 KB of per-object overhead (8 KB of it billed at S3 Standard rates), and these classes have minimum storage durations of 90 and 180 days, so for buckets with many small objects archiving can cost more than deleting or leaving the data in place. By default, lifecycle rules do not transition objects smaller than 128 KB.
Documentation
Vendor references for pricing and configuration.