Sprite sheet cutter
Drop in a sheet, set the frame size, and download every frame as a numbered PNG. Runs in your browser — the sheet is never uploaded.
Drop an image here
Or choose a file. Your image is processed in your browser and never uploaded.
How to use it
Load the sheet
Drag in a PNG, JPEG, or WebP. The whole sheet appears with the cutting grid drawn over it, so you can see where the cuts will land before committing to anything.
Tell it the frame size — or the frame count
If you know how big one frame is (the value you set in your engine), use Frame size. If you only counted the rows and columns, switch to Columns & rows and the frame size is worked out for you. Both describe the same grid.
Fix the margins and gaps if the lines are off
If the grid lines cut through your sprites instead of between them, the sheet has padding. Raise the left and top margin until the first line sits on the first seam, then raise the gap until every line does.
Download the frames as a ZIP
Every frame becomes frame-000.png, frame-001.png, and so on, numbered in row order — which is animation order. The ZIP is assembled in the browser and downloads directly.
What people use it for
Sheets exported from an atlas packer
TexturePacker, the Unity Sprite Packer, and Godot all leave a gap between frames so bilinear filtering cannot bleed one frame's colour into the next. Set the gap and those sheets cut on the seam instead of a pixel off.
Getting individual frames back for editing
You have the sheet but not the source frames. Cut it apart, fix the one frame that was wrong, and repack — instead of hand-cropping thirty times in an image editor.
Feeding frames to an engine that wants files
Some importers and animation tools want one file per frame rather than a sheet plus a grid definition. This gives you exactly that, already numbered in the right order.
Pulling one tile out of a tileset
A tileset is a sprite sheet with different vocabulary. Cut it into tiles, keep the handful you need, and drop the rest.
Checking that a sheet is actually aligned
Load it, set the frame size you believe it uses, and look. If the lines drift out of alignment across the sheet, the sheet itself is inconsistent — which is worth knowing before you build an animation on top of it.
Why this one
Margins and spacing, not just an even grid
A cutter that only divides the image into equal parts is useless on anything an atlas packer produced. Both offsets and both gaps are adjustable, and the grid preview updates as you drag.
You see the cuts before you commit
The grid is drawn frame by frame over your sheet — not as an even overlay. Because margins and gaps mean some pixels belong to no frame, an even overlay would draw lines inside frames, which is the most misleading thing it could do.
It tells you what falls off the edge
If your numbers leave 4px unaccounted for on the right, it says so. Every other outcome is a pile of frames with a slice missing and no explanation.
Frames are numbered so they sort correctly
Zero-padded filenames, because the order of these files is the order of the animation. Unpadded numbering sorts 1, 10, 11, 2 in every file manager, and then you reorder thirty files by hand.
Nothing is uploaded, and there is no size cap from a server
Decoding, cutting, and ZIP packing all happen in your browser. There is no upload endpoint, no queue, and no one-hour deletion policy to trust — because the sheet never leaves the tab.
Frequently asked questions
- The grid lines cut through my sprites. What do I change?
- The sheet has padding. Raise the left and top margin until the first line lands on the first seam, then raise the gap across and gap down until the rest follow. Atlas packers usually use 1px or 2px.
- What is the difference between a cutter, a slicer, and a splitter?
- Nothing — they are three names for this operation, and you will see all three used for the same tool. Cutting a sheet into frames is one job, so this is one page rather than three.
- Why does it say some pixels fall outside the grid?
- Your frame size does not divide the sheet evenly. A 100px-wide sheet cut at 16px gives six frames and 4px left over. Either the frame size is slightly wrong, or the sheet has a margin you have not accounted for yet.
- Are the frames in animation order?
- They are numbered row by row, left to right, which is how sheets are laid out and therefore the animation order. If your sheet reads down columns instead, the numbering will not match — rotate the sheet before cutting.
- Is transparency preserved?
- Yes. Frames are written as PNG with the alpha channel intact, and each frame is cleared before it is drawn, so a transparent region never picks up pixels from the previous frame.
- Can it split an animated GIF into frames?
- Not on this page — this cuts a still sheet by a grid. A GIF already has separate frames inside the file, which is a different operation and a separate tool.
- Is there a limit on how many frames I can cut?
- 2048. Beyond that the browser is assembling thousands of PNGs at once and the tab stops responding, so it refuses and asks you to raise the frame size rather than half-finishing the job.
More pixel art tools
Same engine, same privacy, different job. Nothing here needs an account.
- Photo to Pixel ArtTurn any photo into pixel art with retro palettes and dithering.
- Pixel Art ConverterConvert images to sprite-ready pixel art with exact palette control.
- Pixel Art GeneratorOne-click Game Boy, NES, PICO-8 and C64 looks.
- Convert Image to Pixel ArtStep-by-step conversion with size and colour presets.
- Pixel Art CreatorGenerate from a photo, then touch it up pixel by pixel.
- Make Pixel Art OnlineNo install, no account — everything runs in the browser.
- Free Pixel Art MakerFree forever, no watermark, no sign-up.
- Pixel Art UpscalerEnlarge pixel art by whole multiples without blurring the edges.