EC2 billing schematic: a single instance-hour meter carries $700.80 a month for ten m5.large instances, beside separate EBS, Elastic IP, capacity-reservation and data-transfer meters that add to the same bill
Figure 1. Illustrative schematic. The instance-hour total is one meter, not the bill: storage, addresses, reservations and transfer are billed separately. Run your own numbers in the EC2 Compute Cost Calculator.

The instance-hour gets all the attention—and often accounts for only a fraction of the actual AWS EC2 invoice.

Below are the US East (us-east-1) Linux On-Demand rates for 13 common instance types (from the AWS price list published October 29, 2026) along with their 730-hour monthly cost, followed by the five billing meters the hourly price leaves out: the 60-second floor on short launches, attached EBS volumes on stopped instances, idle Elastic IPs, unused Capacity Reservations, and T-family Unlimited surplus credits.

Quick numbers from the worked model:

  • 10 × m5.large running all month (730 hours): $700.80 at $0.0960 per instance-hour.
  • 10,000 short jobs running 30 seconds each on m5.large: $16.00 for 83.33 hours of actual wall-clock work—because the 60-second minimum floor doubles the billed hours to 166.67.
  • An On-Demand Capacity Reservation for 20 m5.large instances with 12 in use: bills $560.64/month for the 8 idle slots nobody touched.

You can test your own fleet numbers locally in the EC2 Compute Cost Calculator (or read the full teardown on Buildopsy).

1. What the Hourly Rate Actually Buys

An On-Demand rate is a price for runtime, not for work done. AWS describes it as capacity by the hour or second with no long-term commitment, and it does not fall when the CPU sits idle. A ten-instance fleet that serves nothing for a month costs the same as one under load. Utilization changes how many instance-hours you need; it does not change the rate.

The same pricing page separates what the instance charge covers from what it does not: storage, addressing, load balancing, monitoring, and transfer are billed on their own meters.

Scope note: Rates move by Region, operating system, tenancy, purchase model, and instance family. The numbers below use one Region (us-east-1), one OS (Linux), and one purchase model (On-Demand) so every calculation can be checked.

2. Thirteen US East Rates to Anchor Against

These are Linux On-Demand rates for US East (N. Virginia), read from AWS's published EC2 pricing data (published October 29, 2026), covering burstable, general-purpose, compute-optimized, and memory-optimized shapes:

Instance type vCPU Memory USD per instance-hour Monthly at 730 h
t3.micro 2 1 GiB $0.0104 $7.59
t4g.small 2 2 GiB $0.0168 $12.26
t3.small 2 2 GiB $0.0208 $15.18
t4g.medium 2 4 GiB $0.0336 $24.53
t3.medium 2 4 GiB $0.0416 $30.37
c7g.large 2 4 GiB $0.0725 $52.93
c5.large 2 4 GiB $0.0850 $62.05
m5.large 2 8 GiB $0.0960 $70.08
m6i.large 2 8 GiB $0.0960 $70.08
r5.large 2 16 GiB $0.1260 $91.98
c5.xlarge 4 8 GiB $0.1700 $124.10
m5.xlarge 4 16 GiB $0.1920 $140.16
r5.xlarge 4 32 GiB $0.2520 $183.96

(The monthly column is rate × 730 hours, the mean month at 8,760 hours/year.)

Two rows are worth comparing side by side: c7g.large and c5.large both give 2 vCPU and 4 GiB, and the Graviton (c7g.large) option lists at $0.0725 against $0.0850—a difference of $9.13/month per instance, or $912.50/month across 100 instances for the same core and memory count.

3. The 60-Second Floor on Short Launches

Partial instance-hours bill by the second, which usually gets read as "a 30-second job costs 30 seconds." It does not.

The EC2 pricing page states a 60-second minimum, so any launch shorter than a minute bills a full 60 seconds. (SUSE Linux Enterprise Server is the single exception listed: those instances bill a full hour regardless.)

Take 10,000 short CI or batch jobs running 30 seconds each on m5.large:

  • Wall-clock runtime: 10,000 × 30 s = 300,000 s = 83.33 hours
  • Billed runtime at the 60-second floor: 10,000 × 60 s = 600,000 s = 166.67 hours
  • Billed cost: 166.67 × $0.0960 = $16.00 (instead of $8.00)

