Export to itch.io from Godot
Written for Godot 4. The goal is a build that opens in a phone browser in portrait, with touch working and nothing to download.
1. Make the project portrait
- Project, Project Settings, Display, Window: set Viewport Width to 720 and Viewport Height to 1280 (or 1080 by 1920).
- Under Stretch, set Mode to
canvas_itemsand Aspect tokeep(orexpandif you want to fill taller phones). - Under Handheld, set Orientation to
portrait. - Input Devices, Pointing: turn on Emulate Touch From Mouse so you can test tap controls on your desktop.
2. Add the Web export preset
- Editor, Manage Export Templates: download the templates for your Godot version if you have not already.
- Project, Export, Add, Web.
- Turn Thread Support off. Threads need cross-origin isolation, which itch.io only provides through an experimental option, and most jam games do not need them.
- Leave Extensions Support off unless you use GDExtension add-ons.
- Export Project into an empty folder and name the file
index.html. itch.io requires that exact name at the top level.
3. Zip the build
Zip the contents of the export folder, not the folder itself, so that index.html sits at the root of the archive.
cd export zip -r ../mygame-web.zip .
4. Set up the itch.io page
- Create a new project on itch.io. Kind of project: HTML.
- Upload the zip and tick This file will be played in the browser.
- Embed options: set the viewport to your project size, for example 720 by 1280, or choose Click to launch in fullscreen.
- Tick Mobile friendly, set orientation to Portrait, and enable the Fullscreen button.
- Only enable SharedArrayBuffer support if you left Thread Support on in Godot.
- Save, then set the page to Public so the jam can see it.
5. Submit to Slapjam
Open the Slapjam jam page, click Submit your project and pick your game. You can update the uploaded build until the deadline.
Common problems
- Blank page after loading. Usually threads or a GDExtension the browser cannot load. Re-export with Thread Support off.
- No audio until the player taps. Browsers block autoplay. Start music on the first input, not on ready.
- Slow first load. Compress textures, use WebP for large images and drop unused audio; a jam build should be well under 50 MB.
- Wrong size on phones. Check the stretch settings from step 1 and the viewport size on the itch.io page match.