RunLocalTools

Sprite Sheet Cutter

Split a sprite sheet into individual frames without leaving your browser. Cut by grid, by cell size in pixels, by auto-detecting each sprite, or from an existing atlas JSON, then trim the frames, preview the animation and download a zip of images. Nothing is uploaded.

How to cut a sprite sheet into frames

  1. Drop your sprite sheet into the box. PNG works best because it keeps transparency, but JPEG, WebP, BMP, AVIF and GIF (first frame only) are accepted too. Drop several sheets to cut them all with the same settings.
  2. Look at the suggested grids under the toolbar and click the one that matches, or choose a slicing mode yourself. The overlay on the sheet shows every frame with its number.
  3. Click any frame you do not want to skip it, then press Cut & download. One frame downloads as a single image, several download as a zip, and with more than one sheet each gets its own folder inside the zip.

Four ways to slice a sprite sheet

Grid: columns and rows

Tell it how many columns and rows the sheet has and it divides the image evenly. A margin around the edge and spacing between cells are supported. If the size does not divide evenly, you are warned that some frames will be one pixel wider, and the cuts still tile with no gaps or overlap.

Cell size in pixels

Enter the exact cell width and height, the way most game engines describe a sheet, with an offset before the first cell and spacing between cells. Any leftover strip at the right or bottom edge is reported, and you can choose to keep it as partial cells.

Auto-detect sprites

For sheets where the sprites differ in size or sit unevenly, auto-detect finds each one from its pixels. It works on a transparent background or on a solid colour that you pick straight from the sheet, such as the magenta used in older sheets. A merge distance keeps a detached part, like a sword or a shadow, together with its character.

Atlas JSON

If you already have an atlas from TexturePacker, Phaser or Aseprite, load its JSON and the tool cuts exactly those rectangles. Trimmed frames can be restored to their original size. Rotated frames are not supported and are skipped with a warning rather than cut wrongly.

Not sure which grid you have? Suggest a grid ranks the candidates that divide your sheet, preferring ones that do not slice through a sprite, and it can read cell size and spacing straight from evenly spaced gaps.

Skip empty frames, trim and line everything up

Empty cells are skipped automatically, and you can click any frame on the sheet to skip it yourself. Frames can be kept as full cells, trimmed tightly to their pixels, or trimmed and then padded to one common size. For padded frames you choose the alignment: bottom centre keeps a character’s feet in the same place from frame to frame, or use centre or top left.

Output can be scaled from 1× to 8× with nearest-neighbour scaling, so pixel art stays sharp instead of blurring. Choose lossless PNG or WebP. File names come from a template with tokens for the sheet name, index, row, column, position and size, for example {name}_{r}_{c}, and numbering can start at 0 or 1 and either follow the order of the frames or keep the grid position when you have skipped some.

Preview the animation before you export

Every cut is previewed as an animation you can play at 1 to 60 frames per second, looped or ping-pong. Pick a single row to check one walk cycle on its own, or step through frame by frame. If your system asks for reduced motion, the preview starts paused. The preview is for checking timing and alignment; the export is the individual frames.

Export data for Phaser, Godot, CSS or a JSON atlas

Alongside the frames you can copy or download data for the sheet. Choose a JSON atlas in hash or array form (the layout used by Phaser, Pixi and TexturePacker), CSS classes that position each sprite, a Phaser spritesheet call with an animation for each row, or Godot 4 Sprite2D settings. The Phaser and Godot snippets need a uniform grid and say so when the sheet is not one. All of it describes the original sheet at its native size, so use it with the original image.

Works with the rest of your asset workflow

If a sprite sheet reaches you as Base64 inside a JSON or CSS file, decode it first with the Base64 → File Reconstructor; a Send to button hands the decoded image straight over, so you can cut it without saving it. If all you want is an even split into equal tiles, such as a poster or a carousel, the Split Images tool is simpler.

Before cutting, you can shrink an oversized sheet with the Resize tool or trim its borders with the Crop tool. After cutting, Rotate / flip can mirror right-facing frames to make left-facing ones, the Format converter turns the frames into another image format, the Compress tool reduces their file size, and the Color picker pulls a palette out of the art.

Private, and built for big sheets

The sheet is read and cut in your browser, so nothing is uploaded and no account is needed. Sheets up to about 24 megapixels support every feature, including auto-detect, skipping empty frames, trimming and colour keying. Larger sheets can still be cut by grid or cell size. Some phones cannot draw images above roughly 16.7 megapixels, and you are warned when a sheet is that large. The only download is a small open-source zip library, fetched the first time you export a zip.

Sprite Sheet Cutting: Common Questions

How do I split a sprite sheet into individual frames?

Drop the sheet in, choose a slicing mode (grid, cell size, auto-detect or atlas JSON), check the numbered overlay, and press Cut & download. You get a zip of numbered images, one per frame.

What if my sprites are different sizes or unevenly spaced?

Use auto-detect. It finds each sprite from its pixels instead of assuming a grid, and you can raise the merge distance to keep detached parts together. Turn on trimming and padding if you want every frame to end up the same size.

Can it remove a solid background colour?

Yes. Pick the background colour from the sheet or use the corner pixel, set a tolerance for slightly off shades, and the colour is ignored when detecting sprites and can be made transparent in the exported frames.

Does it export an animated GIF?

No. The animation preview is there to check timing and alignment, and the export is the individual frames as PNG or WebP, plus atlas data. Import the frames into your engine or animation tool from there.

How is this different from splitting an image into equal parts?

The Split Images tool cuts any picture into an even grid, which suits posters and carousels. This tool is built for sprites: it works in cell sizes with offset and spacing, finds sprites automatically, skips empty cells, trims and aligns frames, previews the animation and exports engine data.