CostMonStart free

Calculator

What is your AWS storage actually costing you?

No single storage line item is ever scary enough to investigate on its own, so it just grows unnoticed. Price your S3 data three ways, find EBS's mechanical waste, and see every rate behind the numbers.

Rates verified us-east-1 only — other regions differ, see the sources below

Why AWS storage bills drift

Why a storage bill only ever goes up

Storage is the one AWS bill category where nothing forces a conversation. An oversized EC2 instance eventually throttles a workload and gets noticed; a storage bill just grows a little every month with no failure mode attached to it at all. EBS bills the size you provisioned, not the size you use, so a volume resized up during a traffic spike stays at that size forever unless someone remembers to size it back down.

S3 has its own version of the same problem. Versioning keeps every prior copy of an object, not just the current one, and an incomplete multipart upload (the kind left behind by a failed deploy, or a client that dropped the connection mid-upload) sits there consuming storage without ever appearing in a normal object listing. Snapshots pile up on a schedule with no expiry date attached by default, and nobody wants to be the one who deletes the backup that turns out to have been needed. So the safest-feeling move is to leave it all alone, and that's how a bill slowly turns into something nobody can explain.

How the calculator works

The S3 panel prices the same pool of data three ways: left entirely in Standard, handed to Intelligent-Tiering's three automatic tiers (Frequent Access, Infrequent Access at 30 days cold, Archive Instant Access at 90 days cold), and moved by an explicit lifecycle rule to Standard-IA at 30 days cold and Glacier Instant Retrieval at 90 days cold. The two scenarios use the same two inputs and land close together, because Intelligent-Tiering's automatic tiers are priced identically to the manual classes they mirror.

What separates them is the risk, not the rate. Intelligent-Tiering charges no retrieval fee on any automatic tier and carries no early-delete exposure, so guessing wrong about an access pattern costs you nothing beyond the monitoring fee. Guess wrong with a hand-written lifecycle rule and you pay retrieval charges plus an early-delete penalty. The lifecycle scenario is the only one where the calculator bills retrieval at all.

The EBS panel prices three independent fixes at once: deleting unattached volumes outright, migrating whatever gp2 is left to gp3, and archiving whichever snapshots are eligible. None of them depend on each other, so the total saving is always just the sum of the three, with no double-counting.

Free calculator

Price your own storage

Two independent panels — S3 storage classes and EBS volumes/snapshots. Everything computes in your browser; nothing you type here is sent anywhere. Rates are us-east-1; see the full rate card below.

S3

TB

Everything you'd count as "ours" across every bucket.

%

The candidate pool for Standard-IA or Intelligent-Tiering's Infrequent Access tier.

%

A subset of the share above. Drives both Intelligent-Tiering's automatic Archive Instant Access tier and a lifecycle move to Glacier Instant Retrieval.

KB

Below 128 KB, IA classes bill a per-object minimum and Intelligent-Tiering won't auto-tier at all.

GB

Data read back out, across every storage class.

Your S3 data, priced three waysMonthly
Live
All Standard, untouched
$1,178
Intelligent-Tiering
$1,089
Explicit lifecycle (IA + Glacier IR)
$837
Intelligent-Tiering vs. Standard
−$88.58/mo
Lifecycle vs. Standard
−$340.16/mo

Estimate only, based on the volumes you enter and us-east-1 list prices verified against AWS's Price List Bulk API — not a bill. Excludes request (PUT/GET/LIST) charges; see the FAQ below.

EBS

GB

Total provisioned size across every gp2 volume, attached or not.

GB

Volumes with no instance attached, a subset of the gp2 total above, billing in full either way.

GB

Total incremental snapshot storage, standard tier.

%

Snapshots you wouldn't need restored within minutes.

What your EBS fleet is wastingMonthly
Live
Today$350−$108.25/mo available
  • Delete unattached volumes−$15.00/mo

    Nobody's paying attention to a volume with no instance attached — it bills in full either way.

  • Migrate remaining gp2 to gp3−$37.00/mo

    An online, no-downtime move — exactly 20% off at the same provisioned size, with a higher free performance baseline.

  • Archive eligible snapshots−$56.25/mo

    Snapshots nobody needs restored within minutes cost a quarter as much in the archive tier.

