Free HTML game hosting platforms work because a browser game is just files: an index.html, JavaScript, images, audio and fonts. There's no server code to run, so a static host is all you need. The real differences between hosts are their limits, whether they allow ads or other commercial use, and how they serve your files. This guide compares the free and paid options as of October 2026, then shows how to upload a game by FTP and which server settings stop a game from loading.
Every limit below comes from the provider's own documentation, checked in October 2026. Free tiers change often, so follow the links before you commit a commercial project to one.
What an HTML5 game needs from a host
A finished HTML5 game is the build output of your engine or bundler: usually a dist/ or build/ folder with index.html at the top. To run it, a host has to do five things:
- Serve static files over HTTPS. Browsers only allow service workers and many newer APIs on secure pages, and embed targets expect it: Wix, for example, only displays HTTPS embeds.
- Send the right MIME type for every file, especially
.js,.json,.wasmand fonts. - Compress text files (JavaScript, JSON, WebAssembly) with gzip, Brotli or Zstandard.
- Cache the big files so returning players don't download the engine again.
- Keep paths intact. File names are case-sensitive on almost every host, and a game uploaded into a subfolder breaks if it requests
/assets/...instead ofassets/....
Our games are a good example of what a host receives. Each one builds to a dist/ folder of static files with no backend, and the initial download is 300 to 750 KB (median about 560 KB). The build uses relative paths, so the same folder runs from a domain root, a subfolder or a CDN prefix, and URL parameters such as ?lang=fr&mute=1 set the language and sound without touching the code. That's the profile most modern Phaser, Three.js or PixiJS games have, and every host below can serve it.
Best free hosting for HTML5 games in 2026: compared
Here are the free HTML5 game hosting platforms worth using, with their documented free limits.
| Host | Free limits (October 2026) | Ads or commercial use on the free tier | Best for |
|---|---|---|---|
| Cloudflare Workers static assets | Static asset requests free and unlimited; 20,000 files per version; 25 MiB per file | Allowed | Your own game site, including ad-funded ones |
| Cloudflare Pages | 500 builds a month; 20,000 files; 25 MiB per file | Allowed | Existing Pages projects (Cloudflare now recommends Workers for new ones) |
| GitHub Pages | 1 GB site; 100 GB a month soft bandwidth limit; public repository on free accounts | Not for running an online business or e-commerce | Portfolios, jam builds, open-source games |
| Netlify Free | 300 credits a month; 1 GB of bandwidth costs 20 credits; sites pause when credits run out | Not stated on the plan page | Small sites with light traffic |
| Vercel Hobby | First 100 GB of fast data transfer | No: Hobby is non-commercial only, and ads count as commercial | Personal prototypes |
| Firebase Hosting (Spark) | 10 GB storage; 360 MB a day of transfer | No restriction stated | Games that already use Firebase |
| Neocities (free) | 1 GB storage; 200 GB bandwidth; restricted file types | No restriction stated | Tiny canvas games without audio files |
| itch.io | ZIP up to 1,000 files, 500 MB extracted, 200 MB per file | You publish on their site, under their page | Jams, demos and finding players |
The short version: Cloudflare is the most generous free option for a site you control, GitHub Pages is the easiest for anything already in a Git repository, and itch.io is the only one on this list that also brings an audience.
Cloudflare Workers and Pages
Cloudflare's documentation says requests to static assets on Workers are "free and unlimited". The free plan allows 20,000 files per deployment and 25 MiB per file, which fits any HTML5 game that isn't a large Unity or Godot export. Cloudflare also compresses JavaScript, JSON, WebAssembly and fonts automatically, so you don't configure that yourself.
Cloudflare Pages still works with the same 20,000-file and 25 MiB limits, but Cloudflare's current advice is to start new projects on Workers. For a pure static site you only point the configuration at your build folder; no Worker script is required. If you're hosting dozens of games, one project with a folder per game keeps you well inside the file limit.
GitHub Pages: host an HTML5 game from GitHub
GitHub Pages is the classic way to host an HTML5 game from GitHub. Push the build to a repository, open Settings → Pages, choose a branch and folder (or a GitHub Actions workflow), and the game appears at https://<user>.github.io/<repository>/. The limits: a published site can't exceed 1 GB, bandwidth has a soft limit of 100 GB a month, and free accounts need a public repository.
Two caveats matter for games. GitHub states that Pages isn't meant to be a free host "to run your online business" or an e-commerce site, so an ad-funded game portal belongs elsewhere. And project sites live in a subfolder (/<repository>/), so a build that requests /assets/main.js from the domain root will 404. Set your bundler's base path to ./ (in Vite, base: './') before you deploy.
GitHub Pages also works well for HTML5 game templates: many engine starter templates are Git repositories, so you can create a repository from the template, build it with a Pages workflow and share a playable link the same day.
Netlify and Vercel
Netlify moved its free plan to credits. Free accounts get 300 credits a month with a hard limit; a gigabyte of bandwidth costs 20 credits and each production deploy costs 15, so a site that does nothing else gets roughly 15 GB of transfer. When the credits run out, Netlify pauses the site until the next billing cycle. That suits a small portfolio, not a game that might get shared widely.
Vercel's Hobby plan includes the first 100 GB of fast data transfer, but it's "restricted to non-commercial personal use only", and Vercel lists advertising such as AdSense as commercial use. If your game shows ads, Hobby is out.
Firebase Hosting and Neocities
Firebase Hosting's free Spark plan gives 10 GB of storage but only 360 MB of transfer a day. With a 560 KB game that's roughly 640 first-time plays a day before you hit the cap. It's a reasonable choice if the game already uses Firebase for something else.
Neocities offers 1 GB of storage and 200 GB of bandwidth for free, but free accounts can only upload an approved list of file types. JavaScript, JSON, PNG, WebP and WOFF2 are on it; MP3, OGG, M4A and WebAssembly are not. A silent canvas game works; most real games need the paid Supporter plan.
How to host an HTML5 game on itch.io
itch.io hosts the game and gives it a page players can find, which no plain web host does. To upload:
- Create a new project and set Kind of project to HTML.
- ZIP the contents of your build folder, so
index.htmlsits at the root of the ZIP, not inside a subfolder. - Upload the ZIP and tick the option that it will be played in the browser.
- Under Embed options, choose "Embed in page" with your game's dimensions, or "Click to launch in fullscreen" if it adapts to any size. Tick Mobile friendly if it works on phones.
- Save, view the page and play it once on desktop and once on a phone.
The itch.io HTML5 rules are strict: at most 1,000 files, 500 MB extracted, 200 MB per file, 240 characters per path, and file names are case-sensitive. itch.io doesn't compress files on the fly, according to Godot's web export documentation, so large engine exports load slower there than on Cloudflare. For more places to put a game in front of players, see where to publish HTML5 games.
Can you host an HTML5 game on Google Drive or Dropbox?
No. Both stopped serving web pages years ago. Google phased out Drive web hosting, and googledrive.com/host links stopped working on 31 August 2016. Dropbox stopped rendering HTML from public links for free accounts on 3 October 2016 and for paid accounts on 1 September 2017, according to its help centre. Today both services download your index.html or show its source instead of running it.
Use them to send a ZIP to a tester. To let people play, put the files on one of the static hosts above.
How to host an HTML5 game online for free, step by step
This is the fastest free route for a game you control, using Cloudflare. The same steps work on any static host with a drag-and-drop or Git deploy.
- Build the game. For our games that's
pnpm install --frozen-lockfilethenpnpm build, which writesgames/<id>/dist/. For other engines, use the web export. - Test the build locally through a local server, not by double-clicking
index.html. Runnpx vite previewin a Vite project orpython -m http.serverinside the build folder, then open the address it prints. - Create a project on the host and point it at the build folder (Cloudflare's Wrangler configuration takes an
assets.directory; the dashboard also accepts an upload). - Deploy and open the URL on a desktop browser and a phone. Open the browser's developer tools, reload, and check the Network tab: every file should return status 200 with the right type.
- Add your domain if you have one, and keep HTTPS on.
- Test host parameters if the game supports them, for example
https://games.example.com/liquid-lab/?lang=de&mute=1.
Most "black screen" reports come from step 2 being skipped: the game worked in an editor preview, but the exported build requests files with the wrong path or case.
Paid hosting: when it's worth paying
Free tiers are fine until the site earns money, gets steady traffic or needs settings the free plan doesn't expose. These are the best web hosting options for HTML5 games once you pay:
| Option | Good for | What you manage |
|---|---|---|
| Paid tier of a static platform (Cloudflare Workers Paid, Netlify, Vercel Pro) | Commercial sites that want the free-tier workflow with higher limits | Almost nothing; deploys from Git or upload |
| Shared hosting with cPanel and FTP | A handful of games on an existing website | Uploads, .htaccess settings |
| Object storage plus a CDN (Amazon S3 with CloudFront, Cloudflare R2, Bunny) | Portals with many games and heavy traffic | Bucket, CDN rules, cache invalidation |
| A VPS running Nginx or Caddy | Full control, game portals with their own backend | The server: updates, security, TLS, backups |
There is no single best web server for HTML5 games. Nginx, Apache and Caddy all serve static files well; what matters is the configuration in the next sections. If you sell or run games for a living, a CDN in front of whatever you choose pays for itself in load time.
Bandwidth is easy to estimate. A first play costs roughly the game's initial download, so 10,000 first plays of a 560 KB game is about 5.6 GB, and returning players cost far less if caching is set up. Audio-heavy or 3D games with large textures multiply that, which is why initial payload is the first number we list for every game.
How to put your HTML5 game on a server with FTP or FileZilla
Shared hosting usually gives you FTP or, better, SFTP access. To upload an HTML5 game to an FTP server with FileZilla:
- Get the credentials from your hosting panel: host name, username, password or key, and port (22 for SFTP, 21 for FTP). Prefer SFTP; plain FTP sends your password unencrypted.
- Open FileZilla → File → Site Manager → New site. Choose SFTP as the protocol, enter the details and connect.
- Find the web root in the right-hand (remote) pane. It's often
public_html,wwworhtdocs. - Create a folder for the game, for example
games/pocket-tower-defense. Lowercase names with hyphens avoid case and encoding problems. - Open your build folder in the left-hand (local) pane, select its contents and drag them into the new remote folder. Upload the whole folder structure, not just
index.html. - Visit the URL (
https://example.com/games/pocket-tower-defense/) and check the browser's Network tab for 404s or files served astext/plain.
If your host's panel has a file manager, it does the same job for small games. For updates, upload the new build to a fresh folder and switch links to it, or delete the old assets/ first: bundlers give files new hashed names on every build, so old files pile up otherwise.
Server settings that make or break a game
Most hosting problems with HTML5 games are four settings: MIME types, compression, caching and cross-origin rules. Managed static platforms get the first three right by default. On shared hosting or your own server, check them yourself.
MIME types
Browsers refuse to run a module script served with the wrong type, and WebAssembly loads more slowly (or not at all) when .wasm isn't sent as application/wasm. The MDN list of common MIME types is the reference. On Apache, add any that are missing to .htaccess in the game folder:
AddType text/javascript .js .mjs
AddType application/json .json
AddType application/wasm .wasm
AddType font/woff2 .woff2
AddType audio/mpeg .mp3
AddType audio/ogg .ogg
AddType audio/mp4 .m4a
AddType image/webp .webpOn Nginx, the bundled mime.types covers these in current versions; add a types { application/wasm wasm; } block if an older install lacks it.
Compression
Text compresses well and already-compressed media doesn't. MDN's compression guide recommends compressing everything except files that are compressed already, such as PNG, JPEG, MP3 and OGG. JavaScript, JSON and WebAssembly shrink to a fraction of their size; Godot's documentation says a .wasm file compresses to around a quarter with gzip.
gzip on;
gzip_types text/css text/javascript application/javascript application/json application/wasm image/svg+xml;On Apache, mod_deflate does the same with AddOutputFilterByType DEFLATE and the same types. Some engines (Unity, for one) can export pre-compressed .br or .gz files; those only work if the server sends a matching Content-Encoding header, so either configure that or export uncompressed and let the server compress.
Caching
Modern bundlers put a content hash in file names (index-BTz60zQm.js), so a file with a given name never changes. Cache those for a year and keep index.html fresh, so players get updates on their next visit:
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=31536000, immutable"
</IfModule>Put that file only in the folder of hashed assets (assets/ in a Vite build), and send Cache-Control: no-cache for index.html. Files without hashes, such as icons or a game.json manifest, should get a short cache time instead.
CORS and cross-origin isolation
An <iframe> pointing at your game needs no special headers. CORS starts to matter when the game itself loads files from another origin, for example JSON or textures from cdn.example.com while the page is on games.example.com. WebGL can't use cross-origin images without permission, so the CDN must send Access-Control-Allow-Origin for your game's origin. MDN's CORS guide covers the details. The simplest fix is to serve the game and its assets from the same origin.
A few engine exports need more. Godot 4 web exports built with thread support use SharedArrayBuffer, which requires Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp on the response, or the game won't start. itch.io has a "SharedArrayBuffer support" checkbox in its embed options for this; on your own host, add the two headers or export single-threaded, which Godot now describes as the preferred default for the web.
Hosting on website builders: Squarespace, uCoz, WordPress and Wix
If your site lives on a website builder, the question is whether it lets you upload a folder of files. Most don't, so the usual pattern is to host the game on a static host and embed it with an iframe.
- Squarespace doesn't host HTML5 games. You can embed one with a code block, but adding JavaScript or an iframe needs the Core, Plus or Advanced plan, and a code block is limited to 400 KB, far too small to paste a game into.
- uCoz can host simple games: its File Manager accepts uploads, by default up to 15 MB per file. The uCoz FAQ says
.htmlfiles can't be uploaded over FTP and must go through the File Manager. - Self-hosted WordPress sits on ordinary web hosting, so upload the game folder by SFTP next to WordPress and embed it in a post.
- Wix, Google Sites and Weebly take an embed URL or iframe code, not a game folder.
Our guide to embedding an HTML5 game in a website has the exact steps and iframe code for each builder.
Where to host an HTML5 game: which option fits you
Pick by what the game is for, not by the biggest free allowance:
- A jam entry, demo or portfolio piece: itch.io for players, GitHub Pages for a link in your CV.
- Games on your own website, with or without ads: Cloudflare's free tier, then its paid tier or a CDN when traffic grows. If you need games to put there, our HTML5 games for websites page explains what you can run and how.
- A game portal with many titles: a CDN or object storage, with a folder per game and long cache times on hashed files. Our guide on starting an HTML5 game website covers templates, licensing and SEO for portals, and licensing for portals explains how our Extended licence covers up to 3 portal domains your company owns.
- A game you want to earn from directly: hosting is only the start; how to make money with HTML5 games compares ads, sponsorships and selling licences.
- A client project: host where the client's site lives, so they own the deployment.
More hosting and publishing guides live on the guides hub.
Frequently asked questions
Where can I host an HTML5 game for free?
Cloudflare Workers static assets are the most generous free option in 2026: static requests are free and unlimited, with up to 20,000 files and 25 MiB per file. GitHub Pages suits non-commercial projects, and itch.io is best when you also want players to find the game.
Why does my game work locally but show a black screen online?
Usually it's a path or file-name problem. Check for absolute paths (/assets/...) in a game uploaded to a subfolder, file names whose case differs from the code, and files served with the wrong MIME type. The browser's console and Network tab show which file failed.
Can I put ads on a game hosted on a free plan?
On Cloudflare, yes, and Firebase and Neocities state no restriction. Vercel Hobby forbids it, Netlify's plan page doesn't say, and GitHub states that Pages isn't meant for running an online business. If ads are the plan, start on a host that allows commercial use rather than moving later.
How much bandwidth does an HTML5 game use?
Roughly its initial download per first play, plus anything it loads later. Our games download 300 to 750 KB to start, so 10,000 first plays use about 3 to 7.5 GB. Good caching makes returning players much cheaper.
Can I host a game I bought from you on my own server?
Yes. The games are static builds with no backend, so any host on this page runs them. The Standard licence covers one end product with one production web deployment plus staging; the Extended licence covers more products or up to 3 portal domains your company owns. Both are draft terms, explained on the licensing page, and our buyer quick start shows the build and deploy steps.
We make and sell HTML5 game source code; links to our games are marked as ours.