Skip to content
Browse documentation

Upload an existing browser game

Bring an existing HTML game or browser export to SpawnKit without changing engines or adopting a starter template.

View Markdown
On this page

What you can upload

Use a static browser build with index.html as its entry point. This can be a JavaScript game, an existing HTML game, or an engine's web export. Native executables and projects that require a server process cannot run as a static browser upload. Features requiring special browser headers or server APIs need a compatibility check.

You do not need game.config.json, .spawn/state.json, pnpm, or the SpawnKit CLI for browser ZIP upload. Those requirements belong to generated projects and CLI source deployment.

1. Build or export using your existing tools

Use the build command already defined by your project, or your engine's web export. For a plain HTML game, collect its HTML, scripts, styles, and media into one output folder. Keep relative references valid and test the result with a local HTTP server, not only a file:// URL.

npm
npm run build

These commands run your existing build script; they do not install or switch package managers. Output may be called dist, build, or web-export. Use the directory your tool actually produces. Hosted source-build support is separate from this locally built ZIP workflow.

2. ZIP the browser files

Archive root
my-game.zip
├── index.html
├── game.js
├── styles.css
└── assets/

ZIP the contents of the output folder, not the folder itself. Keep the expanded game below 20 MiB and fewer than 1,996 files. ZIP selection is limited to 64 MiB; that does not raise the expanded limit. Exclude source secrets, .env, node_modules, and editor files. See packaging commands for PowerShell and Bash examples; substitute your output directory for dist.

Listing metadata is optional in the archive. If you have no spawnkit.config.json, enter your title, description, genre, and media in the upload form. You do not need to add the SpawnKit Vite plugin to an existing project.

3. Upload through the dashboard

  1. Open Upload game and sign in.
  2. Select your ZIP in Game files. Review any imported listing values.
  3. Complete Details with the title, description, genre, and 2D/3D selection.
  4. Add or review the cover and optional trailer in Media.
  5. Choose Deploy game and follow the deployment output. Keep the resulting project and game links. This creates a new project; see Publishing an update before uploading another release of the same game.

A cover can be PNG, JPEG, WebP, or SVG up to 1 MiB. A trailer can be MP4/WebM up to 2 MiB and 60 seconds. Start the clip on gameplay. Media processing warnings can omit invalid listing media without preventing the game from deploying.

4. Check the hosted game

  1. Open the returned game URL and wait for the game to start.
  2. Test movement, start/restart, sound after a user gesture, and loading additional levels.
  3. Check browser errors and failed asset requests. Match filename capitalization exactly.
  4. Test on the devices you plan to list as supported.

This upload flow creates a new project. It is not an update-existing-project control. Keep your project ID and consult the dashboard guide for monitoring and the publishing guide for current update paths. Public discovery approval is separate from hosting success.

Need a hand? Get support

Explore the guides

Build your first game

Download a standalone game kit, run it locally, and make your first change.

Create and build a game with @spawnkit/cli

Start in a parent folder, generate your game, then run every development command inside the new game folder.

Upload an existing browser game

Upload a self-contained browser build. Your original source, engine, and build tools can stay as they are.

Publish your game

The dashboard accepts a ZIP of your built game. You will need an account to deploy it.

Use the SpawnKit dashboard

The dashboard manages your hosted games. Your editor or AI agent remains where you change and build your game source.

Make a browser game with Codex

Use Codex with a standalone TypeScript game kit. Start with a working scene and improve it one playable change at a time.

Make a browser game with Claude Code

Use Claude Code with a standalone TypeScript game kit. Start with a working scene and improve it one playable change at a time.

Make a browser game with Cursor

Use Cursor with a standalone TypeScript game kit. Start with a working scene and improve it one playable change at a time.

Extend your game

Find the right files, make a focused change, and check it in a playable build.

A complete publishing example

Follow a small example from editable source to a ZIP with index.html at its root. Use your own game title, description, and artwork.

Add tools to an existing game

Keep a recoverable baseline, inspect the proposed changes, and verify one addition at a time.

Test and debug your game

Combine automated checks with a short playthrough of the production build. A successful build alone does not verify gameplay.

Project structure and configuration

Your downloaded kit is a standalone TypeScript project. Its files belong to you and do not depend on the SpawnKit repository.

SpawnKit CLI reference

A command-by-command reference to the implemented CLI. Local generation works without an account; hosted operations require access to a project.

Accounts and access

Building locally is account-free. Publishing requires an account with access to the target project.

Agents and API resources

Public discovery endpoints are account-free. Use the dashboard or @spawnkit/cli for publishing.

16 guides available