EBS VOLUME COST ADVISOR · RUNS IN YOUR BROWSER

Are your EBS volumes the wrong type?

Paste one row per volume — type, size, provisioned IOPS, observed peak IOPS and throughput — and get the cheapest type that still covers the peak (gp2 → gp3, io1 → gp3), the ready-to-paste aws ec2 modify-volume command, gp2 volumes that depend on burst credits and unattached volumes still billing you.

Nothing is uploaded and AWS is never contacted. The text box is analysed in this browser and never leaves your device. The peak is the number you supply, so a spike shorter than your sampling period is invisible.

1. Paste your volumes

Prefer a CLI, or want a CI check?

Same logic, zero dependencies, one command — reads a file or stdin:

node cli.mjs analyze volumes.csv
cat volumes.csv | node cli.mjs analyze -
node cli.mjs analyze volumes.csv --fail-on warn      # exit 1 on any waste or throttling
node cli.mjs analyze volumes.csv --headroom 1.5 --json --prices my-prices.json

Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: gp2 vs gp3: EBS cost and how to migrate.

What's recognised

InputHandling

Prices are illustrative and dated; edit them with --prices in the CLI. Snapshots, other regions, Savings Plans, multi-attach and Block Express limits above 64,000 IOPS are not modelled.

Common questions

Does this connect to my AWS account?

No. It reads the rows you paste and never contacts AWS. It cannot see your real invoice, snapshots, Savings Plans or free tier, so every dollar figure is the rows you pasted times list prices you can edit.

How do I get the numbers?

Size, type, provisioned IOPS and throughput come from aws ec2 describe-volumes. Peak IOPS is the maximum over a busy week of (VolumeReadOps + VolumeWriteOps) divided by the period in seconds in CloudWatch, and peak MiB/s is (VolumeReadBytes + VolumeWriteBytes) divided by the period, in MiB. Use a one-minute or five-minute period, not an hourly average that hides the peak.

Is gp3 always cheaper than gp2?

Almost always for the same size: gp3 is 20% cheaper per GB and includes 3,000 IOPS and 125 MiB/s. A large gp2 volume that gets more than 3,000 IOPS from its size (3 IOPS per GB above 1,000 GB) can need extra gp3 IOPS to match, at $0.005 per IOPS-month, so the tool sizes gp3 from your observed peak instead of assuming.

Does changing the volume type cause downtime?

No. Elastic Volumes changes the type, size, IOPS and throughput of a volume while it stays attached and in use. It enters an optimizing state for a while, you can change a volume about once every six hours, and you should still try one non-critical volume first.

Is my data uploaded anywhere?

No. The browser page analyses the text in your own browser and never sends it anywhere. The CLI reads a local file or stdin and makes no network call.