bucketpilot/Docs

How to reduce your S3 storage costs

Find what's actually driving your S3 bill — storage class mix, forgotten data, duplicates — and fix it with lifecycle rules and tiering.

Where S3 cost hides

Most S3 bills aren't big because of the data you use — they're big because of the data you forgot. The usual suspects:

  • Everything sitting in STANDARD — data written once and never read again keeps paying the hot-storage rate when Infrequent Access, Glacier, or Deep Archive would cost a fraction.
  • Forgotten buckets and prefixes — old exports, logs, and one-off migration leftovers nobody has looked at in years.
  • Duplicates — the same large files uploaded to several buckets or prefixes.
  • Old versions and incomplete multipart uploads — invisible in a normal listing, billed all the same.

The hard part isn't fixing any of these — it's *seeing* them across millions of objects.

Step 1: see what you're paying for

  1. 1.Connect your account and index your buckets (how) — cost analysis needs to know what's in them.
  2. 2.Open Analytics: storage broken down by bucket and storage class, largest objects, growth over time, and an estimated monthly cost per bucket.
  3. 3.Run the duplicate finder (files ≥ 1 MB) to spot the same content stored more than once.
  4. 4.Sort any bucket by size or last-modified to find the cold giants.
Storage and cost analytics across every connected bucket
Storage and cost analytics across every connected bucket

Step 2: fix it

  • Move cold data down a class — change storage class per object or folder from the bucket view (with a warning before one-way archive moves), or attach a lifecycle rule so S3 tiers objects automatically by age.
  • Delete what's truly dead — the index makes "everything under this prefix, older than X, never touched" findable.
  • De-duplicate — pick the canonical copy and delete the rest.
  • Watch it stay fixed — the weekly digest (Business) reports storage and cost movement so regressions show up in your inbox, not the invoice.

Storage class changes to GLACIER / DEEP_ARCHIVE are one-way without a restore — BucketPilot warns you first. Archive tiers also charge per-retrieval, so they fit data you *rarely* need, not data you never need again.

© 2026 BucketPilot