Savings plans against reserved instances: what the flexibility costs
Published 2026-10-25 · Prose last reviewed 2026-10-25 · Figures computed from the compute catalogue dated 2026-10-25
A FinOps guide by OptimNow · list prices from the static OptimToken compute catalogue
AWS and Azure each sell two ways to commit to compute. One is locked to an instance family in one region: AWS calls it a Standard Reserved Instance, Azure a reservation. The other is a promise to spend a fixed amount an hour, and it follows the workload across families and regions: a Compute Savings Plan on AWS, a savings plan for compute on Azure. Both clouds publish the committed hourly rate for every size. This guide reads those rates off the OptimToken compute catalogue, 69 rows across AWS and Azure in US East. It measures what each instrument takes off, what the flexible one gives up against the locked one, what that gap buys, and the utilisation below which neither pays.
How the discount is measured here
Each row of the catalogue carries an on-demand hourly rate and up to four committed rates: the savings plan and the reserved rate, at 1 year and at 3 years. All are no upfront, Linux, US East. The discount is 1 minus the committed rate over the on-demand rate, per row. The AWS figures come from AWS's Compute Savings Plan price file and its Pricing API, the Azure figures from Azure's retail price API. Each committed rate is the one a buyer sees on the cloud's own price list. GCP (22 rows) and Alibaba (13 rows) are left out. The catalogue's commitment figures for them are typed estimates rather than rates read from the provider's list, and the compute table marks them as such. Upfront payment and AWS's EC2 Instance Savings Plan are not in the catalogue.
What each instrument takes off
On AWS, over 51 rows, the Compute Savings Plan takes a median 27.4% off the on-demand rate at 1 year and 50.0% at 3 years. The Standard Reserved Instance takes 37.0% and 56.7%. Row by row, on the 50 rows carrying both, the lock pays 9.4 points more at 1 year and 6.5 at 3.
On Azure, over 18 rows, the savings plan for compute takes a median 32.0% off the on-demand rate at 1 year and 53.4% at 3 years. The reservation takes 41.0% and 60.5%. Row by row, on the 13 rows carrying both, the lock pays 8.7 points more at 1 year and 7.9 at 3.
The order holds on both clouds: the plan at 1 year, the lock at 1 year, the plan at 3 years, the lock at 3 years. The 3-year plan sits above the 1-year lock. A team that cannot name the instance family it will run in 2 years still has a committed instrument that beats a 1-year reservation. The third year adds 22.7 points on AWS and 21.9 points on Azure to the plan, and 19.8 and 21.0 to the locked instrument.
The reserved discount depends on the family
The reserved instance discount on AWS is not one number. At 1 year,
11 families take 36.4% to 37.4% off:
c5, c5a, c6g, m5, m5a, m6g, r5, r6g, t3, t3a, t4g. The other 10 take 33.6% to 34.1%:
c6a, c6i, c7g, m6a, m6i, m7g, m7i, r6a, r6i, r7g. The step between the two groups is 2.3 points. The savings plan does not split the same way: its 1-year discount runs from
26.4% to 28.3% across all of them.
The reservation discount on Azure is not one number. At 1 year,
4 families take 41.0% to 41.1% off:
Dpsv5, Easv5, Epsv5, Esv5. The other 2 take 38.3%:
Dasv5, Dsv5. The step between the two groups is 2.7 points. The savings plan does not split the same way: its 1-year discount runs from
31.3% to 32.7% across all of them.
A migration between the two groups is costed off the row, not the median.
Accelerated shapes are discounted on their own terms. On p3.2xlarge (AWS, $3.06 an hour) no savings plan rate is published, and the reserved instance takes 37.0%. On g5.xlarge (AWS, $1.01 an hour) the savings plan takes 21.3% off at 1 year, against 27.5% on the cloud's CPU families, and the reserved instance takes 37.0%. On NC6s_v3 (Azure, $3.06 an hour) the savings plan takes 26.7% off at 1 year, against 32.2% on the cloud's CPU families, and the catalogue carries no reservation for it in US East. A GPU
reservation also buys the capacity, which on a scarce shape is the reason to hold one. The plan
buys the price alone.
Worked example: one shape, two clouds
Both clouds list the same shape at the same on-demand rate: m5.2xlarge on AWS and D8s_v5 on Azure, 8 vCPUs and 32 GB, at $0.3840 an hour on both. The annual figure is a fleet of 10, running all 8,760 hours of the year.
| Rate | AWS: m5.2xlarge | Azure: D8s_v5 |
|---|---|---|
| On-demand | $0.3840 $33,638 a year | $0.3840 $33,638 a year |
| Compute Savings Plan / savings plan for compute, 1 year | $0.2820 26.6% off · $24,703 a year | $0.2633 31.4% off · $23,065 a year |
| Standard Reserved Instance / reservation, 1 year | $0.2420 37.0% off · $21,199 a year | $0.2369 38.3% off · $20,752 a year |
| Compute Savings Plan / savings plan for compute, 3 years | $0.1950 49.2% off · $17,082 a year | $0.1767 54.0% off · $15,479 a year |
| Standard Reserved Instance / reservation, 3 years | $0.1660 56.8% off · $14,542 a year | $0.1517 60.5% off · $13,289 a year |
Azure's savings plan discounts this shape by 4.9 points more than AWS's at 1 year. The step from the flexible instrument to the locked one is 10.4 points on AWS and 6.9 on Azure. On the fleet of 10 that step is worth $3,504 a year on AWS and $2,313 on Azure.
What the premium buys
The gap between the two instruments is the price of four freedoms, and the rate card prices none of them on its own. A savings plan follows the committed spend to any instance family, any size, any region and any operating system. On AWS a Compute Savings Plan also covers Fargate and Lambda, and on Azure a savings plan for compute covers Container Instances and App Service. A reserved instance or reservation is held to one family in one region for the whole term, flexible on size inside the family and on nothing else. The lock buys one thing the plan does not: a zonal Standard Reserved Instance reserves capacity on AWS, which on a scarce GPU shape is the reason to hold one. A savings plan reserves capacity on neither cloud.
The exit terms are the other half of the price. A Standard Reserved Instance can be sold on AWS's marketplace, except by a customer under an enterprise discount programme since January 2024, and a Convertible one can be exchanged for another family during the term. An Azure reservation can be exchanged without a fee until 1 February 2027. From that date Microsoft retires exchange for every service a savings plan also covers, and what remains is a refund capped at $50,000 per 12 months and a one-way trade-in to a savings plan. A savings plan on either cloud cannot be cancelled, exchanged or refunded. The ceilings the two clouds advertise, 72% for the lock and 65% for the plan, are 3-year, all-upfront figures. The medians on this page are no-upfront, and the gap they measure is wider than the 7 points between the ceilings.
The direction of travel
Both clouds are moving towards the spend-based instrument. AWS introduced Compute
Savings Plans in November 2019 and sells an EC2 Instance Savings Plan at the Standard
Reserved Instance's own discount, held to a family and a region but flexible on size.
In the AWS estates OptimNow has reviewed, that plan has replaced the Standard Reserved
Instance as the default purchase, which leaves capacity reservation as the reserved
instance's one remaining reason. Microsoft retired 1-year reservations on its older VM
series on 1 July 2026, sells no reservation at all on its v1 to v3 series, and ends
exchange on 1 February 2027. Its own guidance now reads reservations for stable
workloads and savings plans for evolving ones. Google never sold a reserved instance:
its committed use discounts are resource-based, held to a machine series and a region,
or spend-based, the newer and shallower kind. The catalogue carries the retirement. Azure sells no reservation on B1s, B2s, F2s_v2 and F4s_v2 in US East, and all 4 are series Microsoft has stopped reserving, so the savings plan is the only commitment those rows can carry.
Where each instrument stops paying off
A commitment at a discount d bills every hour of the term. It beats on demand once the committed resource is used more than 1 minus d of those hours. A 30% discount needs 70% utilisation, 118 of the 168 hours in a week. For a reserved instance that utilisation is the family's, in the region; for a savings plan it is the committed spend's, across everything the plan covers.
| Instrument (AWS, m5.2xlarge) | Discount | Break-even utilisation | Hours a week |
|---|---|---|---|
| Compute Savings Plan, 1 year | 26.6% | 73% | 123 of 168 |
| Standard Reserved Instance, 1 year | 37.0% | 63% | 106 of 168 |
| Compute Savings Plan, 3 years | 49.2% | 51% | 85 of 168 |
| Standard Reserved Instance, 3 years | 56.8% | 43% | 73 of 168 |
Take m5.2xlarge on a development schedule: 60 hours a week, 12 hours a day on 5 days, switched off the rest of the time. That is 3,120 hours a year, a utilisation of 36%. On demand it costs $1,198 a year. Every commitment costs more. The 1-year Compute Savings Plan bills 8,760 hours at $0.2820, $2,470 a year, 2.1x the on-demand bill. The 3-year Standard Reserved Instance, the deepest discount on the table, still costs $1,454, 1.2x. Run all year, the same instance saves 26.6% on the 1-year Compute Savings Plan and 56.8% on the 3-year Standard Reserved Instance. The hours decide, before the instrument does.
What to do with the gap
The decision is about the floor, not the discount. A team at Crawl maturity, with no hourly usage curve per workload yet, has nothing to commit against. It starts by measuring the P10 of its hourly on-demand usage over 90 days. A team at Walk commits that floor on the flexible instrument, where a wrong guess about the family costs nothing, and keeps the rest on demand. A team at Run layers the two: the lock on the families it will still be running at the end of the term, the plan over the floor it cannot attribute to a family. On the catalogue's medians the lock is worth 9.4 points on AWS and 8.7 points on Azure on the share that stays put, and nothing on the share that moves. On Azure the lock is taken at full conviction on family, region and term: after 1 February 2027 there is no exchange to correct it.
Figures on this page come from the OptimToken compute catalogue of 2026-10-25 and rebuild with it. Spot prices are a market rate with an interruption notice, not a commitment, and are not compared here.
The FinOps reasoning behind this guide comes from OptimNow's open-source practice library: github.com/OptimNow/cloud-finops-skills. If you want your own commitment portfolio sized against the hourly floor you run, OptimNow runs that review.
Questions this guide answers
How much does the AWS Compute Savings Plan save against on-demand?
On the 2026-10-25 OptimToken compute catalogue, a median 27.4% at 1 year and 50.0% at 3 years, no upfront, over 50 Linux rows in US East, from 21.3% to 28.8% at 1 year. The Standard Reserved Instance on the same rows takes 37.0% and 56.7%, 9.4 points more at 1 year and 6.5 at 3.
How much does the Azure savings plan for compute save against on-demand?
On the 2026-10-25 OptimToken compute catalogue, a median 32.0% at 1 year and 53.4% at 3 years, no upfront, over 18 Linux rows in US East, from 26.7% to 32.7% at 1 year. The reservation on the same rows takes 41.0% and 60.5%, 8.7 points more at 1 year and 7.9 at 3.
Why does a savings plan discount less than a reserved instance?
The gap is the price of flexibility. A savings plan follows the committed spend to any instance family, size, region and operating system, and on AWS to Fargate and Lambda; a reserved instance or reservation is held to one family in one region for the term, and only a zonal AWS reserved instance reserves capacity. On the 2026-10-25 OptimToken compute catalogue, measured row by row at 1 year with no upfront payment, the lock pays 9.4 points more on AWS and 8.7 points more on Azure, and 6.5 on AWS and 7.9 on Azure at 3 years.
At what utilisation does a 1-year savings plan break even?
When the committed spend is used for more than 1 minus the discount of the hours in the term. On the 2026-10-25 OptimToken compute catalogue, m5.2xlarge on AWS takes 26.6% off on the 1-year Compute Savings Plan, so the plan breaks even at 73% utilisation, 123 of the 168 hours in a week. The 3-year Standard Reserved Instance at 56.8% off breaks even at 43%, 73 hours. A 60-hour development week, 36% utilisation, is below both.
Does Azure discount a commitment the same way as AWS?
Not to the point. On the 2026-10-25 OptimToken compute catalogue, m5.2xlarge on AWS and D8s_v5 on Azure are the same shape (8 vCPUs, 32 GB) at $0.3840 and $0.3840 an hour on demand. At 1 year the savings plan takes 26.6% off on AWS and 31.4% on Azure; the locked instrument takes 37.0% and 38.3%. At 3 years: 49.2% and 54.0% for the plan, 56.8% and 60.5% locked.
Your real cost also depends on caching and batching, negotiated discounts, marketplace agreements, and the contracts you already have. OptimNow audits exactly that.
Get a FinOps reviewData snapshot: 2026-10-25 · Compare all models · Cloud compute pricing · All guides