⇐ Back to Blog

Bandwidth Is the Cheapest Part of Running a Games Portal. Headcount Is Not.

Published on August 15, 2026

A white-label games portal build almost never dies of bandwidth costs. One full-stack salary buys roughly 1,600 TB of CloudFront egress. Headcount is the bill.

Every build-versus-licence deck I have been shown for a games portal spends most of its pages on infrastructure. Servers, CDN, storage, a diagram with arrows. Then a single line at the bottom that says engineering: 2 FTE, unpriced, as though it were a rounding error. The deck is modelling the cheap half of the problem in detail and the expensive half not at all.

Published rate cards make this easy to check. So let's check it.

💸 Price the Traffic First, Because It Is the Easy Number

Egress is one of the few costs in this business with a public, non-negotiable price list. You do not need a sales call to find out what it costs to serve a game.

Amazon CloudFront's published pay-as-you-go rates, as of August 2026, put data transfer out to the internet at $0.085/GB for the US, Canada, Mexico and Europe on the tier above the free allowance. It climbs from there: $0.109/GB for India, $0.110/GB for South America and the Middle East and Africa region, $0.114/GB for Japan and Australia/New Zealand, and $0.120/GB across most of South East Asia. HTTPS requests bill separately, from $0.0100 to $0.0220 per 10,000 depending on region. There is an always-free tier of 1 TB of transfer and 10 million requests per month.

At the other end of the market, Bunny's published pricing lists its Standard network at $0.01/GB for Europe and North America, $0.03/GB for Asia and Oceania, $0.045/GB for South America and $0.06/GB for the Middle East and Africa, with no request fees. Its Volume network starts at $0.005/GB for the first 500 TB.

That is an 8.5x spread between two providers on the same continent, and a further 40-70% penalty on every provider once your audience sits outside North America and Europe. Both facts matter more than which one you pick, because they tell you the shape of the cost: it scales with plays and it scales with geography, and it is transparent enough to forecast a year out.

🧮 One Salary Buys More Egress Than Your Portal Will Serve

Now put a person next to it.

The 2025 Stack Overflow Developer Survey puts the median United States salary for a full-stack developer at $138,000, against a global median of $72,509 for the same role. The UK median is $85,428.50, Germany $75,410, India $13,949.

Take the US figure and divide it by the rate cards above. A single median US full-stack salary, before employer contributions, benefits, equipment or recruitment, is worth:

  • ~1,620 TB of CloudFront egress in the US or Europe
  • ~13,800 TB of Bunny Standard egress in the same regions
  • ~27,600 TB on Bunny's Volume network

If a cold game load pulls 15 MB — measure your own catalogue, do not take mine — then 1,620 TB is on the order of 108 million plays. Most portals reading this will not serve that in a year. The salary is not the smaller number. It is not close to the smaller number.

Two consequences follow. First, arguing about CDN vendors before you have priced the team is optimising the wrong line. Second, a build case that shows infrastructure savings and hand-waves engineering has inverted the actual cost structure of the thing it is proposing to build.

📊 What a Thousand Plays Actually Costs You in Bandwidth

Per-play arithmetic is the version worth carrying into a meeting. This is arithmetic on published rates and an assumed asset weight, not a benchmark — swap in your own payload figure before quoting it.

At 15 MB per uncached play, 1,000 plays move 15 GB. That gives you:

  • $1.28 per 1,000 plays on CloudFront in the US or Europe, plus a few cents in request fees
  • $1.80 per 1,000 plays on CloudFront across South East Asia
  • $0.15 per 1,000 plays on Bunny Standard in Europe or North America
  • $0.90 per 1,000 plays on Bunny Standard in the Middle East and Africa

CloudFront's free terabyte, at that payload, covers roughly 66,000 plays a month indefinitely. A portal that has not yet crossed 66,000 monthly plays has a bandwidth cost of zero and an engineering cost of whatever it is paying its team. That is the whole argument in one sentence.

Two things move these numbers hard, and neither is the vendor. Cache hit rate: a returning player who already holds the engine bundle costs a fraction of a cold one. And payload discipline: halving asset weight halves this line permanently, across every region, at no recurring cost. Both are engineering work, which is to say both are paid for in the expensive currency.

⚖️ The Egress Fee the EU Just Abolished Is Not the One You Pay

There is a live regulatory change here that is being misread in exactly the direction operators want to misread it.

The EU Data Act's cloud switching provisions became applicable on 12 September 2025. As Mishcon de Reya summarised in October 2025, providers are prohibited from imposing any switching charges at all from 12 January 2027, and until that date any switching charge — data egress fees included — may only reflect costs directly linked to the transition. Customers get a transition window of up to 30 days, extendable to seven months where a move is technically unfeasible. It binds any provider serving EU customers, not only European ones.

This is a genuine structural change to cloud contracting, and it is worth knowing about if you are negotiating a multi-year commitment. It is not a discount on your traffic. The prohibition covers charges for leaving a provider — moving your data out to a competitor or back on-premise. Serving a game to a player in Jakarta still bills at the published per-GB rate on 13 January 2027, exactly as it does today.

What it does change is lock-in. If egress-to-exit stops being a penalty, the cost of being wrong about your CDN choice drops, which is one more reason not to spend three weeks of a build cycle on that decision.

☁️ "Unmetered" Has Conditions Attached

