Skip to content
Spellkit

Sprite Analyzer

Analyze and slice sprite sheets.

Processed in your browser — never uploaded, discarded after download.

What is Sprite Analyzer?

Sprite Analyzer is a free sprite sheet splitter that slices a packed sheet back into individual frames, right in your browser. Set the columns and rows to match the sheet's grid and it divides the image evenly, then downloads every frame as a numbered PNG in a ZIP.

Key features

  • Splits a sheet evenly into columns × rows frames
  • Numbered output: name_000.png, name_001.png, and so on
  • Row-major order keeps animation frames in sequence
  • Downloads all frames together in one ZIP

How to slice a sprite sheet into frames

Animations and tilesets often ship as a sprite sheet — one PNG with every frame packed into a grid. Sometimes you need the frames back out as separate images: to import them into an engine or editor that expects one file per frame, to re-time an animation, or to reuse a single tile. This tool is the reverse of a sprite packer — it cuts a sheet into individual PNGs, in your browser.

Steps

  1. Choose a sprite sheet image (PNG, or any image your browser can open).
  2. Set columns and rows to match the sheet's grid. The live count shows how many frames that produces — columns × rows.
  3. Slice & download. On desktop you get a ZIP; on mobile the frames save individually.

How the slicing works

The tool divides the sheet into an even grid: each frame's width is floor(sheetWidth ÷ columns) and its height is floor(sheetHeight ÷ rows). It then walks the grid in row-major order — left to right across the top row, then down — and exports each cell as a numbered PNG: name_000.png, name_001.png, name_002.png, and so on. That numbering matters: it preserves the animation sequence, so importing the files in filename order replays the animation in the right order.

The critical requirement: a clean, uniform grid

This is a pure grid cutter, not a smart sprite detector. It works perfectly only when every frame is the same size and the frames tile edge-to-edge with no gaps. Two things follow from that:

  • You must know the exact column and row count. If a sheet has 6 frames in a 3×2 layout and you enter 4×2, every cut lands in the wrong place and all eight outputs are misaligned. When in doubt, count the frames along one edge.
  • Gutters and padding break alignment. Many texture-atlas exporters add a 1–2 px transparent margin between sprites to prevent bleeding. This tool doesn't skip that padding — it assumes frames touch — so a padded atlas won't line up. Use a sheet with no spacing, or one exported specifically as a uniform grid.

Gotchas

  • Non-divisible dimensions lose a sliver. Because sizes are floored, a 512 px-wide sheet split into 3 columns yields 170 px frames (3 × 170 = 510), quietly dropping the last 2 px column. Sheets whose dimensions divide evenly by your grid avoid this.
  • Empty cells still export. A 3×3 grid with only 7 real frames still produces 9 PNGs — the last two are blank. Delete the extras after downloading.
  • Order is fixed to the grid. If your engine expects a different frame order, rename the files after export; the tool always numbers row-major.

Frequently asked questions

How are the sliced frames named and ordered?
Each frame is saved as name_000.png, name_001.png, and so on, padded to three digits, in row-major order (left to right across each row, then down). Because of that numbering, importing the files in filename order replays the animation in the correct sequence.
My frames come out misaligned. What went wrong?
Almost always the grid is wrong. The tool divides the sheet evenly into columns x rows, so reading a 3x2 sheet as 4x2 shifts every cut. Count the frames along one edge to get the exact column and row numbers.
Does it handle sprite sheets with padding or gutters between frames?
No. It assumes frames tile edge to edge with no gaps. Many texture atlases add a 1 to 2 px transparent margin between sprites to stop bleeding, and that padding will throw off every cut. Use a sheet exported as a uniform grid with no spacing.
Why did the last column or row lose a couple of pixels?
Frame size is floored: a 512 px-wide sheet split into 3 columns gives 170 px frames (3 x 170 = 510), quietly dropping the last 2 px column. Use sheet dimensions that divide evenly by your grid to avoid it.
Do empty grid cells still get exported?
Yes. A 3x3 grid with only 7 real frames still produces 9 PNGs, with the last two blank. Just delete the extra empty frames after downloading the ZIP.

Privacy

Slicing the sheet back into frames is done locally against the image's pixel grid; the sprite sheet you upload never leaves your browser.