How to Publish an HTML5 Game on Steam
Short answer: Steam cannot take a folder of HTML — it needs a real application for each platform, with the Steamworks SDK loaded, uploaded to your app's depots. GemShell does all three: open your game's HTML5 export in GemShell, enter your Steam App ID, press build, and it produces the Windows, macOS and Linux applications and uploads them to Steam. No Electron setup, no native modules, no SteamCMD scripts.
What Steam needs from a web game
A browser game is a folder with an index.html. Steam launches executables, so getting a web game onto Steam means:
- A desktop application per platform — an
.exefor Windows, an.appfor macOS, a Linux binary — that opens your game in its own window, with no browser around it. - The Steamworks SDK loaded into it, so Steam knows the game is running and your game can unlock achievements, sync cloud saves and so on.
- An upload to your depots through SteamCMD, with the build scripts Steam expects.
Doing this by hand usually means Electron or NW.js, a native Steam module compiled for each platform, per-platform build machines, and SteamCMD configuration. GemShell is a desktop app that does all of it from one folder.
Step by step
1. Export your game to HTML5
Every engine below can export to a folder with an index.html. That folder is all GemShell needs.
| Engine | How to export |
|---|---|
| Construct 3 | Menu → Project → Export → Web (HTML5), then unzip the result |
| GDevelop | Export the game as HTML5 to a local folder (the manual web build) |
| RPG Maker MV / MZ | File → Deployment… → platform Web browsers/Android/iOS |
| Phaser, Three.js, PixiJS, Kaplay | Your bundler's output — dist/ with Vite, or wherever your index.html ends up |
| GameMaker | Build the HTML5 target to a folder |
| Unity | File → Build Settings → WebGL → Build |
| Hand-written | The folder with your index.html |
2. Open the folder in GemShell
Start GemShell and open that folder. Nothing gets added to or changed in your project.
3. Turn on Steamworks and enter your App ID
Your App ID comes from the Steamworks partner site once you have paid the Steam Direct fee for your game. Until then you can test everything with App ID 480, Valve's public test app (Spacewar).
4. Tick the platforms and build
Choose Windows, macOS and Linux — all three are built from whichever computer you are on. A few seconds later you have:
YourGame.exefor Windows (x64, ARM64 and 32-bit)YourGame.appfor macOS (Apple Silicon and Intel)- a
yourgamelauncher for Linux (x64 and ARM64)
Each one opens your game in its own window with your name and icon, with the Steamworks SDK already loaded.
5. Upload to Steam
In GemShell's deploy settings, give it your Steam login and map each platform to its depot once. From then on, one click builds and uploads every platform to the branch you choose. See Deploy to Steam & itch.io.
Achievements, cloud saves and the rest
Once Steamworks is enabled, your game can talk to Steam in JavaScript through a global steam object:
javascript
if (typeof steam !== 'undefined' && await steam.isAvailable()) {
await steam.unlockAchievement('FIRST_BLOOD')
await steam.fileWrite('save.json', JSON.stringify(save))
}GemShell covers 137 Steamworks calls in 23 areas — achievements, stats, cloud saves, leaderboards, lobbies, P2P networking, rich presence, the overlay, the Workshop, Steam Input, the inventory, the recording timeline, voice and more. See Steamworks for JavaScript games and the full coverage list.
Questions
Can I put a browser game on Steam without rewriting it?
Yes. The game itself stays exactly as it is. GemShell wraps the HTML5 export in a desktop application, so the same code that runs in the browser runs on Steam.
Do I need a Mac to make the macOS build?
No. GemShell builds macOS, Windows and Linux versions from any of the three.
What does it cost?
GemShell Lite is free and builds for Windows, macOS and Linux. Steamworks works in full — achievements, the overlay, cloud saves — against Valve's test app, Spacewar (App ID 480), so you can try everything before you pay. To release on Steam under your own App ID you need GemShell Pro, a one-time $29.95, which also adds iOS and Android, custom icons, no splash screen, one-click deploy and plugins. Get it on itch.io.