How to Split a Sprite Sheet Into Frames (and Pack Frames Into a Sheet)
Game art often arrives as a sprite sheet — many frames on one image — while your engine or editor wants separate files, or the other way around. Both conversions take a minute if the sheet is a regular grid.
Splitting a sheet
- Drop the sheet into the sprite sheet tool.
- Choose how to cut: by cell size (for example 32×32) or by rows × columns.
- If the sheet has a border, set Offset X/Y; if frames have gaps between them, set spacing.
- Check the orange grid overlay — every frame should sit neatly inside a cell.
- Download the frames as a ZIP of numbered PNGs.
Fully transparent cells (common at the end of a row) are skipped by default.
Packing frames into a sheet
Drop the frames in order — names like run_01.png, run_02.png … run_10.png are sorted naturally — choose columns and padding, and download the sheet plus a JSON file with each frame's x, y, width and height. The JSON follows a simple hash format similar to TexturePacker's, easy to read in Godot, Unity, Phaser or your own code.
Pixel art stays pixel-perfect
Frames are copied pixel by pixel, without smoothing or resampling, so hard edges stay hard. When you scale the game up, make sure you use whole-number factors — the pixel-perfect resolution calculator shows which base resolutions do that cleanly.
Limits
- The tool expects a regular grid. Tightly packed sheets with frames of different sizes need their original atlas data.
- Animated GIFs load only their first frame.
Want a matching color palette for new frames? Extract one with Color Palette from Image.