New See exactly what you're overpaying AWS in under 60 seconds. Try the Calculator for free

RDS Storage Costs: gp3 vs io1 vs Magnetic, With Exact Rates, IOPS Math, and the April 2026 Magnetic Deprecation

Updated June 29, 2026
19 min read
RDS Storage Costs: gp3 vs io1 vs Magnetic, With Exact Rates, IOPS Math, and the April 2026 Magnetic Deprecation
On this page

RDS storage pricing is more complex than most cost models reflect. The rate per GB is just the starting point — IOPS and throughput are billed separately on gp3 above the included baseline, io1 charges for every provisioned IOPS from the first one, and Multi-AZ doubles every storage charge. And if any of your RDS instances are still on magnetic storage, they face forced migration to gp3 starting April 30, 2026.

This guide covers the exact rates for every RDS storage type, the IOPS math for gp3 and io1, the case for io2 Block Express over io1, the critical distinction between EBS and RDS gp3 pricing, and the magnetic deprecation timeline.

Banner

The EBS vs RDS Pricing Confusion That Causes Systematic Underestimation

Before the rates: the single most common RDS storage cost modeling error. Amazon EBS gp3 volumes (used for EC2 instances) are priced at $0.08 per GB-month. Amazon RDS gp3 storage is priced at $0.115 per GB-month. These are different services at different price points, and the $0.035/GB difference adds up.

At 1 TB of storage: EBS gp3 costs $80/month. RDS gp3 costs $115/month. The difference is $35/month — $420/year — per 1 TB of database storage. For a fleet of ten RDS instances each with 1 TB of storage, the systematic underestimation of RDS storage costs using EBS rates is $4,200 per year before any IOPS or throughput charges.

The reason for the difference: RDS storage includes a managed storage layer that handles automated backups, storage auto-scaling, Multi-AZ replication, and the management plane that EBS volumes do not include when attached to EC2 instances. When you model RDS storage costs, use the RDS pricing page (aws.amazon.com/rds/pricing/), not the EBS pricing page.

Always use RDS pricing page rates for RDS storage cost models. EBS pricing applies to storage attached to EC2 instances. RDS gp3: $0.115/GB-month (Single-AZ, US East N. Virginia, June 2026). EBS gp3: $0.08/GB-month. Do not use EBS rates to estimate RDS costs — the difference is $35/TB-month. Source: AWS official pricing pages.

gp3 Storage: Exact Rates, IOPS Tiers, and What the Baseline Covers

General Purpose SSD (gp3) is the current default and recommended RDS storage type for most production workloads. AWS official documentation recommends gp3 for new storage needs over gp2, which it has superseded. All RDS pricing figures below are for Single-AZ in US East (N. Virginia), June 2026. Verify at aws.amazon.com/rds/pricing/ — rates change.

gp3 storage rate

$0.115 per GB-month for Single-AZ RDS instances. This covers the storage volume itself and includes the gp3 baseline performance.

gp3 included baseline (no additional charge)

Every gp3 RDS volume includes 3,000 IOPS and 125 MB/s throughput at no additional charge beyond the base storage rate. This baseline is fixed regardless of volume size — a 100 GB gp3 volume and a 10 TB gp3 volume both receive the same 3,000 IOPS / 125 MB/s baseline included.

gp3 additional IOPS (above 3,000)

For Single-AZ RDS instances: $0.20 per provisioned IOPS-month above the 3,000 baseline. If you provision 5,000 IOPS on a gp3 volume, you pay for the additional 2,000 IOPS at $0.20 each: 2,000 x $0.20 = $400/month in additional IOPS charges, on top of the base storage cost. Verify the current rate at aws.amazon.com/rds/pricing/ — rates change.

gp3 additional throughput (above 125 MB/s)

For Single-AZ RDS instances: $0.08 per provisioned MB/s-month above the 125 MB/s baseline. If you provision 500 MB/s of throughput, you pay for the additional 375 MB/s: 375 x $0.08 = $30/month in additional throughput charges. Verify the current rate at aws.amazon.com/rds/pricing/ — rates change.

