gif→sprite sheet

Sprite sheet cutter

Slice a sheet into separate PNG frames by grid or by auto-detect, strip the background colour, and download them in one ZIP.

Sample sheet: drop your sprite sheet here

Loading

_0.png

Click a cell on the sheet to leave it out. Your file stays on your device.

For the sheets a plain grid slicer chokes on.

auto

Finds sprites without a grid

Auto-detect outlines every separate sprite, whatever its size or position. Loose parts within a few pixels, a shadow, a sword, a speech bubble, stay with their character, and you set how far apart counts as separate.

#f0f

Clears flat backgrounds first

Magenta, green and white backdrops are removed before cutting, so auto-detect works on sheets with no transparency and the PNGs come out with a clean alpha channel. By default the colour is kept where it appears inside a sprite.

▁▁

Frames that line up

Uneven sprites are padded to one common size and aligned by their bottom edge, so a character’s feet stay on the same line in every frame and the animation doesn’t bob.

≠

Doesn’t refuse awkward sizes

A sheet whose width isn’t an exact multiple of the cell still cuts. You set offset and gap, see the lines on the image, and skip cells with a click.

Cut a sheet in three moves.

  1. 1

    Drop the sheet on the dark panel. A flat background colour is detected and removed, and the grid is guessed from the gaps between sprites.

  2. 2

    Fix the grid, or switch to Auto-detect for sprites of different sizes. Every cut is outlined on the sheet; click a cell to leave it out.

  3. 3

    Name the files if you like and press Download. You get one ZIP of PNGs, numbered in reading order.

When you need separate frames

Engines can slice a clean grid on their own, so cutting a sheet into files is for the cases where that isn’t enough. The common ones: the sheet came from an asset pack or an old game and mixes sprites of different sizes; an image generator produced a “sheet” with uneven spacing; you only want a few frames out of many; or the next tool in line takes loose images. Poiyomi’s flipbook in VRChat is built from separate images in Unity, and most video editors and animation programs import numbered PNGs, not grids.

Three ways to find the frames

ModeUse it whenWhat you enter
Rows × colsThe grid is regular and you can count itNumber of columns and rows
Cell sizeYou know the frame size in pixelsWidth and height of one cell
Auto-detectSprites differ in size or aren’t alignedNothing; adjust how close parts must be to join

In the two grid modes, Offset X/Y shifts the grid away from the top-left corner and Gap X/Y is the space between cells. Sheets from tile-set packs often have a 1 px offset and a 1 px gap; you’ll see the cut lines land on the sprites’ edges until both are set.

How auto-detect decides what one sprite is

It treats every group of touching, non-transparent pixels as one piece and draws a box around it. Real sprites often have pieces that don’t touch: a shadow under a jumping character, sparks, a weapon held away from the body. The Join parts within slider merges boxes that sit closer than that many pixels. At 2 px, the default, most characters come out whole. If a shadow is being cut as its own sprite, raise it. If two neighbouring characters merge into one box, lower it.

The sprites are then numbered the way you’d read them: row by row from the top, left to right inside each row.

I’d reach for auto-detect on anything an image generator made. Those sheets look like grids and never are; the columns drift by a few pixels and a fixed grid clips an arm somewhere. Detection doesn’t care where the sprites sit.

Removing the background colour

Older sheets and generated ones usually sit on a solid colour because the format or the generator had no transparency. When you open such a file, the tool reads the top-left pixel and removes that colour. Tolerance widens the match to nearby shades; raise it when a faint outline of the old background clings to the sprites, which happens to any sheet that has been through JPG compression.

By default the colour is only cleared where it is connected to the edge of the image. That protects sprites that use the same colour on purpose, like black outlines on a black sheet or white eyes on a white one. The cost is that enclosed gaps, such as the space between an arm and the body, keep the background. Turn on Also inside sprites to clear those too.

Keeping the frames aligned

If you cut each sprite to its own outline and stop there, the files all have different sizes, and an animation made from them jitters because each frame is centred differently. The cutter pads every frame to the width and height of the largest one. With Line sprites up by their feet on, the padding goes on top, so the bottom edges match: right for characters standing on the ground. Turn it off to centre each sprite, which suits spinning coins, explosions and other things without a floor.

The small animation in the corner plays the frames as they will be saved, so you can see whether the alignment holds before you download anything.

What goes wrong

One frame contains two sprites. In a grid mode, the cell is too big: check the counts. In Auto-detect, the two are closer than the join distance: lower it.

A sprite is split in two. The opposite problem. Raise the join distance, or go back to a grid mode if the sheet is regular after all.

There are dozens of tiny extra frames. Stray pixels or compression specks are being picked up as sprites. Raise the tolerance if they are background remnants, and click the leftover boxes to drop them.

Frame order is wrong. Frames are numbered in reading order. If the sheet runs top to bottom in columns instead, cut it and reorder the files in the sprite sheet maker, which lets you move frames earlier and later before packing them again.

To watch the frames as an animation or save them as a GIF, the same controls live on the sprite sheet to GIF page.

Questions

Something else? Email hello@giftospritesheet.com.