Web Game Growth
11 min readHow to export a Godot, Construct or GDevelop game to the web and find its first players
The export button is the easy part. Thread support, file paths, renderers and save storage decide whether the build runs on itch.io, a portal or the Arcade.
Written by Bounty Board Team
Bounty Board editorial team
- HTML5 games
- Godot
- Construct
- GDevelop
- web export
The game runs in the editor's browser preview. You export it, upload the zip, and the page shows a gray rectangle, a spinner that never finishes, or an error about SharedArrayBuffer.
Almost every one of those failures comes from a handful of export settings and hosting rules, and each engine documents them. This guide collects the web export steps for Godot 4, Construct 3 and GDevelop from their own documentation, names the settings that break a browser build, and then covers where to put the finished build so people play it.
Platform requirements and the full submission checklist live in how to submit an HTML5 game to web platforms. This post stops at the engine.
The direct answer
- Godot 4: install the export templates, add a Web preset under Project, Export, leave Thread Support off (the default since 4.3), keep the Compatibility renderer, and name the export
index.html. Godot 4 projects written in C# cannot export to the web. - Construct 3: choose Menu, Project, Export, then Web (HTML5). You get a zip of everything to upload. Never test it by double clicking
index.html; Construct games need a real web server. - GDevelop: choose File, Export, Publish on Stores, Web, then Export as HTML5 Game, or publish in one click to gd.games from the Share button.
- Then put it where players are: itch.io the same day, the engine's own showcase where one exists, and the curated portals once the first session holds. The Bounty Board Arcade accepts uploaded Godot 3, single threaded Godot 4.3 or later, and Construct builds. It does not list GDevelop yet.
Godot 4
Godot's web export documentation (the 4.7 version was current when we read it) covers the steps:
- Install the export templates.
- Open Project, Export, and add a Web preset.
- Export with
index.htmlas the file name. The docs suggest it, and renaming the exported files afterward causes problems. - Serve the folder from a web server and test it there. The export is several files that belong together: the HTML page, a
.jsloader, the engine as.wasm, your game data as.pck, and a splash.png.
Settings that break Godot web builds
Thread Support. With it on, the build uses SharedArrayBuffer, which needs the page served with two cross origin isolation headers, Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp. Many hosts do not send them, itch.io included unless you opt in. Godot's docs call single threaded export "the preferred and now default way to export your games on the Web" and say it is "more compatible overall with stores like itch.io or Web publishers like Poki or CrazyGames." Leave it off unless you have measured a need.
If you must ship threads on itch.io, its experimental SharedArrayBuffer option adds the headers, with tradeoffs its announcement spells out: requests to other domains fail by default, iframe embeds on the page stop working, and the game moves to html.itch.zone, which affects data already saved in local storage. On the Bounty Board Arcade, a threaded export cannot run at all: hosted builds cannot offer the cross origin isolation it needs, so export with Thread Support off.
Extensions Support. GDExtensions need web specific builds and the same isolation headers, so the same hosting limits apply.
C#. "Projects written in C# using Godot 4 currently cannot be exported to the web." If your game is C# and must run in a browser, Godot 3 is the documented route.
Renderer. Godot 4 targets WebGL 2.0 only, through the Compatibility rendering method. Forward+ and Mobile do not run on the web, and the docs warn that Safari has more WebGL 2.0 problems than Chromium and Firefox. Switch the renderer early and play the game on it, not just the export.
Audio. Web exports play audio as samples rather than streams by default, a choice the docs tie to how browsers prefer to play audio. If your mix leans on audio bus effects, listen to the web build before you ship it. Browsers also hold back sound until the player interacts with the page, so start audio from a click or key press.
Saves. The docs list persistence among the web's limits: players need cookies and IndexedDB enabled for saved data to stick. Any host that sandboxes storage will test this for you, so play, save, reload and check before launch.
Sharing Godot tools through the Asset Library
If you build a reusable web export helper, such as a custom HTML shell or a portal SDK wrapper, the Asset Library submission guide sets the rules: a LICENSE file with a copyright statement, a .gitignore, files under addons/asset_name/, one submission per Godot version, and a manual review that "may take up to a few days." Check the Library for an existing addon for your target portal before you write glue code.
There is no Bounty Board addon in the Asset Library. The Arcade SDK is a JavaScript library loaded with a script tag.
Construct 3
Construct's manual page on publishing projects and its official Publishing to the web tutorial describe the flow:
- Choose Menu, Project, Export.
- Pick Web (HTML5).
- Set the export options, then export. The result is a zip containing all the files to upload.
- Upload the contents to a web server, or to a host such as itch.io, and test from there.
Settings that break Construct web builds
Opening it from disk. The tutorial is direct about this: double clicking index.html runs the game from a file:/// URL, and the browser's security limits on those pages "usually stop Construct games from working." A blank screen from a local file is not a broken export. Test on a server.
Minify mode. The manual says Advanced minification is normally safe, but if your project uses Construct's scripting feature, you may want to switch to Simple mode or adjust how you write your code.
Offline support. It is on by default and lets the game keep working offline after its first load. The manual notes it can sometimes interfere with testing when you regularly update a web hosted project. Turn it off while iterating if that bites, and back on for release. The tutorial adds that offline support needs the game served over HTTPS.
Optimization options. The manual recommends deduplicating images, optimizing images and minifying scripts for the final export. They make the export slower, so skip them for quick trial exports, not for the build you publish.
Saves. The Local Storage plugin stores values under named keys in what the manual calls an internal browser database. Test saving on every host you publish to, because embedded and sandboxed pages can restrict storage.
There is no Construct addon for the Bounty Board Arcade SDK either.
GDevelop
GDevelop gives you two routes.
One click to gd.games. The gd.games publishing page describes it: click Share, choose gd.games, then Publish game; later builds use Publish new version. Anyone with the link can play, and games are listed publicly by default, with a visibility setting to keep one link only. The game dashboard collects player feedback and analytics. For a first build in front of other people, this is the shortest path any of the three engines offers.
A manual HTML5 export. The local folder export guide lists the steps: File, Export, Publish on Stores, Web, choose a folder, Export as HTML5 Game. The entry point is index.html. Browsers can often open it straight from disk, but the guide suggests a local web server for a more reliable test.
Settings that break GDevelop web uploads
- A nested
index.html. GDevelop's itch.io guide warns to zip the folder soindex.htmlsits at the top of the archive, not inside a subfolder. - The browser checkbox. On itch.io, tick "This file will be played in the browser" or the zip is offered as a download. Then set the page to public; the guide also suggests adding the GDevelop tag.
- Portal SDKs. For CrazyGames, GDevelop points you to its CrazyGames SDK extension and the portal's QA tool, and you submit through the CrazyGames developer portal. For Poki, the Poki Games SDK extension handles ads; that page is still a stub, so read Poki's own guides alongside it.
Where to put the build to find its first players
Exporting is a few clicks. The first players take a sequence, and our post on getting your first 1,000 browser game players walks through it. The short version, by engine:
- itch.io, the day the export works. It takes a zip with
index.htmland its assets. itch.io's HTML5 guide sets the limits (1,000 files, 500 MB extracted, 200 MB per file) and warns that paths are case sensitive and absolute paths break. A single threaded Godot build, a Construct zip and a GDevelop zip all go up the same way. - The engine's own audience. GDevelop has gd.games, with feedback built into the dashboard. Use it for the first round of comments while the build is still changing.
- The Bounty Board Arcade, for Godot and Construct. Arcade submission is free and needs no SDK to start. Upload the zip with
index.htmlat the root, uncompressed, within 64 MB per file, 250 MB total and 160 files, and a quick review comes before the listing. Godot 3 and single threaded Godot 4.3 or later builds run there; threaded Godot exports do not. Every game gets weekly top player boards with no code at all. Hosted builds run on an opaque origin wherelocalStorageand IndexedDB are unavailable, so test saves in the preview before launch; our leaderboards and cloud saves guide covers what the SDK adds. GDevelop is not on the Arcade's list of supported upload engines yet, so use the other routes for a GDevelop game. - Curated portals once the first session holds. CrazyGames and Poki review submissions before release and test how players respond. Their requirements, SDK timing and file limits are in our submission guide, so prepare the portal build after the itch.io build has taught you what breaks.
Whatever the order, watch the same signal on each host: how many people who load the page reach actual play. An export that boots on your machine and stalls on a phone will show up there first.
Sources worth checking before you export
- Godot: Exporting for the Web
- Godot: Submitting to the Asset Library
- Construct 3 manual: Publishing projects
- Construct: Publishing to the web
- Construct 3 manual: Local Storage
- GDevelop: Export as an HTML5 game
- GDevelop: Publish on gd.games
- GDevelop: Publish to itch.io
- itch.io: Uploading HTML5 games
- itch.io: Experimental SharedArrayBuffer support
- Bounty Board Arcade: Submit your game
Keep going
Have a browser game players can try?
Submit a hosted URL or HTML5 build for free, then learn what people play.
Related guides

Web Game Growth
How to Submit an HTML5 Game to Web Game Platforms
A practical submission checklist for getting a browser game onto the right platform without rebuilding it for every portal.
- Updated
- October 8, 2026
- Read time
- 13 min read

Web Game Growth
Leaderboards and cloud saves for HTML5 games: an SDK guide
A practical comparison of leaderboard and cloud save options for browser games, including the size caps and access rules the pricing pages leave out.
- Updated
- October 9, 2026
- Read time
- 11 min read

Web Game Growth
Bounty Board Arcade vs CrazyGames, Poki, and Newgrounds
Four platforms, four completely different gates. Here is what each one asks of a browser game, how long the answer takes, and what you hand over to get in.
- Updated
- October 7, 2026
- Read time
- 12 min read