gp3 IOPS provisioning minimums and maximums

gp3 IOPS provisioning is not available for all volume sizes. From AWS official documentation: provisioned IOPS and throughput changes are only allowed for volumes of 200 GB or larger for Oracle, 400 GB or larger for MariaDB, MySQL, PostgreSQL, and Db2. For SQL Server, no storage allocation limit is set. For volumes below these minimums, a fixed baseline of 3,000 IOPS and 125 MB/s applies and the setting cannot be changed.

For volumes large enough to support IOPS provisioning: gp3 can be configured for IOPS in the range of 12,000 to 64,000 IOPS, and throughput in the range of 500 to 4,000 MiB/s. The instance class must support the provisioned performance level — if the instance class is the bottleneck, provisioning more IOPS than the instance can deliver provides no performance benefit and adds cost with no return.

Also read: RDS Pricing Calculator: MySQL, PostgreSQL, and SQL Server Cost Breakdown

gp3 Multi-AZ storage pricing

Multi-AZ RDS deployments provision storage for both the primary and standby instances. The storage is billed as part of the Multi-AZ per-instance-hour rate — verify Multi-AZ storage rates at aws.amazon.com/rds/pricing/ as the exact per-GB rate for Multi-AZ differs from Single-AZ. IOPS and throughput provisioned on gp3 Multi-AZ instances are also billed at the applicable Multi-AZ rate per provisioned unit.

AWS RDS console gp3 volume showing 500 GB allocated, 3000 IOPS free at baseline, 8000 total IOPS with cost for 5000 additional IOPS, and 300 MiB/s throughput with per-MB/s charge for 175 MiB/s above the 125 baseline.

io1 Storage: Per-IOPS Billing From the First IOPS

Provisioned IOPS SSD (io1) is the legacy high-performance storage tier. Unlike gp3, io1 has no free IOPS baseline. Every provisioned IOPS on io1 is billed at the per-IOPS rate from the first IOPS. This fundamentally changes the cost structure for workloads comparing gp3 with additional IOPS versus io1.

io1 storage rate

$0.125 per GB-month for Single-AZ RDS instances (US East N. Virginia). Source: AWS official pricing page example: io1 Dedicated Log Volume at ‘$0.125 x 1024 GiB’ for Single-AZ. This is $0.01/GB higher than gp3 at $0.115/GB-month.

io1 IOPS rate

$0.10 per provisioned IOPS-month for Single-AZ RDS instances. Source: AWS official pricing page example: ‘200 IOPS x $0.10/IOPS = $20’ and ‘$0.10 x 3000 IOPS, or $428/month’ total for 1024 GiB io1 at 3000 IOPS. Every IOPS you provision on io1 is billed at $0.10/month — there is no included baseline.

io1 Multi-AZ storage and IOPS rates

For Multi-AZ RDS deployments with io1 storage: $0.25 per GB-month and $0.20 per provisioned IOPS-month. Source: AWS official pricing page example: ‘Multi-AZ with one standby, it would cost you $0.25 x 1024 GiB plus $0.20 x 3000 IOPS, or $856/month.’ This is exactly double the Single-AZ rate — both the per-GB and per-IOPS rates double for Multi-AZ.

The io1 vs gp3 break-even IOPS calculation

The break-even point where io1 costs less than gp3 with additional IOPS provisioned is a function of the IOPS level required. Below are the cost components per TB per month for each option, excluding compute costs.

For gp3 at the baseline (3,000 IOPS, 125 MB/s): $0.115/GB x 1,024 GB = $117.76/month per TB. All IOPS included in this rate.

For io1 at 3,000 IOPS: $0.125/GB x 1,024 GB = $128/month storage, plus 3,000 x $0.10 = $300/month IOPS. Total: $428/month per TB. gp3 at the same IOPS level costs $117.76/month. io1 at 3,000 IOPS is nearly four times more expensive than gp3 at the same IOPS level.

For gp3 at 10,000 IOPS: $117.76/month storage, plus (10,000 – 3,000) x $0.20 = $1,400/month IOPS. Total: $1,517.76/month per TB.