Deleting one snapshot rarely frees its full listed size — EBS snapshots are incremental. See the traps section below.

Rate card

Every S3 and EBS storage rate, priced

us-east-1, verified against AWS's first-party Price List Bulk API — not blog hearsay. Full citations are in the sources section below.

S3

S3 storage class rates, their usage type, and notes
RatePriceUsage typeNote
S3 Standard storage$0.023/GB-mo ≤50 TB · $0.022/GB-mo next 450 TB · $0.021/GB-mo >500 TBTimedStorage-ByteHrs
S3 Standard-IA storage$0.0125/GB-moTimedStorage-SIA-ByteHrs30-day minimum storage duration.
S3 Standard-IA retrieval$0.01/GBRetrieval-SIA
S3 Standard-IA early-delete penalty$0.0125/GB-mo, prorated for the days short of 30EarlyDelete-SIA
S3 One Zone-IA storage$0.01/GB-moTimedStorage-ZIA-ByteHrs30-day minimum storage duration; data survives in a single AZ only.
S3 Glacier Instant Retrieval storage$0.004/GB-moTimedStorage-GIR-ByteHrs90-day minimum storage duration.
S3 Glacier Instant Retrieval retrieval fee$0.03/GBRetrieval-GIR
S3 Glacier Flexible Retrieval storage$0.0036/GB-moTimedStorage-GlacierByteHrs90-day minimum storage duration.
Intelligent-Tiering: Frequent Access$0.023/GB-mo ≤50 TB, same ladder as StandardTimedStorage-INT-FA-ByteHrsAutomatic. It's the tier every object starts in. Objects under 128 KB stay here permanently; see the traps below.
Intelligent-Tiering: Infrequent Access$0.0125/GB-moTimedStorage-INT-IA-ByteHrsAutomatic after 30 consecutive days with no access.
Intelligent-Tiering: Archive Instant Access$0.004/GB-moTimedStorage-INT-AIA-ByteHrsAutomatic after 90 consecutive days with no access, with no retrieval fee and no loss of millisecond access. Nothing to activate.
Intelligent-Tiering: Archive Access$0.0036/GB-moTimedStorage-INT-AA-ByteHrsOpt-in tier, 90+ days with no access. It trades millisecond access for a 3–5 hour restore.
Intelligent-Tiering: Deep Archive Access$0.00099/GB-moTimedStorage-INT-DAA-ByteHrsOpt-in tier, 180+ days with no access. It's the only Deep Archive rate this page can verify first-party; see the module note on plain Glacier Deep Archive storage.
Intelligent-Tiering monitoring fee$0.0025 per 1,000 objects/moMonitoring-Automation-INTNever charged on objects under 128 KB. They're excluded from monitoring and auto-tiering both.
Glacier Deep Archive staging storage$0.021/GB-moTimedStorage-GDA-StagingA transient staging area, not standalone Deep Archive storage.

EBS

EBS volume and snapshot rates, their usage type, and notes
RatePriceUsage typeNote
gp3 volume storage$0.08/GB-moEBS:VolumeUsage.gp3Includes 3,000 IOPS and 125 MiB/s throughput free.
gp2 volume storage$0.10/GB-moEBS:VolumeUsage.gp2Exactly 20% more than gp3 for the same size.
io1/io2 volume storage$0.125/GB-moEBS:VolumeUsage.piops / .io2io1 bills as .piops, not .io1. There is no .io1 usage type. Provisioned IOPS billed separately, see below.
st1 (Throughput Optimized HDD) storage$0.045/GB-moEBS:VolumeUsage.st1
sc1 (Cold HDD) storage$0.015/GB-moEBS:VolumeUsage.sc1
gp3 provisioned IOPS beyond the free 3,000$0.005/IOPS-moEBS:VolumeP-IOPS.gp3
gp3 provisioned throughput beyond the free 125 MiB/s$0.04/MiBps-mo ($40.96/GiBps-mo)EBS:VolumeP-Throughput.gp3AWS bills this per GiBps-month. Read the unit carefully before comparing it to the free baseline, which is stated in MiB/s.
EBS snapshot storage$0.05/GB-moEBS:SnapshotUsageThis storage is incremental. It bills on changed blocks, not each snapshot's full listed size.
EBS snapshot archive storage$0.0125/GB-moEBS:SnapshotArchiveStorageSeparate retrieval and early-delete fees apply; a restore takes hours, not seconds.

