← All guides

How Compute Savings Plans decide what they cover

Published October 17, 2026

A Compute Savings Plan does not attach to an instance. You commit to spending a fixed number of dollars per hour, at discounted rates, for one or three years. You pay that commitment every hour whether or not there is usage to absorb it, and an hour’s unused commitment cannot be carried into the next.

Each hour, AWS sorts all your eligible usage by discount percentage, highest first, and spends your commitment down that list until the dollars run out. Whatever is left is billed On-Demand. When your commitment is smaller than your eligible usage, the ranking decides which usage that is. The numbers below come from AWS’s own worked example, so you can check the arithmetic against the source.

The order discounts are applied

For each hour, AWS applies pricing in this sequence:

  1. 1

    EC2 Reserved Instances

    Matching instances are covered first. Savings Plans only see what is left.

  2. 2

    EC2 Instance Savings Plans

    One family in one region. Applied before Compute plans because their reach is narrower.

  3. 3

    Compute Savings Plans

    EC2 in any family, size, region, OS or tenancy, plus Fargate and Lambda.

  4. 4

    On-Demand

    Whatever is left after the commitment runs out, at full price.

Inside steps 2 and 3, the plan ranks every eligible line of usage by savings percentage, highest first, and works down the list until the hour's commitment is spent.

With sharing enabled in a consolidated billing family, AWS applies plans first to the owner account’s usage, then to the other accounts’ usage. The ranking described below happens within that sequence, not across all accounts at once.

How usage is ranked

A usage line is one combination of instance type (or Fargate or Lambda resource), region, operating system and tenancy. For every eligible line, AWS compares the Savings Plans rate with the On-Demand rate. That gives a savings percentage per line. Then:

  1. The plan covers the line with the highest savings percentage first.
  2. If two lines tie, the one with the lowest Savings Plans rate goes first.
  3. It keeps going until the usage or the commitment runs out.
  4. Anything uncovered is billed at On-Demand rates.

The commitment is spent in plan-rate dollars. A line that costs $2.80 at the plan rate uses up $2.80 of commitment, even though it would have cost $4.00 On-Demand.

Ranking by percentage rather than by dollars saved makes sense from the commitment’s side. Each commitment dollar buys discount ÷ (1 − discount) dollars of savings:

DiscountSavings per $1 of commitment
30%$0.43
25%$0.33
18%$0.22
15%$0.18
0%$0.00

Highest percentage first gives the most savings for a fixed commitment. A dollar spent on a 30% line saves $0.43. Spent on an 18% line it saves $0.22, however large the 18% line is.

The AWS example, line by line

AWS’s example hour contains four kinds of usage:

The rates are AWS’s illustrative numbers, not real prices. Sorted the way a Compute Savings Plan sorts them, the hour looks like this:

RankUsageOn‑DemandAt the plan rateDiscountCumulative commitment used
1r5.4xlarge × 4$4.00$2.8030%$2.80
2Fargate memory (GB)$6.40$4.8025%$7.60
3Fargate vCPU$16.00$12.0025%$19.60
4m5.24xlarge Windows$10.00$8.2018%$27.80
5Lambda duration$22.50$19.12515%$46.925
6Lambda requests$0.20$0.200%$47.125

Fargate memory and Fargate vCPU tie at 25%. Memory has the lower plan rate ($0.003 per GB against $0.03 per vCPU), so it goes first.

The whole hour costs $47.125 at plan rates against $59.10 On-Demand, so no commitment can do more than that for this hour. Drag the slider to see where a smaller one runs out:

$2.00/hr
  1. 1
    r5.4xlarge × 4Linux, us-east-1
    30% off
    $2.80 to cover
    71% covered
  2. 2
    Fargate memory1,600 GB, us-west-1
    25% off
    $4.80 to cover
    On-Demand
  3. 3
    Fargate vCPU400 vCPU, us-west-1
    25% off
    $12.00 to cover
    On-Demand
  4. 4
    m5.24xlargeWindows, dedicated
    18% off
    $8.20 to cover
    On-Demand
  5. 5
    Lambda duration1.5M GB-seconds
    15% off
    $19.13 to cover
    On-Demand
  6. 6
    Lambda requests1M requests
    0% off
    $0.20 to cover
    On-Demand
Commitment (billed every hour)
$2.00
Commitment with nothing to cover
$0.00
On-Demand charges left over
$56.24
Total for the hour
$58.24
Same usage, all On-Demand
$59.10
Saved
$0.86

AWS's illustrative rates for one hour of usage. 'To cover' is the usage's cost at the plan rate, which is how much commitment it absorbs.

