Short answer: for almost every general-purpose volume, gp3 is 20% cheaper than gp2 and faster by default, and you can switch live. The savings that matter most are elsewhere: provisioned-IOPS volumes billing for IOPS they never use, and volumes nobody has attached for months.
What each type costs (us-east-1 list prices, illustrative)
gp2: $0.10 per GB-month. Performance is tied to size: 3 IOPS per GB (100 minimum, 16,000 maximum), bursting to 3,000 IOPS below 1,000 GB until burst credits run out.
gp3: $0.08 per GB-month with 3,000 IOPS and 125 MiB/s included; $0.005 per extra IOPS-month (up to 16,000) and $0.04 per extra MiB/s-month (up to 1,000).
io1 / io2: $0.125 per GB-month plus $0.065 per provisioned IOPS-month. io2 is the same price as io1 with higher durability.
st1 / sc1: $0.045 / $0.015 per GB-month, throughput-optimised HDD, capped at 500 / 250 IOPS.
Where the money is
gp2 to gp3: $0.02 per GB-month on every volume. A fleet of 50 TB of gp2 is about $1,000 a month.
io1 to gp3: a 1,000 GB io1 at 20,000 IOPS costs $1,425 a month; if the observed peak is 6,000 IOPS, gp3 at 7,200 IOPS costs about $103.
Over-provisioned gp3: volumes set to 6,000 IOPS and 250 MiB/s that peak at 800 IOPS pay $20 a month each for nothing.
Unattached volumes: a volume in the available state bills the full price for no work.
Measure and migrate
List volumes: aws ec2 describe-volumes --query 'Volumes[].[VolumeId,VolumeType,Size,Iops,Throughput,State]' --output text.
For each, take the busiest week's peak of VolumeReadOps + VolumeWriteOps divided by the period in seconds (use a 1 or 5 minute period), and of VolumeReadBytes + VolumeWriteBytes in MiB/s.
Paste rows into the advisor, or run node cli.mjs analyze volumes.csv. It prints a modify-volume command per volume.
Change one non-critical volume first; the type change is live but the volume spends time in the optimizing state.
Questions
Is gp3 cheaper than gp2?
Yes for nearly every volume: gp3 costs $0.08 per GB-month against $0.10 for gp2 and includes 3,000 IOPS and 125 MiB/s, which gp2 only reaches at 1,000 GB. Extra gp3 IOPS cost $0.005 per IOPS-month and extra throughput $0.04 per MiB/s-month.
Can I switch gp2 to gp3 without downtime?
Yes. Elastic Volumes changes type, IOPS and throughput on an attached volume. Run aws ec2 modify-volume --volume-id vol-xxxx --volume-type gp3 --iops 3000 --throughput 125; the volume is usable while it optimizes, and you can modify a volume roughly once every six hours.
Why is my io1 volume so expensive?
io1 and io2 charge $0.065 per provisioned IOPS-month on top of $0.125 per GB. A volume provisioned at 20,000 IOPS but peaking at 6,000 pays for 14,000 IOPS it never uses. If the peak fits gp3's 16,000 IOPS and 1,000 MiB/s ceiling, gp3 costs a small fraction of that.