← All guides

The Windows licensing premium: what it actually costs

Published October 14, 2025

“Windows costs more” is true and useless. It doesn’t tell you whether the premium is a rounding error or a second instance’s worth of spend, whether it grows with instance size, or whether picking a cheaper family dodges any of it. This guide pulls the actual Windows and Linux prices for the same instance types from our dataset and works out what the premium really is, using the instance explorer and comparison tool to check your own fleet against it.

The premium is a flat fee per vCPU, not a percentage

Every EC2 instance detail page (e.g. m7i.xlarge) shows Linux pricing. Switch the operating system and AWS adds a license charge on top. Line up that charge across families in us-east-1, on-demand, same size (4 vCPU):

Instance vCPU Linux Windows Premium ($) Premium (%)
m5.xlarge 4 $0.1920 $0.3760 $0.1840 95.8%
c5.xlarge 4 $0.1700 $0.3540 $0.1840 108.2%
m7i.xlarge 4 $0.2016 $0.3856 $0.1840 91.3%
c7i.xlarge 4 $0.1785 $0.3625 $0.1840 103.1%
r7i.xlarge 4 $0.2646 $0.4486 $0.1840 69.5%
m8i.xlarge 4 $0.2117 $0.3957 $0.1840 86.9%
c8i.xlarge 4 $0.1874 $0.3714 $0.1840 98.2%
r8i.xlarge 4 $0.2778 $0.4618 $0.1840 66.2%

Every one of these is a 4-vCPU instance, and every one carries the exact same $0.1840/hr Windows charge ($0.046 per vCPU-hr), regardless of generation (5th through 8th) or family (general purpose, compute, memory). The percentage swings from 66% to 108% across the same table, but that’s an artifact of the Linux base price, not a different license fee. Compute-optimized c-family instances show the worst percentage because they have the cheapest Linux price to divide into; memory-optimized r-family looks “better” only because its Linux price is already higher. The dollar figure is the real number. The percentage just tells you how good your Linux instance choice was.

This matches how real-world Windows Server licensing works: AWS is passing through a per-core charge, and EC2’s vCPU is the unit it’s metered against.

Does it scale with instance size?

If the premium is really per-vCPU, it should scale linearly with size the same way Linux pricing does. The m7i family, us-east-1, on-demand:

Size vCPU Linux Windows Premium Per-vCPU
m7i.large 2 $0.1008 $0.1928 $0.0920 $0.0460
m7i.xlarge 4 $0.2016 $0.3856 $0.1840 $0.0460
m7i.2xlarge 8 $0.4032 $0.7712 $0.3680 $0.0460
m7i.4xlarge 16 $0.8064 $1.5424 $0.7360 $0.0460
m7i.8xlarge 32 $1.6128 $3.0848 $1.4720 $0.0460
m7i.16xlarge 64 $3.2256 $6.1696 $2.9440 $0.0460
m7i.24xlarge 96 $4.8384 $9.2544 $4.4160 $0.0460
m7i.48xlarge 192 $9.6768 $18.5088 $8.8320 $0.0460

Exactly linear, from a 2-vCPU large to a 192-vCPU 48xlarge, a 96x range in size, and the per-vCPU rate never moves. There’s no volume discount and no volume penalty on the license fee, same as the Linux price itself (see right-sizing with $/vCPU-hr for why that’s true on the Linux side too). Consolidating ten Windows xlarges into one Windows 8xlarge doesn’t touch the license bill; it stays $0.046/vCPU-hr no matter how you slice the fleet.

Regions: the dollar holds, the percentage moves

Same instance, different regions, us-east-1 as baseline:

Instance Region Linux Windows Premium Premium %
m7i.xlarge us-east-1 $0.2016 $0.3856 $0.1840 91.3%
m7i.xlarge us-west-2 $0.2016 $0.3856 $0.1840 91.3%
m7i.xlarge eu-west-1 $0.2247 $0.4087 $0.1840 81.9%
m7i.xlarge ap-southeast-1 $0.2520 $0.4360 $0.1840 73.0%

Same pattern as across families: the $0.1840/hr license charge is identical in every region we checked, while the percentage drops as the regional Linux price rises. Don’t budget a Windows migration off a percentage you saw in one region; pull the dollar figure for your actual region on the instance detail pages and multiply by vCPU count.

Windows forecloses Graviton, not just the discount