The floor is the economic argument for batching: launching once for 600 seconds bills 10 minutes, while launching twelve times for 30 seconds bills 12 minutes for 6 minutes of work.

4. What Keeps Billing After StopInstances

Stopping an EC2 instance ends the instance-hour charge, but several attached resources keep their own meters running:

  • Attached EBS volumes bill by provisioned GB-month whether the instance is running or stopped (in one-second increments with the same 60-second minimum).
  • Every in-use and idle Elastic IP address is charged.
  • Load balancers and CloudWatch bill on their own product pages.
  • Auto Scaling itself carries no separate fee—only the instances and monitoring it launches bill normally.

5. Capacity Reservations Bill the Slot, Not Just the Instance

An On-Demand Capacity Reservation is priced exactly like equivalent On-Demand usage. If the reservation is 100% utilized, you pay instance usage and nothing extra. If it is partially used, you pay for the unused portion too.

For 20 reserved m5.large instances with 12 running for a full 730-hour month:

  • Total reservation commitment: 20 × 730 × $0.0960 = $1,401.60
  • Used by running instances: 12 × 730 × $0.0960 = $840.96
  • Billed for idle capacity: 8 × 730 × $0.0960 = $560.64

6. Purchase Options and What "Up To" Means

AWS publishes headline discount ceilings rather than guaranteed rates:

  • Savings Plans: up to 72% off On-Demand in exchange for an hourly spend commitment.
  • Spot Instances: up to 90% off On-Demand in exchange for interruption risk.

At the published 72% ceiling, a $0.0960 m5.large would land at $0.0269/hour ($19.62 across 730 hours)—but that is a maximum ceiling illustration, and actual plan rates depend on term, payment option, and family scope.

7. Burstable Instances (T2 / T3 / T4g) and the Unlimited Credit Bill

T-family instances accumulate CPU credits while idle and spend them when bursting. In Unlimited mode, they can burst past their credit balance, and surplus credits bill per vCPU-hour regardless of instance size or purchase option:

  • T2 and T3 (Linux, RHEL, SLES): $0.05 per vCPU-hour
  • T4g (Linux, RHEL, SLES): $0.04 per vCPU-hour
  • T8i (Linux, RHEL, SLES): $0.06 per vCPU-hour
  • T2 and T3 (Windows / SQL Web): $0.096 per vCPU-hour
  • T8i (Windows / SQL Web): $0.1152 per vCPU-hour

8. Windows & SQL Licences: The Optimize CPUs Lever

Windows and SQL Server images bundle the licence into the hourly instance price. AWS exposes a lever here with no Linux equivalent: Optimize CPUs, which lowers the active vCPU count or disables hyper-threading while keeping the same instance RAM and network tier.

Published savings per vCPU-hour removed:

  • Windows Server: $0.046
  • Windows with SQL Enterprise: $0.421
  • SQL Standard: $0.166
  • SQL Web: $0.063

On an 8-vCPU m5.2xlarge, dropping active vCPUs from 8 to 4 saves 4 × 730 × $0.046 = $134.32/month on the Windows Server licence component alone.

9. Data Transfer Is Aggregated Across Services

Outbound internet transfer is aggregated across EC2, S3, Glacier, RDS, Redshift, SageMaker, SES, SimpleDB, SQS, SNS, DynamoDB, Storage Gateway, CloudShell, and CloudWatch Logs, with a 100 GB/month free outbound allowance across AWS services and Regions (except China and GovCloud). A terabyte leaving an EC2 load balancer and a terabyte leaving an S3 bucket climb the exact same tier ladder (see our S3 pricing teardown and CDN/egress model).

10. Run Your Own Numbers

An EC2 bill is a runtime meter surrounded by meters that do not care whether anything ran: a 60-second floor that doubles short launches, EBS volumes and Elastic IPs that outlive stopped instances, and Capacity Reservations that bill empty slots.

Question for everyone running workloads on EC2: Which "non-instance" meter has surprised you most on a real AWS bill—forgotten EBS volumes on stopped instances, T-family Unlimited surplus credits, NAT Gateway / egress traffic, or idle Elastic IPs?