Cloudflare sits outside the per-GB model entirely — bandwidth is unmetered on its plans, at a fixed monthly fee. That is the quote that ends a lot of internal cost debates prematurely.

Read the actual terms before you build a business case on it. Cloudflare removed the old Section 2.8 content restriction in May 2023, and its own announcement of the change is explicit about what replaced it: video and large files may be served through the CDN when that content is hosted on a Cloudflare service such as Stream, Images or R2, while video and large files hosted elsewhere remain restricted. "Unmetered" describes the pricing model, not a blanket permission to push arbitrary payloads from arbitrary origins.

The lesson generalises past one vendor. Every unmetered or all-inclusive offer in this market has a shape defined somewhere other than the pricing page. Find that clause before it is load-bearing in your model.

🔁 The Build Has a Date. The Portal Has a Rota.

The reason headcount dominates is that a portal is not a project that finishes. It is an operational commitment with a permanent staffing floor.

The work that never stops: browser releases that break a game you licensed three years ago, ad SDK and mediation upgrades, consent framework versions, payment provider migrations, app store policy changes if you also ship native, security patching, dependency churn, and the on-call rota that has to exist because a games portal is a consumer product and consumer products break at weekends. None of it ships a feature. All of it is salaried.

You will find rules of thumb online putting annual software maintenance somewhere in the mid-teens to mid-twenties percent of the original build cost. Treat those as folklore rather than data — the sources quoting them do not publish a methodology. The number you can actually defend is your own: how many people cannot leave the team without the portal degrading. That headcount, multiplied by your fully-loaded cost per head, is the recurring line. It does not shrink after launch, and it is the number the licence alternative is competing against.

About the failure-rate slide in the deck

Somebody will show you the Standish Group's CHAOS figures — broadly, around 19% of IT projects failing outright, about half challenged on time, budget or scope, and roughly a third succeeding. Use them carefully. Academic reviews have criticised the CHAOS research for not publishing its project selection criteria or its definitions of success and failure, and for restricting access to the underlying data; at least one review concludes the success and challenged rates are not usable for benchmarking at all.

The finding inside that body of work which does survive scrutiny, and which is actually useful here, is the size effect: small projects succeed at dramatically higher rates than large ones. If you are going to build, the defensible version is to build the narrow piece that differentiates you and licence the wide piece that does not.

🌍 Where You Hire Moves the Case More Than What You Build

Go back to the Stack Overflow numbers for a moment, because they contain the single largest lever in this decision and it has nothing to do with architecture.

The global median for a full-stack developer, $72,509, is roughly half the US median of $138,000. No CDN choice, caching strategy or asset diet available to you moves the total cost of a build by 50%. Your hiring geography does, on day one.

Worth adding: even the US number is disputed. Salary aggregators reporting in 2026 spread across roughly $119,000 (Glassdoor, median total pay) to about $160,600 (Levels.fyi, median total compensation) and $162,772 (Built In), with Indeed and ZipRecruiter landing between. They sample different populations and mix base against total compensation differently. If you are building a five-year model, run it at both ends of that range rather than picking the figure that makes your preferred answer work.

🚫 Five Ways the Build-vs-Licence Case Gets Written Wrong

  1. Pricing the launch and not the rota. A build case that ends at go-live has costed the least expensive phase of the product's life. Model three years of operations or do not model it.
  2. Treating egress as the swing factor. It is publicly priced, forecastable, and small relative to salary until you are at real scale. If it is the deciding line in your spreadsheet, the spreadsheet is missing people.
  3. Costing only NA/EU traffic. Every provider charges materially more for APAC, LATAM and MEA delivery. A portal aimed at growth markets has a different bandwidth curve than the one in the template you copied.
  4. Counting "unmetered" as unlimited. Ask which origin the content has to live on and what the acceptable-use clause says about large files, then re-run the model with the storage product you will actually be required to buy.
  5. Building the commodity layer. Player accounts, a games grid, a CMS and an ad wrapper are not where a portal wins. Building them yourself buys a maintenance obligation, not a differentiator.

🎮 Where a Licensed Catalogue Fits

The honest framing of a licence is that you are not primarily buying games — you are buying the absence of a permanent engineering team for the parts of the product that will never distinguish you. Forestry Games has licensed HTML5 and Android titles since 2017, with a catalogue of 1,049 games, and offers white-label game portals for operators who want the shelf without owning the codebase underneath it. Terms, territories and platform scope are set per deal on the licence and pricing page, and the catalogue is browsable if you want to size the shelf before you size the team.

That is the comparison to run: not licence fee against server bill, but licence fee against the salaried headcount you would otherwise have to keep on the rota indefinitely. If you have decided to build regardless, the launch platform route still removes the commodity layer from the scope.

🧭 What to Cost Before the Next Board Meeting

Three numbers, in this order.

One: your fully-loaded annual cost per engineer, in the country you will actually hire in, and the minimum headcount the portal cannot run below. Multiply. That is the recurring cost of the build option, and it starts the month you hire, not the month you launch.

Two: measured payload per play from your own catalogue, times your realistic monthly plays, times the published per-GB rate for the regions you actually serve. Compare it to number one. If it is not at least the same order of magnitude, stop optimising it.

Three: the licence quote for the same catalogue and the same term. Put it beside number one, not beside number two.

Most portals that get shut down are not shut down because traffic got expensive. They are shut down because a team of four had to be justified against a product that was never going to differentiate on the parts that team was maintaining. Price the rota, then decide.