BlockPixelArt

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.