HTML5 game publishing
How Much Does It Cost to Host 100 HTML5 Games?
Storage, requests and bandwidth math for 100 games using current Cloudflare R2 prices, three traffic scenarios and a comparison with embedding from a distributor.
"How much will it cost to host 100 HTML5 games?" has a surprising answer: the storage is almost free. The part that can hurt is bandwidth, and whether your provider charges for it. This article shows the arithmetic with current Cloudflare R2 prices, three traffic scenarios, and what changes if you embed games from a distributor instead of hosting them.
What you pay for when you host games
- Storage: the total size of all game files, per GB per month.
- Requests: every file a player loads is a request. A game with 40 files costs 40 requests per cold start.
- Bandwidth (egress): the data you send to players. This is where bills grow with traffic.
- Everything around it: the web server or platform that serves your pages, domain, monitoring and your own time.
Cloudflare R2 prices used in this article
From Cloudflare's R2 pricing page, Standard storage:
| Item | Price | Monthly free allowance |
|---|---|---|
| Storage | $0.015 per GB-month | 10 GB-month |
| Class A operations (writes, lists) | $4.50 per million | 1 million |
| Class B operations (reads) | $0.36 per million | 10 million |
| Egress to the internet | Free | Not applicable |
Prices change, so check the current page before you budget. Other object storage providers, such as Amazon S3, charge per GB for data sent out, so the same traffic can cost far more on a metered provider. The comparison below uses an illustrative rate of $0.09 per GB, which is a placeholder to show the effect, not a quote. Plug in your provider's real number.
How big are 100 games?
Sizes vary widely. Simple 2D games can be a few MB; Unity or 3D builds are often tens of MB. For scenarios, we use averages:
- 10 MB per game: 1 GB for 100 games.
- 30 MB per game: 3 GB.
- 60 MB per game: 6 GB.
PlayKovo's upload limit is 250 MB per ZIP, but that is a ceiling, and most browser games are much smaller.
Three scenarios per month
Assumptions: players download the whole game on a cold start, with no browser cache hits, which is the worst case. Requests are counted as Class B reads.
| Starter | Growing | Busy | |
|---|---|---|---|
| Games x average size | 100 x 10 MB | 100 x 30 MB | 100 x 60 MB |
| Stored data | 1 GB | 3 GB | 6 GB |
| Plays per month | 20,000 | 200,000 | 2,000,000 |
| Files per play | 30 | 40 | 40 |
| Read requests | 0.6 million | 8 million | 80 million |
| Data sent to players | 200 GB | 6,000 GB (6 TB) | 120,000 GB (120 TB) |
Cost on R2
| Starter | Growing | Busy | |
|---|---|---|---|
| Storage (after 10 GB free) | $0 | $0 | $0 |
| Reads (after 10 million free) | $0 | $0 | (80 - 10) x $0.36 = $25.20 |
| Egress | $0 | $0 | $0 |
| Total | $0 | $0 | about $25 |
Same traffic on a provider that charges $0.09 per GB for egress (illustrative)
| Starter | Growing | Busy | |
|---|---|---|---|
| Egress | 200 GB x $0.09 = $18 | 6,000 GB x $0.09 = $540 | 120,000 GB x $0.09 = $10,800 |
Real bills are lower because returning players reuse cached files and CDNs absorb repeat requests, but the gap explains why free egress matters so much for games, which are large files.
Caveats that apply to every scenario
- Serving through another platform. If your site or a serverless function sits between the player and the storage bucket, you may pay that platform's bandwidth or compute. PlayKovo, for example, serves hosted game files through its own route backed by R2, so the front-end platform's bandwidth also matters in its own cost picture. Serving directly from the bucket on a custom domain avoids this layer.
- Caching cuts requests. Hashed file names with long cache lifetimes mean repeat visitors cost almost nothing; see how to prevent old cached files from breaking game updates.
- Writes are cheap. Uploading 100 games of 100 files is 10,000 write operations, well inside the free 1 million.
- Peaks. A viral day multiplies reads and egress. Free egress removes the bandwidth risk, but check any platform in front of it.
- Your time is the biggest cost. Updating, testing and replacing broken builds takes more effort than storage ever will.
Self-hosting versus embedding from a distributor
| Self-host games | Embed from a distributor | |
|---|---|---|
| Storage and bandwidth bill | Yours, as calculated above | None; the provider hosts the files |
| Updates and fixes | You do them | The provider updates the embed for everyone |
| Control | Full: layout, analytics, ads in your frame (depending on the licence) | Limited to what the provider allows |
| Licence needed | Permission to host the files | Permission to embed, usually stated in the provider's terms |
| Risk | Your uptime and your bill | The provider can change terms or remove a game |
| Typical cost for 100 games | Near zero to about $25 per month in the scenarios above, plus time | Near zero for hosting; check each provider's revenue and branding terms |
With PlayKovo's catalog you do not upload or host game files at all: each game has an iframe snippet or feed entry, and the games are hosted and updated by PlayKovo. Read the catalog import guide and the Partner Terms before publishing.
Budget formula
storage_cost = max(0, total_GB - 10) x 0.015
read_cost = max(0, (plays x files_per_play / 1,000,000) - 10) x 0.36
egress_cost = 0 on R2, or total_GB_sent x your_egress_rate on metered providers
monthly_total = storage_cost + read_cost + egress_cost + platform_in_front
Decision guide
- Under 20 games and low traffic: embedding from a catalog is the simplest and cheapest.
- Own games or licensed files you must control: host them on object storage with free egress and long cache lifetimes.
- Large 3D builds with growing traffic: compare egress pricing before choosing a provider; this is the number that changes the bill.
Start with the numbers for your real file sizes, not averages: add up the folder sizes of your games and multiply by your plays. And keep an eye on your game list quality too; see how to choose your first 20 games.