The traps

The non-obvious mistakes that cost real money

Versioning keeps every object you thought you deleted

"Deleting" an object in a versioned bucket just adds a delete marker on top. The object itself, and every version before it, keeps billing until a lifecycle rule expires the noncurrent versions explicitly. A bucket that's had versioning on for years and never had a noncurrent-version expiration rule is usually storing several times its visible object count.

Incomplete multipart uploads don't show up in a listing, but they bill

A multipart upload can be interrupted partway, by a failed deploy or a client that drops the connection. The uploaded parts stay in the bucket indefinitely with no expiration by default, and they don't appear in a normal object listing at all. `AbortIncompleteMultipartUpload` is a one-line lifecycle rule that most buckets simply don't have.

Small objects make IA classes more expensive, not less

Standard-IA, One Zone-IA, and the equivalent Intelligent-Tiering tiers all bill a 128 KB minimum per object. An object smaller than that is billed as if it were exactly 128 KB. Transitioning a bucket full of small files (thumbnails, log fragments, individual JSON records) to a "cheaper" class can raise the bill instead of lowering it, since the per-GB rate drops but the effective billed size goes up.

Every archive class has a minimum storage duration, and a penalty for leaving early

Standard-IA and One Zone-IA carry a 30-day minimum; Glacier Instant Retrieval and Glacier Flexible Retrieval carry 90 days. Deleting, overwriting, or transitioning an object before its class's minimum is up doesn't just skip the discount. It charges the early-delete fee for the remaining days, calculated at that class's storage rate. Archiving data you expect to touch again within the next few months usually costs more than leaving it where it was.

Getting data back out of Glacier costs money and time, twice over

A Glacier restore isn't instant except in the Instant Retrieval class. Flexible Retrieval and Deep Archive both require an explicit restore request, priced separately by how fast you need it, and the restored copy sits in a temporary staging area that bills its own storage rate on top of the original archive rate until you either download it or let it expire.

gp3's free performance baseline has a ceiling, and the throughput rate hides a unit trap

gp3 bundles 3,000 IOPS and 125 MiB/s of throughput into its base price regardless of volume size, a real improvement over gp2, where performance scales (and is capped) by size alone. But provisioning beyond either baseline bills separately, and AWS prices the extra throughput per GiBps-month, not MiBps-month. Reading the number without converting the unit can make the extra throughput look roughly 1,000x cheaper than it is.

Cross-region replication is a second, full-price copy

Replicating a bucket to a second region for durability or latency doesn't discount either copy. It's simply two buckets, each billed in full at whatever storage class it's in, plus the one-time replication data-transfer charge to move each object across. A team that turns on replication for disaster recovery and doesn't apply the same lifecycle rules to the destination bucket often ends up paying full Standard rates twice over.

A CI pipeline that rebakes images can multiply your snapshot count without anyone noticing

Every AMI bake or golden-image rebuild that snapshots a volume as part of the pipeline adds another line to the snapshot bill, and a frequent rebuild schedule (nightly, or on every merge to main) can produce far more snapshots than anyone manually reviewing the console would expect. None of them stop billing until someone explicitly deletes them.

Deleting one snapshot frees far less than its listed size suggests

EBS snapshots are incremental: each one after the first stores only the blocks that changed since the previous snapshot, but the console shows every snapshot's full logical size regardless. Deleting a single snapshot out of a chain only frees the blocks no other snapshot in that chain still references. That's often a small fraction of the number shown, so cleanup savings estimated from the console's per-snapshot size routinely overstate the real recovery.

This week