For io1 at 10,000 IOPS: $128/month storage, plus 10,000 x $0.10 = $1,000/month IOPS. Total: $1,128/month per TB.

At 10,000 IOPS, io1 ($1,128) is cheaper than gp3 with provisioned IOPS ($1,517.76) per TB. The crossover point is approximately 6,500-7,000 IOPS per TB — above this level, io1 becomes more cost-effective than gp3 with additional IOPS. Verify current exact rates at aws.amazon.com/rds/pricing/ before calculating — rates change.

The practical guidance: if your database consistently requires above approximately 7,000 IOPS per TB of storage, io1 or io2 may be more cost-effective than gp3 with additional IOPS provisioned. Below 7,000 IOPS per TB, gp3 is almost always cheaper. For high-IOPS, high-throughput databases where you would also provision gp3 throughput above 125 MB/s, the break-even shifts. Run your specific IOPS and throughput requirements through the AWS Pricing Calculator at calculator.aws/createCalculator/RDS for an exact comparison. Rates change — verify before purchasing.

Banner

io2 Block Express: Same Price as io1, Dramatically Better Performance

io2 Block Express is the current recommended option for mission-critical, high-performance database workloads. It is billed at the same rate as io1 but delivers performance characteristics that io1 cannot match. From AWS official documentation: in terms of pricing and billing, io1 volumes and io2 Block Express storage volumes are billed at the same rate.

io2 vs io1: what you get at the same price

Durability: io2 Block Express provides 99.999% durability, compared to io1 at 99.9%. This represents a 100x improvement in durability for the same per-GB and per-IOPS cost.

Maximum IOPS: io2 Block Express supports up to 256,000 provisioned IOPS per volume, compared to io1 which supports lower maximums depending on volume size and instance type. io2 also supports up to 1,000 IOPS per GiB of provisioned storage (versus a lower ratio on io1).

Latency: io2 Block Express delivers consistent sub-millisecond latency. AWS official testing shows io2 Block Express delivered up to 66% lower disk latency than gp3 and up to 57% higher throughput than gp3 in benchmark testing.

Migration: you can upgrade from io1 to io2 Block Express online with no downtime. AWS official documentation states this migration can be performed without any performance impact during the migration. Source: AWS official blog, March 2024.

Given that io1 and io2 Block Express are billed at the same rate, there is no financial justification for remaining on io1 on RDS instances where io2 is available. Migrate io1 volumes to io2 Block Express to get better performance at the same cost.

AWS RDS console storage type showing io2 Block Express selected with up to 256000 IOPS and sub-millisecond latency, plus a note confirming online migration from io1 with no downtime.

Magnetic Storage: Deprecated April 30, 2026

Magnetic storage (also called standard) on Amazon RDS is being deprecated. AWS official documentation states: Amazon RDS is deprecating magnetic storage on April 30, 2026.

The timeline from AWS official documentation:

  • After April 29, 2026: Amazon RDS will begin forced migration of magnetic storage volumes to gp3 storage volumes
  • By June 1, 2026: the default storage type when restoring snapshots of magnetic volumes changes to gp3

If you currently have RDS instances on magnetic storage, those volumes are being automatically migrated to gp3. This migration changes your storage billing from magnetic rates to gp3 rates. AWS recommends upgrading to gp3 or io2 before the forced migration begins.

Magnetic storage has specific limitations that make it unsuitable for ongoing production use beyond the deprecation: it does not allow storage scaling when using the SQL Server database engine, and it does not allow conversion to a different storage type when using the SQL Server database engine. For SQL Server users specifically, you cannot resize magnetic storage and cannot migrate away from it using the standard modify operation — only instance replacement or snapshot restore to a new instance with gp3 storage provides an escape path.

Urgent action for magnetic storage users: if any of your RDS instances are on magnetic storage, migrate them to gp3 before the forced migration begins. For most engines, this is a live modification with no downtime. For SQL Server magnetic storage specifically, check whether the SQL Server engine restriction on converting storage types applies to your instance. If it does, you may need to restore from a snapshot to a new gp3 instance to migrate storage type. Source: AWS official RDS storage documentation.

