🧩 Sprite Sheet Slicer
Upload a sprite sheet arranged in a uniform grid, set the number of rows and columns, and get each tile as a separate downloadable PNG.
Where the cuts fall
The sheet is decoded and sliced on canvases inside this page - it is never uploaded. Nothing is detected automatically: the grid comes purely from the two numbers you type, dividing the full width and height evenly.
tile width = sheet width / columns
tile height = sheet height / rows
tile index = row × columns + column (0-based, left to right)
A 512×256 sheet at 4 columns and 2 rows gives eight 128×128 frames, saved as tile-0.png through tile-7.png. Tiles are numbered along the top row first, so tile-4 is the leftmost frame of the second row.
What the grid assumes
- No padding, margin or spacing. Frames must sit edge to edge. A sheet exported with a 2 px gutter between cells will carry slivers of its neighbours into every tile.
- Divide evenly or lose sharpness. 510 px across 4 columns works out at 127.5, and each tile is then resampled onto a 128 px canvas instead of being copied straight across.
- Up to 20 rows and 20 columns, so 400 tiles at most - though every one is held in the page as a full PNG, which gets heavy on a large sheet.
Frequently asked questions
How do I split a sprite sheet into individual images?
Load the sheet, count the frames across and down, and type those two numbers in. The tiles appear immediately as a preview grid, each with its own download link, and they re-cut as you change either figure.
Why do my tiles include bits of the frame next door?
The slicer divides the whole image into equal rectangles, so it cannot cope with a sheet that has spacing between frames or a border around the outside. Crop the border off first and re-export without padding.
Can I download every tile at once?
Not from here - each tile has its own button and there is no archive. For a large sheet, a browser setting that stops asking where to save each file makes the run through them much faster.