RDS gp3 vs io1 storage cost: which database volume type to pick
RDS gp3 gives a free IOPS and throughput baseline for a flat per-GB price, while io1 charges separately for every provisioned IOPS. For most databases gp3 is dramatically cheaper. Here is the pricing, the break-even, and when io1 still earns its cost.
Quick answer
RDS gp3 costs about $0.115 per GB-month single-AZ and includes a free baseline of 3,000 IOPS and 125 MB/s (12,000 IOPS and 500 MB/s on volumes of 400 GB or more), with extra IOPS at about $0.02 each. RDS io1 costs about $0.125 per GB-month plus $0.10 per provisioned IOPS-month, with no free baseline, so provisioning 20,000 IOPS on io1 adds $2,000 per month that gp3 would largely give for free. For the large majority of databases gp3 is far cheaper and fully sufficient; io1 is worth it only for sustained very high IOPS or when you need more than gp3's ceiling.
When you create an RDS instance, the storage type quietly sets a large part of the bill. The default choice used to be gp2, but gp3 and io1 are the two performance-oriented options worth comparing, and they price performance in opposite ways. gp3 bundles a generous free IOPS baseline into a flat per-GB rate; io1 charges for every IOPS on top of storage. That difference decides which is cheaper by a wide margin for most workloads.
How the two are priced
| Type | Storage /GB-mo | IOPS pricing | Free baseline |
|---|---|---|---|
| gp3 | ~$0.115 | ~$0.02 per extra IOPS | 3,000 IOPS, 125 MB/s |
| io1 | ~$0.125 | $0.10 per provisioned IOPS | none |
gp3 includes 3,000 IOPS and 125 MB/s free, and for volumes of 400 GB or more that baseline rises to 12,000 IOPS and 500 MB/s at no extra charge. io1 gives no free IOPS; every one of its provisioned IOPS costs $0.10 per month. That single difference, a free baseline versus paying for all of it, is why the two diverge so sharply once you need real performance. Prices shown are single-AZ; Multi-AZ roughly doubles both storage and IOPS charges.
A concrete comparison
Take a 500 GB database needing 12,000 IOPS. On gp3, the 500 GB volume is over the 400 GB threshold, so 12,000 IOPS is included in the free baseline: you pay about $57.50 for storage and nothing extra for IOPS. On io1, the same 500 GB is about $62.50 for storage plus 12,000 IOPS at $0.10 each, another $1,200, for roughly $1,262 per month. That is over 20 times the gp3 cost for identical performance. Even at 20,000 IOPS, gp3 charges only for the 8,000 above its 12,000 baseline (about $160), while io1 charges for all 20,000 (about $2,000).
When io1 still earns its price
io1 makes sense in a narrow band. It supports up to 256,000 IOPS (via io2 Block Express) versus gp3's ceiling of 16,000 IOPS on RDS, so workloads needing sustained IOPS beyond gp3's limit have no choice. It also offers higher, more consistent performance guarantees and higher durability, which regulated or latency-critical transactional databases sometimes require. But these are the exception. If your database needs 16,000 IOPS or fewer, gp3 delivers it for a fraction of io1's cost. Consider io2 rather than io1 for new high-IOPS workloads, as covered in io2 versus gp3.
The gp2 legacy trap
Many existing instances still run gp2, which ties IOPS to volume size (3 IOPS per GB) and forces you to over-allocate storage just to get IOPS. Migrating gp2 to gp3 almost always saves money and decouples IOPS from size, the same win as on raw EBS covered in the gp2 to gp3 migration guide. Auditing for lingering gp2 RDS storage is a quick, high-return exercise.
Default to gp3, justify io1
For new RDS instances, gp3 should be the default and io1 the exception you justify with a measured IOPS requirement above gp3's ceiling. The free baseline makes gp3 cheaper for essentially every ordinary database, and the decoupling of IOPS from size keeps storage right-sized. Price the storage type, size, and provisioned IOPS against the resource catalog before deploy, and pair the choice with right-sizing so both the instance and its volume match real demand.
FAQ
Is RDS gp3 or io1 cheaper?
gp3 is far cheaper for most databases. It costs about $0.115 per GB-month single-AZ and includes a free IOPS baseline (3,000, rising to 12,000 on volumes of 400 GB or more), while io1 costs about $0.125 per GB plus $0.10 per provisioned IOPS with no free baseline. A 500 GB, 12,000 IOPS database is about $57 on gp3 versus over $1,260 on io1.
How much do RDS io1 IOPS cost?
About $0.10 per provisioned IOPS-month single-AZ, on top of storage at roughly $0.125 per GB. io1 provides no free IOPS baseline, so provisioning 20,000 IOPS adds about $2,000 per month. Multi-AZ roughly doubles both the storage and IOPS charges because the standby keeps a full copy.
When should I use RDS io1 instead of gp3?
When you need sustained IOPS above gp3's RDS ceiling of 16,000, or require the higher, more consistent performance guarantees and durability that some regulated or latency-critical transactional databases need. For any database needing 16,000 IOPS or fewer, gp3 delivers it for a fraction of io1's cost, so io1 should be the justified exception.
What is the free IOPS baseline on RDS gp3?
Every gp3 volume includes 3,000 IOPS and 125 MB/s at no extra charge. For volumes of 400 GB or more, that baseline rises to 12,000 IOPS and 500 MB/s, still free. Only IOPS above the baseline is billed, at about $0.02 each per month, which is why gp3 is so much cheaper than io1 for typical databases.
How does C3X help with RDS storage type cost?
C3X prices RDS instances from Terraform including storage type, size, and provisioned IOPS, so the difference between a gp3 and an io1 volume is visible in the pull request. That makes it easy to catch an io1 volume where gp3's free baseline would cover the same IOPS for a fraction of the cost, before the instance is deployed.
What to do next
Pick the RDS storage type on cost, not habit. C3X prices gp3 and io1 volumes from Terraform against a live resource catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.