Updated October 3, 2026

Guides · EBS

Unattached EBS volumes and old snapshots: finding the storage you forgot

An EBS volume bills for its full provisioned size whether or not anything is attached to it. Volumes left behind when an instance is terminated, or detached and forgotten, keep billing every month, and so do the disks of instances that were stopped and never cleaned up. Snapshots pile up in the same way. All three are easy to list and usually quick to clean up.

What they cost (us-east-1 list prices)

StoragePriceExamplePer month
gp2 volume$0.10 / GB-month500 GB, unattached$50.00
gp3 volume$0.08 / GB-month1,000 GB, unattached$80.00
Snapshot, standard tier$0.05 / GB-month2,000 GB of snapshot data$100.00
Snapshot, archive tier$0.0125 / GB-monthThe same 2,000 GB, if archived as full snapshots$25.00

A forgotten 500 GB gp2 volume is $600 a year. Stopped instances are the same problem in another form. AWS doesn't charge for a stopped instance's compute, but its EBS volumes keep billing, and so does any Elastic IP attached to it.

Check it yourself: unattached volumes

Console: EC2 console → Elastic Block Store → Volumes. Filter by Volume state = Available. "Available" means not attached to any instance. Repeat in each region.

AWS CLI (read-only):

aws ec2 describe-volumes --region us-east-1 --filters Name=status,Values=available \
  --query 'Volumes[].[VolumeId,Size,VolumeType,CreateTime,Tags[?Key==`Name`].Value|[0]]' \
  --output table

Stopped instances and when they were stopped:

aws ec2 describe-instances --region us-east-1 \
  --filters Name=instance-state-name,Values=stopped \
  --query 'Reservations[].Instances[].[InstanceId,InstanceType,StateTransitionReason]' --output table

Check it yourself: old snapshots

Console: EC2 console → Elastic Block Store → Snapshots, with the Owned by me filter. Sort by Started.

AWS CLI, oldest first:

aws ec2 describe-snapshots --region us-east-1 --owner-ids self \
  --query 'sort_by(Snapshots,&StartTime)[].[SnapshotId,VolumeSize,StartTime,Description]' --output table

Snapshots used by your own AMIs (you can't delete these without deregistering the AMI first):

aws ec2 describe-images --region us-east-1 --owners self \
  --query 'Images[].BlockDeviceMappings[].Ebs.SnapshotId' --output text

What snapshots cost you: Cost Explorer, grouped by Usage type, shows EBS:SnapshotUsage. That's the real billed total. VolumeSize in the list above is the size of the source volume, not what each snapshot stores.

Why deleting a snapshot may save less than you expect

EBS snapshots are incremental: each one stores only the blocks that changed since the previous snapshot of that volume. When you delete a snapshot, AWS removes only the data that no other snapshot references. Data still used by a later snapshot is kept and billed to that snapshot. AWS's own example: Snap A holds 10 GiB and Snap B adds 4 GiB of changes. Deleting Snap A reduces the bill from 14 GiB to 10 GiB, not to 4.

Deleting a whole chain, such as every snapshot of a volume that no longer exists, frees everything.

How to fix it

  1. Unattached volumes: if there's any doubt, snapshot the volume first. Snapshots cost $0.05 per GB-month against $0.08 to $0.10 for the volume. Then delete the volume. Console: Actions → Delete volume. CLI (this one changes your account): aws ec2 delete-volume --volume-id vol-0123456789abcdef0
  2. Long-stopped instances: if nobody has missed an instance in weeks, create an AMI, then terminate it. Delete the AMI and its snapshots later if they stay unused.
  3. Old snapshots: keep what your backup policy requires and delete the rest. To stop them accumulating, let Amazon Data Lifecycle Manager or AWS Backup expire snapshots on a schedule.
  4. Snapshots you must keep for years: the EBS Snapshots Archive tier is up to 75% cheaper, at $0.0125 per GB-month in us-east-1. Archiving converts an incremental snapshot into a full one, so it saves most on the only or last snapshot of a volume. Snapshots deleted within 90 days of archiving are charged for the rest of the 90 days. Restoring one costs $0.03 per GB retrieved.

The free checkup finds this and 20 other kinds of issues automatically. It prices every unattached volume and every stopped instance's disks in each region you use. It also lists snapshots older than 90 days that no AMI uses. Because snapshots are incremental, it estimates their share of last month's snapshot bill by size, and marks that estimate low-confidence.

Run a free checkup

Sources

Prices are AWS on-demand list prices for US East (N. Virginia), checked October 3, 2026. Other regions differ.