S3 buckets often persist after projects complete or when the associated workloads have been retired. 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.
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.
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.