Also read: RDS vs Self-Managed Database on EC2

gp2 Storage: What It Was and Why You Should Be on gp3

gp2 is the predecessor to gp3. It was the previous default RDS storage type and is still available for existing instances. AWS official documentation recommends gp3 for any new storage needs. The key difference between gp2 and gp3 that matters for cost: on gp2, IOPS scale with volume size (3 IOPS per GB, with a minimum of 100 IOPS). On gp3, IOPS are provisioned independently of storage size and a fixed 3,000 IOPS baseline is included at no extra charge regardless of volume size.

For a 100 GB gp2 volume, IOPS scale to 300 IOPS (100 GB x 3 IOPS/GB). For a 100 GB gp3 volume, IOPS are 3,000 IOPS baseline regardless of size. gp3 provides 10x more included IOPS than gp2 at the same storage size, at lower per-GB cost. The migration from gp2 to gp3 is a live operation on RDS that can be performed without instance downtime.

If you are still on gp2, migrating to gp3 is the simplest storage cost and performance improvement available on RDS today.

Dedicated Log Volumes: When to Use Them and What They Cost

A Dedicated Log Volume (DLV) is a separate storage volume specifically for database transaction logs, independent of the volume containing database tables. DLVs are available for Provisioned IOPS storage types (io1 and io2 Block Express) only — they are not available for gp2 or gp3.

DLVs are created with a fixed size of 1,024 GiB and 3,000 Provisioned IOPS. The cost is the same as a data volume with those specifications. From AWS official pricing: an io1 Dedicated Log Volume for Single-AZ in US East (N. Virginia) costs $0.125 x 1,024 GiB plus $0.10 x 3,000 IOPS = $128 + $300 = $428/month. For Multi-AZ, the same DLV costs $0.25 x 1,024 GiB plus $0.20 x 3,000 IOPS = $256 + $600 = $856/month.

When to use DLVs: DLVs are ideal for databases with large allocated storage, high IOPS requirements, or latency-sensitive workloads. Separating the transaction log from the data volume allows log writes to avoid I/O contention with data reads and writes. For high-concurrency OLTP databases, DLVs can reduce write latency and improve throughput. DLVs are supported with Multi-AZ deployments — when Multi-AZ is enabled, a DLV is created for both primary and standby.

DLV considerations: DLVs add a fixed $428/month (Single-AZ io1) or $856/month (Multi-AZ io1) to your RDS storage costs. Evaluate whether the performance benefit justifies this cost against the alternative of simply provisioning more IOPS on your main data volume.

Backup Storage: What the Free Tier Covers and What It Does Not

Automated backup storage up to 100% of your provisioned DB storage size is included at no additional charge. This means a 1 TB RDS instance receives 1 TB of automated backup storage for free. Source: AWS official RDS pricing documentation.

Manual database snapshots: snapshots retained beyond the automated backup window are billed at the standard backup storage rate. Manual snapshots stored in S3 are billed at approximately $0.095/GB-month in US East (N. Virginia).

Snapshot export: exporting an RDS snapshot to S3 in Parquet format is billed per GB of snapshot size. This is separate from the storage cost of the data at rest in S3 after export.

Backup storage considerations for Multi-AZ: backups are taken from the standby instance for Multi-AZ deployments, avoiding I/O suspension on the primary. The backup storage free tier still applies to Multi-AZ instances — you receive backup storage equal to the provisioned storage of one instance (not two, even though Multi-AZ runs two instances).

Storage Scaling: What Changes Online and What Requires Downtime

RDS supports online storage scaling for most volume configurations. When you increase allocated storage, RDS expands the volume without downtime. After the storage expansion completes, there is an optimization phase that can take several hours for large volumes — during this phase, the instance remains fully available but storage performance may be slightly reduced.

IOPS scaling on gp3: increasing or decreasing provisioned IOPS above the 3,000 baseline is a live operation that takes effect quickly.

Storage type migration: migrating from gp2 to gp3, or from io1 to io2 Block Express, is a live operation on RDS with no downtime. The migration from magnetic storage to gp3 follows the same approach for most engines. SQL Server magnetic storage is the exception — SQL Server does not support online storage type conversion from magnetic, requiring snapshot restore to a new gp3 instance.

