awsstreamingcost-estimationcdn

How much does it cost to run a video streaming service?

A streaming service with a 10,000 hour library and a million viewing hours a month costs about 33,680 dollars on AWS, and 89 percent of that is CDN egress. Here is the breakdown, and why bitrate is the only number that really matters.

The C3X Team··8 min read

Quick answer

A video streaming service with a 10,000 hour library, 200,000 monthly viewers, and 1 million viewing hours a month costs roughly 33,680 dollars a month on AWS, which is about 0.034 dollars per viewing hour. CDN egress alone is 30,003 dollars, or 89 percent of the total, because 1 million hours at an average 1.5 Mbps adaptive bitrate is 675 TB of delivery. Transcoding is 1,800 dollars, storage across the ladder and originals is 789 dollars, and everything else (origin, API, database, logs) is under 900 dollars combined. Cutting average bitrate by 20 percent saves about 6,000 dollars a month; nothing else comes close.

Streaming is the clearest example of a workload where one line item is the whole business model. Compute, databases, and APIs are noise. What you pay for is bytes leaving the network, and the lever that controls bytes is bitrate. Here is a complete costing so the proportions are unmistakable.

The workload we are pricing

Assume a subscription video service in us-east-1 with a 10,000 hour catalog, adding 500 hours a month. There are 200,000 monthly active viewers who together watch 1 million hours. Delivery uses adaptive bitrate with a five-rendition ladder from 400 kbps up to 5 Mbps; the weighted average across devices and network conditions is 1.5 Mbps, which works out to about 675 MB per viewing hour. Content is stored once in the ladder plus a mezzanine original kept for future re-encodes.

The monthly breakdown

ComponentSpecificationMonthly cost
CDN egress675 TB tiered from 0.085 down to 0.030 per GB$30,003.20
Transcoding500 hours (30,000 min) at about 0.06/min for a 5-rendition HD ladder$1,800.00
Ladder storage30 TB S3 Standard at 0.023/GB$706.56
Mezzanine originals20 TB Glacier Instant Retrieval at 0.004/GB$81.92
Origin and API tier4 x m5.large on ECS$280.32
Load balancerALB plus LCU$60.00
Catalog databaseRDS db.m5.large plus 200 GB$147.83
Playback telemetryDynamoDB on-demand, 100M writes plus storage$150.00
DRM and packagingLicense service and key delivery$200.00
Logs and analytics500 GB ingest plus retention$250.00
Total$33,679.83

How 675 TB becomes 30,000 dollars

CloudFront pricing in North America and Europe is tiered, and at streaming volumes you traverse every tier. The first 10 TB bills at 0.085 per gigabyte, the next 40 TB at 0.080, the next 100 TB at 0.060, the next 350 TB at 0.040, and everything beyond 500 TB at 0.030.

TierVolumeRateCost
First 10 TB10,240 GB$0.085$870.40
Next 40 TB40,960 GB$0.080$3,276.80
Next 100 TB102,400 GB$0.060$6,144.00
Next 350 TB358,400 GB$0.040$14,336.00
Above 500 TB179,200 GB$0.030$5,376.00
Total691,200 GBblended $0.0434$30,003.20

The blended rate of 0.0434 per gigabyte is roughly half the list rate, which is the mechanical reason streaming unit economics improve with volume and why committed-use CDN contracts matter more than anything else in this business. At sustained volume, negotiated rates well below the public tiers are the norm, and a 20 percent contract discount here is worth 6,000 dollars a month.

Bitrate is the only lever that matters

ChangeNew egressNew CDN costMonthly saving
Baseline (1.5 Mbps average)675 TB$30,003-
Better encoder, 20% fewer bits540 TB$24,000$6,003
Per-title encoding, 30% fewer bits473 TB$21,000$9,003
Cap mobile ladder at 2 Mbps608 TB$27,000$3,003

