Put your HTML5, Godot or Unity WebGL game on the web

Export Unity WebGL, Godot or Phaser games and let your AI upload them to BrewInTH: .wasm/.br files just work, COOP/COEP for threads, and storage sizing.
Your game is done in Unity, Godot or hand-written HTML5 with Phaser, and you want to send friends a link they can play right away, with nothing to install. Then the web build meets a real server: the loading bar freezes, the console complains about .wasm or .br files, or a Godot 4 export says it needs SharedArrayBuffer.
This article shows how to put a web game on BrewInTH as a static site: exporting from each engine, the one switch threaded games need, a prompt that gets your AI to upload every file, and how to size storage and bandwidth before you share the link.
In short
✅ Web games (Unity WebGL, Godot, Phaser, HTML5) run as a Static site project: upload the exported files one by one, withindex.htmlat the root
✅.wasm, audio and fonts get the right content type; Unity's pre-compressed.br/.gzfiles just work, no Decompression Fallback needed
✅ Text,.wasm,.dataand.pckfiles get an automatic Brotli copy after upload, and bandwidth counts the bytes actually sent
✅ Threaded games (Godot 4 with Thread Support, Unity multithreading) need cross-origin isolation under App settings › Site headers
✅ Game files count toward your plan's storage; Free has 20 MB, so Unity and Godot games usually need a paid plan
Which games work on BrewInTH
Anything exported as web files (HTML, JavaScript, WebAssembly and data files) that runs in a browser:
- Unity built for WebGL
- Godot 3 and 4 exported for the Web
- Phaser, PixiJS, Three.js or your own HTML5/JavaScript game
- Games from other tools that export a web page, such as Construct or GDevelop
If the game also has a server part — a shared leaderboard or online multiplayer — that part is an app in a separate project (say Node.js with a database). The game itself stays a static site.
Exporting from each engine

Unity (WebGL)
- In Build Settings pick the WebGL platform.
- Under Player Settings › Publishing Settings, Compression Format can stay Brotli or Gzip. BrewInTH sends
.br/.gzfiles with the header browsers need, so Decompression Fallback is not needed. - The build gives a folder with
index.html,Build/andTemplateData/. Upload that folder with its structure intact.
Godot (Web)
- Project › Export, add a Web preset (install the export templates if asked).
- Name the export file
index.html; the.js,.wasmand.pckfiles get the same name next to it. - Godot 4 has a Thread Support option. If it is on, turn on cross-origin isolation (below). If your game does not need threads, leaving it off is simpler.
Phaser / plain HTML5
Build as usual (for example npm run build) and use the output folder such as dist/. Plain HTML/JS with no build step can be used as it is.
Whatever the engine, index.html must sit at the root of the uploaded folder, not one folder deeper.
Let your AI upload every file
Static sites on BrewInTH are uploaded file by file (not as a ZIP). The Choose files to upload button on the Files tab suits a handful of files in one folder, because it does not keep subfolders such as Build/. For most games, let the AI do the upload.
Create a new project, pick Static site (HTML/CSS/JavaScript) as the technology, press Create the AI link and token (automatic) and open your AI tool on the computer in the game's folder.
(paste the ready-made message from BrewInTH here)
The build-web/ folder is my game exported from Unity WebGL (index.html is inside it).
Please put it on my static project on BrewInTH.
- Upload every file in build-web/ one by one, keeping the paths, e.g. Build/game.wasm.br
- Do not compress anything yourself and do not change the files Unity generated
- Check the plan's remaining storage first and tell me if it is not enough
- After publishing, use site_check on / and on the .wasm file and confirm both answer 200
Then send me the link so I can play it.
Change "Unity WebGL" to your engine and build-web/ to your folder. If you prefer an FTP program, SFTP on the Files tab works too: drop the whole folder in and press Publish from SFTP.
How BrewInTH serves game files

- Correct content types —
.wasmis served asapplication/wasm; audio, video and fonts get their own types, so browsers can use fast WebAssembly loading. - Pre-compressed files —
x.wasm.br,x.data.gz,x.js.bror a compressed.pckgo out withContent-Encoding, and the browser unpacks them. - Automatic compression — text,
.wasm,.dataand.pckfiles of 1 KB or more get a Brotli copy a few seconds after upload, served to browsers that accept it. The copy does not count toward your storage, and bandwidth counts the bytes that actually leave. - Returning players — unchanged files answer
304and cost no bandwidth, while a new release is visible at once. - Range requests — seeking in audio/video and resuming large downloads work.
Threaded games: turn on cross-origin isolation
Godot 4 exported with Thread Support and Unity with multithreading need SharedArrayBuffer, which browsers only allow on pages that send these two headers:
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corp
On BrewInTH: project page › App settings tab › Site headers › tick Enable cross-origin isolation (COOP/COEP) and press Save. It takes effect immediately, without a new release — or ask your AI to switch it on.
Worth knowing: once it is on, the game page cannot embed iframes, scripts or images from other sites (YouTube, ads, Google Fonts) unless they send headers that allow it. Leave it off for single-threaded exports.
Storage and bandwidth: check before you share
Every uploaded file counts toward your plan's storage, shared by all your projects, and files from old versions count until they are deleted. Current figures (see pricing):
- Free — 20 MB storage, 1 GB bandwidth per month
- Starter (฿99/month) — 200 MB storage, 10 GB bandwidth per month
- Maker (฿1,499/year) — 1 GB storage, 50 GB bandwidth per month
- Growth (฿2,899/year) — 10 GB storage, 200 GB bandwidth per month
A small HTML5 game fits the Free plan easily; Unity and Godot builds are often tens of megabytes, so a paid plan is the realistic choice. As a rough guide, a 20 MB game played by 50 new players uses about 1 GB (less when files are compressed, and returning players barely count). The Free plan stops serving when the month's quota is used up; paid plans keep serving up to 150% while you get email warnings.
Watch the video
▶ From a new project to a live site (1:30, in Thai)
Watch on YouTube
FAQ
The game hangs on the loading bar. Where do I look?
Open the browser's Developer Tools (F12), check the Console and Network tabs for files that answer 404 or show an error, and give that to your AI. The usual cause is a missing file or a subfolder path that changed.
Do I need Decompression Fallback in Unity?
No. BrewInTH already sends .br and .gz files with Content-Encoding, and every site is on https, which Brotli requires.
Can the game use my own domain?
Yes, on paid plans. Connect a domain you own or register one from the Domains page; see the custom domain guide.
Can the game keep high scores?
On the player's device (localStorage), yes, right away on a static site. A shared leaderboard needs an app and a database in a separate project.
How do I ship an update?
Export again and ask the AI, in the same chat, to upload and publish. Players see the new version at once. Ask it to delete old files you no longer use, so they stop taking up storage.
Summary
Unity WebGL, Godot, Phaser and HTML5 games run on BrewInTH as static sites. Export with index.html at the root, let your AI upload every file with its path, and the platform handles content types, compression and caching. Threaded games need one extra switch for cross-origin isolation, and larger games need a plan with enough storage and bandwidth.
Start your first project free →
