First: which situation are you in?
- Your image already contains multiple frames — a filmstrip, a grid of poses, frames exported from Aseprite/Krita spaced evenly. → Route 1: slice it.
- Your image is a single character and you need an animation — one idle pose, no frames. → Route 2: generate the missing frames.
- Your image is a single sprite and that's fine — items, icons, a static bullet. → Route 3: pack it as a 1×1 sheet.
Route 1 — Slice a strip or grid you already have
This is the mechanical case, and it's free and instant:
- Open the sprite sheet maker and switch to Slice sheet → frames.
- Drop your image and set columns × rows (e.g. a 4-pose walk strip is 4×1).
- The tool cuts exact frames — then it re-packs them with spacing and optional 1px extrusion, and you download the PNG + JSON atlas.
Check before slicing: frames must be evenly spaced. If poses are scattered (not on a grid), no automatic slicer can save you — cut the frames manually in any editor first, then pack them with the same tool's pack mode.
Flattened background? If the strip is on solid white instead of transparency, remove the background in your editor first (magic wand / color-to-alpha). Slicing preserves whatever pixels are there — including the white.
Route 2 — Generate the missing frames from one character
One static character can become a full frame set with an image model:
- Open the AI sprite sheet generator.
- Describe the character (or drop the same style/character into an image editor that supports image-to-image, then bring the result here).
- Pick a grid — 3×3 is a good first try for a walk cycle — and generate.
- The tool keys out the background, slices the grid, and packs a sheet. Judge it as a prototype: image models drift between frames, so generate a few times and keep the best result, or trace over it for production art.
The local tools are free. AI generation uses your own Gemini key and may require Google billing and available quota; check the current API pricing before generating. Prompts and keys go directly to Google; imported frame files are processed locally.
Honest limits: AI frame grids are strong for prototypes, jams and placeholders; frame-to-frame consistency is not guaranteed. If you need pixel-perfect animation, hand-drawn frames (Aseprite, Krita, LibreSprite) are still the reliable route — you can pack those in the maker afterwards.
Route 3 — Pack a single sprite
A sheet with one frame is still a sheet, and some pipelines want the atlas format regardless:
- Open the maker (pack mode).
- Drop your PNG — a 1×1 sheet is produced with correct atlas metadata.
- Add more sprites later by dropping them in; the shelf packer grows the sheet and the JSON atlas stays consistent.
Engine import cheat sheet
- Unity: import the PNG with Sprite Mode Multiple, then use an atlas JSON importer or slice its packed frame rectangles manually. Use grid slicing only when the source has equal cells with no gaps.
- Godot 4: the packer defaults to 2px spacing and can place frames unevenly. Create an
AtlasTextureper JSONframerectangle, assign the PNG as its atlas and the rectangle as its region, then add those textures toSpriteFramesfor AnimatedSprite2D. Hframes/Vframes applies only to an original equal-cell grid with no gaps. - Phaser 3:
this.load.atlas('sprites', 'spritesheet.png', 'spritesheet.json'). Load your exported files in the playback example. - PixiJS:
await Assets.load('spritesheet.json')— the JSON this site exports follows that format. - GameMaker: its grid importer needs equally sized cells in a regular grid. Use an atlas-aware workflow for shelf-packed output, or prepare a separate grid sheet; spacing and shelf positions remain even when extrusion is off.
- Web CSS: the atlas JSON rectangles map 1:1 to
background-positionvalues.
Checklist before you ship the sheet
- All frames the same size (or atlas metadata that says otherwise).
- Transparent background — PNG with alpha, never flattened white.
- Consistent frame order — animation order is the order in the atlas.
- Spacing 2px+ and 1px extrusion if your engine uses linear filtering (stops color bleeding between frames).