Three of the presets reproduce AWS’s scenarios, in order of increasing commitment:

Spilling is not a failure

Usage at the bottom of the ranking is where a commitment dollar saves the least. In this hour, the first $27.80 of commitment (ranks 1 to 4) saves $8.60. The next $19.325, which takes in Lambda duration and requests, saves $3.375. Covering everything also exposes you to unused commitment whenever usage dips. A commitment that leaves the bottom of the list On-Demand is often the right size.

Reserved Instances and EC2 Instance plans in the same hour

AWS’s other two scenarios add more discounts to the same hour.

ScenarioWhat you holdWhat happensOn‑Demand left
4Two r5.4xlarge Reserved Instances, plus an $18.20/hr Compute planThe RIs cover two r5 instances first. The Compute plan covers the other two (2 × $0.70 = $1.40) and all the Fargate usage ($16.80), spending exactly $18.20.$32.70
5A $3.00/hr EC2 Instance plan for r5 in us-east-1, plus a $16.80/hr Compute planThe EC2 Instance plan takes the r5 usage first at a 40% discount ($2.40). The Compute plan covers Fargate memory ($4.80) and vCPU ($12.00), spending exactly $16.80.$32.70

In scenario 5, the $3.00 EC2 Instance plan is $0.60 larger than the r5 usage it can absorb, and nothing else in the hour is eligible for that $0.60. The hour totals $52.50, against $52.30 in scenario 3, where a single $19.60 Compute plan covers the same usage. Had the EC2 Instance plan been $2.40, the total would be $51.90. A narrow plan gives a better discount, but it cannot absorb a shortfall elsewhere.

How a higher discount changes what gets covered

Put the ranking and the fixed commitment together: when your commitment is smaller than your eligible usage, the lines with the lowest discount percentages spill to On-Demand. At a $19.60 commitment in AWS’s example, the 30% instance is covered and the 18% Windows instance is not.

The percentage is a property of the usage line. AWS sets a Savings Plans rate for each combination of family, region, operating system and tenancy, so the percentage differs per combination. In AWS’s example, the Windows, dedicated-tenancy m5.24xlarge gets 18% against 30% for the Linux r5.4xlarge. Windows discounts are generally lower because the license portion of the price is not reduced by a Compute Savings Plan. (For the size of that license charge, see the Windows licensing premium guide.) Check the plan rates for your own families before assuming a percentage.

Here is a hypothetical with invented percentages. A team runs three workloads in one hour with a $5.00/hr Compute plan:

Hourly commitment: $5.00/hr

  1. 1
    API fleet
    30% off
    $3.50 to cover
    Covered
  2. 2
    Batch workersolder generation
    20% off
    $3.20 to cover
    47% covered
  3. 3
    Windows app tier
    15% off
    $5.10 to cover
    On-Demand
Commitment (billed every hour)
$5.00
Commitment with nothing to cover
$0.00
On-Demand charges left over
$8.13
Total for the hour
$13.13
Same usage, all On-Demand
$15.00
Saved
$1.88

Before: the API fleet is covered first, batch gets the $1.50 that is left, Windows gets nothing. Total $13.13, saved $1.88.

The batch workers sit in the middle of the list and get 47% of their usage covered. The team moves them to a newer instance type whose plan discount is 35% instead of 20%:

Hourly commitment: $5.00/hr

  1. 1
    Batch workersnewer generation
    35% off
    $2.60 to cover
    Covered
  2. 2
    API fleet
    30% off
    $3.50 to cover
    69% covered
  3. 3
    Windows app tier
    15% off
    $5.10 to cover
    On-Demand
Commitment (billed every hour)
$5.00
Commitment with nothing to cover
$0.00
On-Demand charges left over
$7.57
Total for the hour
$12.57
Same usage, all On-Demand
$15.00
Saved
$2.43

After: batch moves to rank 1 and is fully covered. Total $12.57, saved $2.43.

Batch moves to rank 1 and is fully covered. The bill drops from $13.13 to $12.57, about 4%, because the same $5.00 now goes to higher-discount usage. The API fleet falls from fully covered to 69% covered: with a fixed commitment, one workload’s gain is another’s loss. If the commitment exceeds your eligible usage, ranking changes nothing, because everything is covered anyway.

This example holds the On-Demand price at $4.00 for both instance types to isolate the ranking effect. A real swap also changes the On-Demand price, and a 35% discount on an expensive instance can cost more than 20% off a cheaper one. Judge a move by the plan rate for the work you need done. The higher percentage matters for where the usage lands in the ranking.

Checks before you buy or migrate