How ArcByte works

ArcByte is a free home for browser games made with AI tools like Claude, ChatGPT, Gemini, Cursor or v0. Playing never needs an account. Uploading needs a quick Google or GitHub sign-in.

Uploading a game

  1. Sign in with Google or GitHub, then open Upload.
  2. Choose your game:
    • a single .html file with everything inline (what most AI chats produce), or
    • a .zip with an index.html plus its JS, images and sounds. Zipping the folder itself is fine; the top folder is stripped automatically.
  3. Add a title, a short description with the controls, up to 8 tags, and the AI tools you used (required).
  4. Optionally add a thumbnail: PNG, JPEG, WebP or GIF up to 2 MB. A 16:9 screenshot works best.
  5. Pick a screen shape: Landscape, Portrait (phone) or Square. For single .html files you can preview your game in each shape before publishing.

Limits

What works in the sandbox

Every game runs in a locked-down sandbox on a separate domain, so a game can never touch your account, cookies or other games. Most AI-made games work unchanged. A few browser features are switched off.

Works

  • Canvas, WebGL and CSS animation
  • Keyboard, mouse, touch and gamepad
  • Web Audio and audio/video (sound starts after the first tap)
  • Loading your game's own files (fetch, images, JSON, WASM, workers)
  • Libraries and fonts from cdn.jsdelivr.net, cdnjs.cloudflare.com, unpkg.com and Google Fonts
  • Fullscreen, through the player's Fullscreen button or the SDK
  • Saving between visits with localStorage (see Saving progress)

Doesn't work

  • IndexedDB and cookies throw errors. Use localStorage for saves instead. sessionStorage works but starts empty on every load.
  • alert(), confirm() and prompt(). Draw your own messages instead.
  • Pop-ups, new tabs, form submissions and navigating the page away
  • Calling other websites or APIs (including AI APIs) from the game
  • Pointer lock, the camera, the microphone and location

Tip: tell your AI tool "this game runs in a sandboxed iframe without pop-ups; save progress with localStorage only" and it will usually write compatible code first time.

Saving progress

Games that save with localStorage (high scores, unlocked levels, settings) keep their progress automatically. You don't need to change anything.

Optional bridge SDK

Games work without it. Add one line to talk to the player. ArcByte.save and ArcByte.load use the same save as localStorage (under the key arcbyte:<name>), so the same size limit applies; save returns false if the value didn't fit.

<script src="/sdk/v1.js"></script>
<script>
  if (window.ArcByte) {
    ArcByte.ready();                         // game finished loading
    ArcByte.on('pause', () => { /* tab hidden */ });
    ArcByte.on('resume', () => { /* back again */ });
    // ArcByte.requestFullscreen();
    // ArcByte.setShape('portrait');         // 'landscape' | 'portrait' | 'square'
    ArcByte.save('progress', { level: 3 }); // any JSON value, kept between visits
    const progress = ArcByte.load('progress'); // the saved value, or null
  }
</script>

Updating or removing your game

Rules

FAQ

Is it free?
Yes, to play and to upload.
Do players need an account?
No. Anyone can play instantly. An account is only needed to upload, like or comment.
Does it work on phones?
Yes. Portrait games fill the screen on phones, and every game has a fullscreen button. Make sure your game supports touch.
My game uses an AI API at runtime. Will it work?
Not yet. Games can't call outside services from the sandbox.
Why did my zip get rejected?
Usually it's a missing index.html, a file type that isn't allowed, or a file over the size limit. The upload form tells you which.

Upload your game

How it works: uploading AI-made games · ArcByte