A single encoder upgrade that delivers the same perceptual quality at 20 percent lower bitrate saves more money than the entire rest of the infrastructure costs. That is why streaming engineering organizations invest disproportionately in codecs and per-title encoding ladders: an extra 1,000 dollars a month of transcoding compute that reduces delivery bitrate by 25 percent returns 7,500 dollars.

What storage really costs

A 10,000 hour library stored as a five-rendition ladder at roughly 3 GB per hour total is 30 TB, which is 706.56 dollars a month. The mezzanine originals at 2 GB per hour are another 20 TB, kept in an archive tier at 81.92 dollars. Storage is therefore 2.3 percent of the bill. Teams sometimes spend weeks onstorage class tuning for a library while ignoring delivery, which is optimizing the wrong two percent. The exception is very long tail catalogs where 80 percent of titles get almost no views; moving those renditions to an infrequent-access tier is nearly free to do and saves a few hundred dollars.

The number to track

At 33,680 dollars for 1 million viewing hours, the unit cost is 0.034 dollars per viewing hour and 0.168 dollars per monthly viewer. If subscriptions are 9.99 dollars and the average subscriber watches 20 hours a month, delivery costs 0.67 dollars against 9.99 dollars of revenue, a 93 percent gross margin before content licensing. Heavy viewers are the risk: a subscriber watching 150 hours a month costs 5.10 dollars to serve. Price the delivery architecture from Terraform against theresource catalog, then track cost per viewing hour monthly, because that single ratio tells you whether the product is getting more or less profitable.

FAQ

How much does it cost to run a video streaming service?

About 33,680 dollars a month on AWS for a service with a 10,000 hour library, 200,000 monthly viewers, and 1 million viewing hours delivered at an average 1.5 Mbps. CDN egress accounts for 30,003 dollars of that, transcoding 1,800 dollars, storage 789 dollars, and all compute, database, and logging under 900 dollars combined. Unit cost is roughly 0.034 dollars per viewing hour.

Why is CDN egress 89 percent of streaming costs?

Because video is pure bytes. One million viewing hours at 1.5 Mbps average adaptive bitrate is about 675 MB per hour, or 675 TB a month. Even at CloudFront's volume-tiered rates, which blend down to about 0.0434 per gigabyte at that scale, delivery is 30,003 dollars. Compute and storage do not scale with viewing the way egress does, so they stay comparatively trivial.

How do I reduce video streaming infrastructure cost?

Reduce bitrate. A better encoder delivering equal perceptual quality at 20 percent fewer bits saves about 6,000 dollars a month on this workload; per-title encoding ladders at 30 percent savings are worth 9,000 dollars. Capping the mobile ladder saves another 3,000. Negotiated CDN commitments are the second lever. Storage tuning, by contrast, addresses only 2.3 percent of the bill.

What does video transcoding cost?

About 1,800 dollars a month to encode 500 new hours into a five-rendition HD ladder, at roughly 0.06 per source minute across all outputs. That is 5.4 percent of the total bill, and it is worth spending more on. An extra 1,000 dollars of encoding compute that cuts delivery bitrate by 25 percent returns roughly 7,500 dollars in reduced CDN egress.

What is a good cost per viewing hour for streaming?

Around 0.034 dollars per viewing hour at this scale and bitrate, which means a 9.99 dollar subscriber watching 20 hours a month costs about 0.67 dollars to serve, a 93 percent gross margin before content licensing. The risk is heavy viewers: someone watching 150 hours a month costs 5.10 dollars. Tracking cost per viewing hour, not per subscriber, is what surfaces that risk.

How does C3X help with streaming architecture cost?

C3X prices your infrastructure from Terraform against a live catalog, including the CDN distribution, origin fleet, storage tiers, and transcoding resources. For a workload where one line is 89 percent of the bill, seeing the delivery configuration costed before deployment, and seeing how storage class and origin choices change it, keeps the design honest about where money actually goes.

What to do next

Price your delivery architecture before you launch. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.