Sprite sheet cutter — slice frames, preview animation and export
Slice a sprite sheet into frames, preview the animation, reorder or drop frames, and export PNGs, a ZIP, an animated GIF, a repacked sheet or JSON metadata. Pixels are cut exactly, with no smoothing, and the sheet is never uploaded.
Runs in your browser — your input is not uploaded to ToolsNow.
Your files are processed locally in your browser and are not uploaded to ToolsNow.
Auto-detection is a suggestion, not an answer. It works by finding fully transparent rows and columns, so it succeeds on sheets with clean gutters and fails on sheets whose frames touch, whose background is a solid colour rather than transparent, or whose sprites do not reach the edges of their cells. Every value it produces stays editable, and nothing is exported until you are satisfied with the overlay. Frames are cut with no scaling or smoothing, so pixels come out exactly as they went in; a frame that extends past the sheet edge is marked with a warning triangle and exported at the declared size with transparent padding rather than silently cropped. Individual PNG downloads are capped at 40 files because most browsers block a rapid series of downloads — use the ZIP above that. Images up to 50 megapixels (about 8000 × 6000). Larger files are refused rather than risking the tab being closed by the browser.
How to use
- Add a sprite sheet. Drop, choose or paste a PNG. Transparency helps a great deal with detection.
- Let it try to detect the grid. It looks for fully transparent rows and columns. When it finds a regular pattern it fills in the frame size, spacing and margins for you.
- Check the overlay and correct anything wrong. Every value stays editable. The overlay is the truth — if the boxes do not sit on the sprites, adjust frame size first, then spacing, then margin.
- Select and order the frames. Click a frame to include or exclude it. Tab and Space work too, and Alt with the arrow keys moves a frame earlier or later.
- Preview the animation. Set the frame rate and press Play, or use Step to advance one frame at a time.
- Export. A ZIP of PNGs plus metadata is usually what you want. Individual PNGs, an animated GIF, a repacked horizontal or vertical sheet and JSON frame data are all available.
Questions
Why did auto-detection get it wrong?
Detection works by finding fully transparent rows and columns, so it fails in three common cases: sheets whose frames touch with no gutters, sheets on a solid background colour rather than transparency, and sheets where sprites do not reach the edges of their cells — in which case it reports the sprite’s size rather than the frame’s. It is a suggestion, never an answer, and every value it produces is editable.
My frames are shifted by a few pixels each time. What is wrong?
Almost always spacing versus margin. Margin is the blank border before the first frame; spacing is the gutter between frames. A row of four frames has three gutters, not four — if a small error accumulates across the row, spacing is the value to change; if every frame is shifted by the same amount, it is the margin or offset.
What is offset for, if there is already a margin?
For sheets whose first frame does not start where the margin implies — an extra nudge applied after the margin, so you can correct the starting point without disturbing a spacing value that is already right.
What happens to frames that run past the edge of the sheet?
They are marked with a warning triangle and exported at the declared frame size with transparent padding, rather than silently coming out smaller than every other frame. Sheets whose dimensions do not divide evenly are common and are not treated as an error.
Are the pixels changed at all?
No. Frames are copied out pixel by pixel with no scaling, no smoothing and no re-encoding of the colour data, and written into the export the same way. The PNG frames and repacked sheets are exact. The GIF export is the one exception, because GIF is limited to 256 colours per frame.
Why does the exported GIF run at a slightly different speed?
GIF stores frame delays in hundredths of a second, so not every frame rate is exactly representable — 12 fps is 8.33 hundredths and rounds to 8, which is 12.5 fps. The effective rate is shown next to the frame-rate control rather than left as a mystery.
Can I use this without a mouse?
Yes. Every control is a labelled field or button. In the frame list, Tab moves between frames, Space or Enter includes or excludes one, and Alt with the left or right arrow keys moves a frame earlier or later in the order.