Reducing allocated storage is not supported on RDS. You can increase storage but not decrease it. This makes over-provisioning storage an irreversible cost decision. Size storage to actual data requirements plus a growth buffer, not to the maximum your budget allows.

Storage Cost Monitoring and Right-Sizing

RDS storage costs are often a secondary consideration compared to compute, but for large databases or high-IOPS configurations, storage charges can rival or exceed the instance rate. Two metrics in Amazon CloudWatch reveal storage utilization:

FreeStorageSpace: the amount of available storage space on the DB instance in bytes. Alert when FreeStorageSpace drops below 10-15% of allocated storage to prevent storage-full events. High FreeStorageSpace relative to allocated storage (consistently above 50%) suggests over-provisioned storage that could be downsized — though on RDS, downsizing is not possible, making right-sizing at provision time critical.

ReadIOPS and WriteIOPS: the average number of disk I/O operations per second. Compare average and peak ReadIOPS and WriteIOPS to your provisioned IOPS level. If peak IOPS regularly approach the provisioned level, increase provisioned IOPS to avoid throttling. If average IOPS are consistently well below provisioned, reduce provisioned IOPS to eliminate unnecessary charges.

For gp3 volumes, monitoring the gap between your average IOPS and 3,000 (the included baseline) is the quickest way to identify over-provisioning of additional IOPS. If average WriteIOPS is consistently below 3,000 but you have provisioned 8,000, you are paying $1,000/month extra (5,000 x $0.20) for IOPS you are not using.

Also read: RDS Reserved Instances: complete guide to RI discounts for all RDS engines (live)

The Optimize IOPS Action Most Teams Never Take

Most RDS cost optimization guides focus on Reserved Instances and instance right-sizing. Storage IOPS optimization is underweighted. Amazon RDS supports adjusting provisioned IOPS on gp3 volumes dynamically without downtime. This means IOPS can be reduced during predictably low-activity periods and increased before anticipated peaks.

AWS official documentation describes this explicitly in the context of seasonal and monthly workload patterns: by right-sizing IOPS and throughput levels to your workload’s typical cycles, you can reduce Amazon RDS spend while still getting great performance when you need it most. The specific recommendation: automate IOPS adjustments using the AWS CLI or RDS API, scaling IOPS up before peak periods and down after.

The cost recovery is immediate — provisioned IOPS charges are billed per provisioned IOPS-month. Reducing from 8,000 to 3,000 IOPS on a Single-AZ gp3 instance saves 5,000 x $0.20 = $1,000/month. If those peak IOPS are only needed for one week per month, adjusting IOPS dynamically saves approximately $750/month versus keeping 8,000 IOPS provisioned continuously.

How Usage.ai Optimizes RDS Storage Costs

Usage.ai covers two categories of RDS storage cost optimization that most teams do not address systematically.

Over-provisioned IOPS identification: Usage.ai pulls CloudWatch ReadIOPS, WriteIOPS, and FreeStorageSpace for every RDS instance and compares provisioned IOPS to actual peak and average consumption. Instances where average IOPS are more than 30% below provisioned levels are flagged with the exact monthly saving from reducing provisioned IOPS to the peak usage level plus a 20% buffer. For gp3 at $0.20/IOPS-month on Single-AZ, the savings per over-provisioned instance are immediate and require only a modify operation with no downtime.

io1 to io2 upgrade identification: Usage.ai flags all RDS instances still running io1 storage. Since io2 Block Express is billed at the same rate as io1 with 99.999% durability versus io1’s 99.9%, the migration is always correct for eligible instances and improves durability and performance at zero additional cost. The migration is online with no performance impact.

Storage-compute right-sizing interaction: when Usage.ai identifies an opportunity to downsize the RDS instance class, it evaluates whether the smaller instance class supports the current provisioned IOPS on io1/gp3. Some smaller instance classes have lower maximum supported IOPS. Usage.ai checks for this interaction before generating a right-sizing recommendation to avoid recommending an instance class that cannot sustain the current storage performance configuration.

