Add a sprite sheet
Drop in the sheet you want cut, as a PNG, JPG, WebP, or GIF. The grid gets detected for you. Bring its .json atlas along and the cuts follow that instead.
Free sprite sheet cutter: split a sheet into frames
A sprite sheet cutter that works out the grid so you do not have to. Drop in a finished sheet and it gets scanned for its repeating cell size, the cut lines appear over the image, and every frame comes back out as its own PNG in a ZIP. If you have the sheet's JSON atlas, hand that over instead and the cuts follow its exact rectangles, which is the only reliable way to slice a tightly packed atlas. Nothing is uploaded: the decode and the slicing both happen in your browser, so there is no queue, no account, and no watermark.
How it works
- Drop in the sprite sheet you want to cut, or its ZIP with the atlas alongside
- The sheet is scanned for a repeating grid and the rows and columns are filled in for you
- Check the cut lines over the preview. Adjust the rows and columns if the guess needs help, or supply a .json atlas to cut on exact rectangles instead
- Tidy up on the timeline: drag to reorder, delete trailing empty cells, hide any frame you want left out
- Download every frame as its own PNG in a ZIP, grab just the frame you have selected, or re-pack the sheet at a new layout
Features
- Cuts a sprite sheet into separate PNG frames, with the grid worked out automatically
- Downloads the whole set as a ZIP, or a single selected frame on its own
- Reads a TexturePacker, Phaser, or Pixi JSON atlas and slices on its exact rectangles
- Takes a ZIP holding a sheet and its atlas together
- Shows the cut lines over the sheet before you commit, so a wrong guess is obvious
- Keeps per-frame transparency and cuts on pixel boundaries, with no resampling or blur
- Returns frames at their original size, not padded to a shared cell
- Cut frames land on a timeline you can reorder, thin out, or hide entries in before export
- Press play to check the cut landed on whole frames rather than halves
- Handles sheets up to 4096 by 4096 pixels, cut into as many as 256 frames
- The decode, the detection, and the slicing all happen on your own machine
Use cases
- Pulling one frame out of a sheet so it can be edited on its own
- Re-cutting a sheet whose rows and columns nobody wrote down
- Getting individual PNGs out of an asset pack that only shipped a packed sheet
- Unpacking a TexturePacker atlas back into the source frames
- Splitting a downloaded tileset into separate tiles for a map editor
- Dropping trailing empty cells from a sheet that was padded out to fill its grid
More free pixel art tools
Sprite sheet maker
Drop in several images and pack them into one sprite sheet. Set columns, padding, and scale, then export a PNG or a JSON atlas.
GIF to sprite sheet
Convert any animated GIF into a sprite sheet PNG. Tune columns, padding, and scale. Phaser-ready atlas option.
Sprite sheet to GIF
Convert any sprite sheet PNG into an animated GIF. Live preview, FPS slider, padding support.
FAQ
Drop the sheet in and it gets scanned for a repeating grid. If one is found, the rows and columns are filled in for you, so most sheets are ready to cut the moment they land. Check the cut lines in the preview and fix the numbers if the guess is off. Then pick "Every frame as its own PNG" from the download menu to get the whole set as a ZIP.
Yes. Click the frame you want on the timeline, then choose "This frame only" from the download menu and you get that single PNG, at the size it was in the sheet. It is the quickest route when you only need one pose out of a sheet somebody else packed, and it saves unpacking a ZIP to throw most of it away.
Yes, and that is the part most sheets get wrong by hand. The image is scanned for the repeating cell size rather than you counting pixels. Detection works on sheets with even cells, which is nearly all of them. When a sheet has irregular spacing or trailing empty cells, set the rows and columns yourself and the preview updates as you type.
Drop it in alongside the sheet and the cuts follow the exact rectangles in the atlas instead of a guessed grid. That is the accurate path for sheets packed by TexturePacker, Phaser, or Pixi, where frames are tightly packed at different sizes and no uniform grid exists. A .json on its own waits for the sheet it belongs with.
Yes. Each frame comes out as a PNG with its alpha channel intact, cut at the pixel boundary with no resampling, so nothing gets softened or fringed. What was transparent in the sheet is transparent in the frame. Frames leave at their original size too, not padded to a common cell.
No. The decode, the grid detection, and the slicing all run in your browser on your own machine. Your sheet never leaves your computer and there is nothing to wait on, which also means it works on art you are not ready to share. Free, no account, no watermark.
Up to 4096 by 4096 pixels and 25MB per file, cut into as many as 256 frames. That covers a full character animation set or a decent tileset. If a sheet would produce more than 256 frames the extras are turned away with a notice rather than dropped silently.
Yes. Once the frames are cut they land on the timeline along the bottom, where you can drag to reorder, delete the ones you do not want, and use the eye toggle to leave a frame out of the export. Press play to watch them run in order. Trailing empty cells from an uneven grid are easiest to remove here.
Yes, the layout controls stay available after cutting, so you can re-pack at a different column count, padding, or scale and download the result as a sheet. If packing is the whole job you came for, the [sprite sheet maker](/tools/sprite-sheet-maker) starts from a batch of loose images instead.