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

  1. Drop the sheet into the sprite sheet tool.
  2. Choose how to cut: by cell size (for example 32×32) or by rows × columns.
  3. If the sheet has a border, set Offset X/Y; if frames have gaps between them, set spacing.
  4. Check the orange grid overlay — every frame should sit neatly inside a cell.
  5. 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.

Try the free tool

Related guides