Technical requirements
Formats, file sizes, engines, hosting and how your game runs in our player.
Format
Your game must be HTML5: it has to run in a browser using web technology such as HTML, JavaScript, WebGL, WebGPU or WebAssembly. It can't need a plug-in, an install or a separate app.
Engines
KoolGames doesn't depend on any one engine. If your engine can export a web build, we can test it. That includes engines such as Unity (WebGL), Godot, GameMaker, Construct, Phaser, PlayCanvas and Defold, and games built with no engine at all.
Keep your export as small as you can. For Unity, turn on compression and strip code you don't use. If you use compressed files, make sure your server sends the right headers, or use the fallback option in your export settings.
Sending your build
You can give us your game in two ways.
Embed URL
Host the game yourself and give us a public link to the playable build.
- It must start with https://.
- It must load without a login.
- It mustn't be on a KoolGames address.
- Your server must allow the game to be shown in a frame. If it sends an X-Frame-Options header or a frame-ancestors rule, these must allow KoolGames.
Zip upload
- Drop a .zip or a folder onto the form, up to 500MB in total and 50MB for any one file.
- index.html must be at the top level. If everything is inside one folder, we lift it out for you.
- File names can only use English letters, numbers, dashes, dots and spaces.
- Programs and server scripts, such as .exe, .dll, .sh and .php files, aren't allowed.
- All paths inside the game must be relative. For example, use assets/hero.png and not /assets/hero.png.
We check every file, then review the game and host it for you on a separate address, so games never run on the main KoolGames site. [Whether KoolGames provides a CDN, and how zip builds are hosted]
Images and video
| File | Format | Limit |
|---|---|---|
| Cover image | PNG, JPG or WebP, 16:9, at least 1280×720 | 5MB |
| Trailer video (optional) | MP4 or WebM, short and muted | 20MB |
| Game files | ZIP or folder with index.html at the top level | 500MB in total, 50MB per file |
The cover is what players see first, so make it clear at small sizes. The trailer plays on game cards when a player hovers over them.
How your game runs
Your game loads in an iframe after the player presses Play. The frame has these permissions:
- Allowed features: autoplay, fullscreen, gamepad, accelerometer and gyroscope.
- Sandbox: scripts, same-origin, pointer lock, popups, forms and orientation lock.
Your game can't reach the page around it.
Saving progress
There's no KoolGames save system. Use the browser's own storage, such as localStorage or IndexedDB, and allow for it being unavailable, because some browsers block storage in frames. Your game should still run if saving fails.
Sound and the mute button
Our toolbar has a mute button. Browsers don't let us silence a game hosted on another address, so we send your game a message and your game mutes itself:
window.addEventListener("message", (event) => {
if (event.data?.type === "koolgames:mute") {
setMuted(event.data.muted);
}
});Replace setMuted with your own function. Supporting this is optional, but players expect it to work.
Browsers
Support the current versions of Chrome, Firefox, Safari and Edge, on the devices you tick on the form.
Multiplayer
We don't provide servers. If your game is multiplayer, you run the servers yourself. They must use secure connections (https:// and wss://), and the game should explain what's happening if a server can't be reached.