Fee: percentage of realized savings only. $0 if Usage.ai saves nothing. 30-minute setup, billing-layer access only.Banner

Frequently Asked Questions

1. What does RDS gp3 storage cost per GB?

$0.115 per GB-month for Single-AZ instances in US East (N. Virginia), June 2026. This includes 3,000 IOPS and 125 MB/s throughput at no additional charge. Note this is different from Amazon EBS gp3, which is $0.08/GB-month. RDS gp3 is priced higher because it includes the RDS managed storage layer. Additional IOPS above 3,000 are billed at $0.20 per provisioned IOPS-month for Single-AZ RDS. Additional throughput above 125 MB/s is $0.08 per provisioned MB/s-month.

 

2. How much does RDS io1 storage cost per IOPS?

$0.10 per provisioned IOPS-month for Single-AZ RDS instances in US East (N. Virginia). Source: AWS official pricing page example with io1 at ‘$0.10 x 3000 IOPS’. This rate applies to every provisioned IOPS on io1 from the first one — there is no free baseline on io1. The io1 storage rate is $0.125/GB-month Single-AZ, $0.25/GB-month Multi-AZ. Multi-AZ io1 IOPS are $0.20 per provisioned IOPS-month. io2 Block Express is billed at the same rates as io1 but provides higher performance and durability.

 

3. What is the difference between io1 and io2 Block Express on RDS?

Same price, better performance. io2 Block Express is billed at the same rate as io1 per GB and per IOPS. Performance differences: io2 supports up to 256,000 IOPS versus io1’s lower maximum, provides 99.999% durability versus io1’s 99.9%, delivers consistent sub-millisecond latency, and supports up to 1,000 IOPS per GiB of provisioned storage. AWS official testing shows io2 Block Express delivers up to 66% lower disk latency and up to 57% higher throughput than gp3. You can migrate from io1 to io2 online with no downtime or performance impact.

 

4. What is the maximum IOPS for RDS gp3?

Up to 64,000 IOPS for RDS gp3 volumes (for volumes large enough to support provisioned IOPS above baseline). The baseline included with every gp3 volume is 3,000 IOPS at no additional charge. Additional IOPS can be provisioned in the range of 12,000 to 64,000 for eligible volume sizes — volumes below 200 GB (Oracle) or 400 GB (MySQL, PostgreSQL, MariaDB, Db2) cannot provision additional IOPS beyond the fixed 3,000 baseline. SQL Server gp3 has no minimum volume size for IOPS provisioning. The instance class must support the provisioned IOPS level. Source: AWS official RDS storage documentation.

 

5. Is RDS magnetic storage being discontinued?

Yes. Amazon RDS is deprecating magnetic storage on April 30, 2026. After April 29, 2026, RDS will begin forced migration of magnetic volumes to gp3 storage. The default storage type when restoring snapshots of magnetic volumes changes to gp3 by June 1, 2026. AWS recommends migrating to gp3 or io2 Block Express before the forced migration. For SQL Server instances on magnetic storage, the migration requires a snapshot restore to a new gp3 instance (SQL Server does not support online storage type conversion from magnetic). Source: AWS official RDS storage documentation.

 

6. When is gp3 cheaper than io1 on RDS?

For most IOPS levels below approximately 7,000 IOPS per TB, gp3 is cheaper than io1. The calculation: gp3 at $0.115/GB includes 3,000 IOPS free. io1 at $0.125/GB charges $0.10/IOPS from the first IOPS. At 3,000 IOPS per 1 TB, gp3 total = $117.76/month (storage only), io1 total = $128 + $300 = $428/month. At 10,000 IOPS per 1 TB, gp3 total = $117.76 + (7,000 x $0.20) = $1,517.76/month, io1 total = $128 + $1,000 = $1,128/month. Above approximately 7,000 IOPS per TB, io1 becomes cheaper than gp3 with provisioned IOPS. Run your exact configuration through the AWS Pricing Calculator at calculator.aws.

Cut cloud cost with automation
Latest from our blogs