Six fixes, in the order to actually do them

  1. Find and delete unattached EBS volumes

    Pure waste with no performance tradeoff to weigh. It's the fastest, safest fix on this page.

  2. Migrate remaining gp2 volumes to gp3

    An online, no-downtime move. 20% off at the same size, with a higher free performance baseline.

  3. Add a noncurrent-version-expiration rule to every versioned bucket

    One lifecycle rule stops "deleted" objects from billing forever.

  4. Add an AbortIncompleteMultipartUpload lifecycle rule

    Closes a gap that doesn't even show up in a normal object listing.

  5. Set a snapshot retention/lifecycle policy

    Stops an automated backup schedule from accumulating snapshots with no expiry.

  6. Turn on Intelligent-Tiering for buckets with unpredictable access patterns

    No retrieval fee on any of its three automatic tiers, and no early-delete risk to weigh.

Sources

Where every rate on this page comes from

Every S3 and EBS rate above is pulled first-party from AWS's own pricing data, re-verified as of 2026-08-07.

FAQ

Common questions about AWS storage costs

Why does my S3 bill keep climbing when I'm not uploading much new data?

Versioning, incomplete multipart uploads, and snapshot-like accumulation are the usual causes. None of them show up in a normal object count, and none of them stop billing until a lifecycle rule explicitly expires them. Check for a bucket with versioning on and no noncurrent-version expiration rule first; it's the single most common source of silent S3 growth.

Is Intelligent-Tiering just a strictly better version of a manual lifecycle rule?

For unpredictable access patterns, usually yes. Its three automatic tiers are priced identically to the manual classes they mirror, so the storage cost lands in much the same place. But it charges no retrieval fee on any of them and carries no early-delete penalty, which means guessing wrong about an access pattern costs you nothing beyond the monitoring fee. The trade is that per-object monitoring fee, plus no benefit at all for objects under 128 KB, which never get auto-tiered. If you already know an access pattern for certain (backups nobody will touch again for a year, say), a manual lifecycle rule into Glacier Flexible Retrieval or an opt-in Archive tier can still beat it on pure storage cost.

What's the actual difference between Standard-IA and Intelligent-Tiering's Infrequent Access tier?

The storage rate is identical. The difference is who decides when data moves: with Standard-IA you write the lifecycle rule and take the early-delete risk if you're wrong about access patterns; with Intelligent-Tiering, AWS moves objects automatically after 30 days of no access and moves them back the moment they're read again, with no early-delete penalty and no retrieval fee either way.

Why did deleting an old snapshot barely change my EBS bill?

EBS snapshots are incremental. Each one only stores the blocks that changed since the last snapshot in its chain, even though the console shows every snapshot's full logical size. Deleting one snapshot only frees the blocks no remaining snapshot in that chain still depends on, which is often far less than its listed size implies.

Is migrating from gp2 to gp3 risk-free?

It's an online, no-downtime operation for an existing volume, and at equal provisioned size it's a 20% saving with a higher default performance baseline (3,000 IOPS / 125 MiB/s free) than gp2 offered at the same size. The one thing worth checking first is whether anything was relying on gp2's size-scaled IOPS ceiling. gp3 decouples performance from size, so a very large gp2 volume that had accumulated a high implicit IOPS ceiling may need extra provisioned IOPS on gp3 to match it.

What happens if I need an object back before its Glacier minimum storage duration is up?

You can restore or delete it any time. Nothing blocks the action, but you'll be charged the early-delete penalty: the storage rate for whatever days remain in the class's minimum (90 for Glacier Instant Retrieval and Glacier Flexible Retrieval, 30 for Standard-IA and One Zone-IA), on top of anything you already paid.

Does this calculator account for S3 request charges (PUT/GET/LIST)?

No, deliberately. Every other figure on this page came from a first-party pull of AWS's Price List Bulk API, and per-request pricing wasn't part of that pull. Rather than estimate it, the field was left out entirely. Everything shown here is a storage, retrieval, or monitoring cost only.

Does CostMon fix any of this automatically?

No. CostMon doesn't rewrite a lifecycle policy, delete a volume, or migrate a gp2 fleet to gp3 for you. What it does is pull your real AWS cost and usage data on a schedule, normalize it alongside every other provider you run, and flag a climbing storage line before it turns into a surprise on the invoice. The fixes above are still yours to apply.

The meter you don't watch still grows.

Waste rarely hides in the service you check every week. CostMon watches every meter on your stack, including the ones you forgot were running.

Esc