Sprite Lab

Turn a character image into game-ready animated sprite strips — key, animate, slice, pack. ← back to the arcade

Load something

Drop a character image (from ChatGPT or anywhere), an existing sprite sheet, an animated GIF, or a short video (MP4/WebM from Sora, the Gemini app, …). Everything is processed locally in this page — nothing is uploaded anywhere.

drop a file here, or click to pick one

Key out the background

AI images rarely come with real transparency. Edge flood removes the background connected to the image border (safe for enclosed details); everywhere keys every matching pixel (use for sheets with colored gutters).

Before

After

Animate with AI (bring your own free key)

Uses Google's Gemini image model via your own key (aistudio.google.com → “Get API key”). Heads-up: since Dec 2025 the API free tier has zero image quota — this stage needs billing enabled on the key's project (~$0.04/image). The free route: generate the sheet in the Gemini app or AI Studio's web UI (both still free) or ChatGPT, and load it in step 1 — the rest of the pipeline is identical. The key is stored only in this browser's localStorage and sent only to Google; no key, no network.

advanced: model override

Slice the sheet, collect frames

Sheet grid

No sheet loaded — load one in step 1, or generate one in step 3.

Sliced cells

Kept frames

These become the exported strips. × deletes, ‹ › reorders within an animation.

Normalize

Crops all frames to a shared bounding box (no jitter), anchors bottom-center, and scales to the target size with crisp nearest-neighbor pixels.

Preview & export

Animation preview

Strip & metadata

The zip unpacks as vendor/art/<pack>/ — drop it in the repo's vendor/art/, then node scripts/vendor.mjs add <game> art/<pack>. Strip format matches the arcade's PIX_META convention: horizontal frames, [idle…][run…] first, other animations appended in listed order.

Sprite Lab is a dev tool (ADR-8): fully offline except the optional bring-your-own-key Gemini call in step 3.