The Graviton vs. x86 guide already notes that Windows Server isn’t offered on Arm. Worth confirming directly: we checked every Graviton family in the dataset (m6g, c6g, r6g, t4g, m7g, c7g, r7g) and none of them has a single Windows pricing row. Every row for every Graviton instance type is Linux. If your workload needs Windows, arm64 isn’t a smaller discount. It’s not on the table at all.

The real cost of choosing Windows for a workload that could otherwise run arm64 is the license fee stacked on top of the Graviton discount you’re also giving up:

Would-be Graviton instance (Linux) Actual x86 instance (Windows) Multiplier
m7g.xlarge: $0.1632 m7i.xlarge: $0.3856 2.36x
c7g.xlarge: $0.1450 c7i.xlarge: $0.3625 2.50x
r7g.xlarge: $0.2142 r7i.xlarge: $0.4486 2.09x

For a stateless, containerized workload with no Windows-specific dependency, running it on Windows x86 instead of Linux arm64 costs 2 to 2.5 times as much per hour. You’re not just choosing an OS. You’re giving up the cheapest instances in the catalog.

Burstable instances don’t follow the same pattern

The flat-per-vCPU rule holds cleanly across the m/c/r families above, but not on t3, us-east-1:

Instance vCPU Linux Windows Premium Premium %
t3.nano 2 $0.0052 $0.0098 $0.0046 88.5%
t3.micro 2 $0.0104 $0.0196 $0.0092 88.5%
t3.small 2 $0.0208 $0.0392 $0.0184 88.5%
t3.medium 2 $0.0416 $0.0600 $0.0184 44.2%
t3.large 2 $0.0832 $0.1108 $0.0276 33.2%
t3.xlarge 4 $0.1664 $0.2400 $0.0736 44.2%
t3.2xlarge 8 $0.3328 $0.4800 $0.1472 44.2%

Nano through small hold a flat 88.5% premium, then it drops and stays inconsistent through medium and large before the percentage recovers at xlarge and 2xlarge, even though every size here is nominally 2 vCPU except the last two. Whatever AWS’s Windows pricing model is doing on burstable instances, it isn’t the clean per-vCPU adder the standard families show. If you’re running Windows on t3, don’t extrapolate the $0.046/vCPU-hr figure from the tables above; check the exact size on its instance detail page instead. In absolute dollars the burstable premium is small regardless (a few cents an hour), so it rarely matters for cost decisions the way it does at m- and c-family scale.

When Windows is actually required

The license fee is a fixed cost of a real decision, not a tax to always dodge. It’s worth paying when:

Windows is usually the wrong default, rather than usually the wrong choice, when:

Auditing your own fleet

  1. Pull your current Windows instance types and count by type and region in the instance explorer.
  2. Look up each type’s Linux and Windows price on its detail page and compute the per-vCPU premium; if it’s near $0.046/vCPU-hr (standard families) or matches the table above for burstable, you’re seeing the standard license fee, not something regional or family-specific.
  3. Multiply the dollar premium (not the percentage) by hours in a month (730) to see the real monthly cost. A m7i.4xlarge running Windows pays a $0.7360/hr premium: about $537/month, roughly $6,440/year, for that one instance alone. Multiply by fleet size before deciding whether a migration is worth scoping.
  4. For each Windows instance, ask which bucket below it’s actually in, required or default-by-habit, and use the comparison tool to check what the Linux equivalent, and the Graviton equivalent if arm64 is viable, would cost instead.

Making the call

Clear yes on Windows. AD-dependent infrastructure. .NET Framework apps not worth porting. Vendor software confirmed Windows-only. Pay the fee; it’s the cost of the dependency, not a mistake.

Worth a porting test. .NET Framework apps with a realistic Core/5+ migration path. SQL Server workloads where the licensing math and a Linux-hosted alternative haven’t been compared side by side. The savings are the license fee at minimum, and the Graviton discount on top of that if arm64 becomes viable once you’re off Windows.

Stay on Windows for now, but stop adding to it. Fleets that are Windows because they’ve always been Windows, with no active migration bandwidth. Don’t move what’s stable, but default new services to Linux so the fleet doesn’t grow.

Default to Linux. New workloads with no Windows-specific dependency. Anything stateless and containerized. Anything where “Windows” was never really a decision, just what the last engineer used.

Bottom line: the Windows premium on EC2 is a flat ~$0.046/vCPU-hr license fee on standard families that scales exactly linearly with size and holds constant across regions. The percentage you see just reflects how cheap the underlying Linux instance was. It also closes off Graviton entirely, since no Arm family in our dataset carries a single Windows pricing row. Check whether your Windows fleet is there because it has to be, or because nobody’s asked the question since it was provisioned.