Sprite Sheet Slicer

Find alpha-connected frame candidates, review their boxes, and export PNGs.

Cutting a sprite sheet needs four numbers per axis: the cell width and height, the margin before the first cell and the spacing between cells. Drop the PNG here and Nerulio measures them from the transparent gaps in the art, previews the cut with a confidence, and cuts only when you press Apply; sheets without a grid are cut along their transparent gaps instead. The frames stay in one project for tags, timing and engine export; one PNG file per frame comes from the classic Sprite Lab.

Drop image files hereProcess many files at once
No upload · processed on this device

Cell, margin and spacing: how a grid sheet is laid out

A grid sheet is a table of equal cells. Column n starts at margin + n × (cell width + spacing), so one wrong number makes the cut drift, clip the first row or split sprites. The file size alone cannot tell you the grid: a 256 × 256 sheet divides evenly by 8, 16, 32, 64 and 128, and only the pixels show which one the artist used.

The importer scores candidate grids on evidence it can show you: rows and columns that are fully transparent where the grid puts a gap, art that repeats at the cell pitch, content that never crosses a cell border, and content bounds that look alike in every cell. It tries margins up to 64 px and gaps up to a quarter of the cell (16 px at most), then lists the winner and its alternatives with high, medium or low confidence and the reasons.

Two kinds of sheet need a different cut. Sprites of mixed sizes packed without a grid are cut as islands: each group of touching opaque pixels becomes a frame, and small pieces such as sparks are attached to the nearest sprite when that is unambiguous. Sheets drawn on flat magenta or another solid colour have no transparency to read, so the key colour is found on the border first and made transparent; the original stays in the project for undo.

Cell
One frame's rectangle on the sheet: width × height in pixels.
Margin (Offset X / Y)
Blank pixels before the first cell, from the left and from the top edge.
Spacing (Gap X / Y)
Blank pixels between two neighbouring cells.
Islands
Frames cut along transparent gaps instead of a grid, for sheets without one.

Example: a 136 × 68 sheet with a 1 px margin and 2 px gaps

Four columns and two rows of 32 × 32 frames. Where each cell starts, and what goes wrong without the margin and gap:

x of column n = 1 + n × (32 + 2)       → 1, 35, 69, 103
y of row r    = 1 + r × (32 + 2)       → 1, 35
width used    = 1 + 4 × 32 + 3 × 2 = 135   → 1 px left over (right margin)
height used   = 1 + 2 × 32 + 1 × 2 = 67    → 1 px left over (bottom margin)
Custom grid   W 32  H 32  Offset 1  Gap 2  → "4 × 2 = 8 whole cells fit"

typed as 32 × 32, no offset, no gap: column n starts at n × 32 → 0, 32, 64, 96
error per column                       → 1, 3, 5, 7 px (grows by the gap)

The Custom grid panel does this arithmetic live and reports the pixels left over on the right and bottom. When the numbers are wrong the error grows column by column; slicing that drifts or clips walks through each case.

Check the result

  • Before Apply, compare the preview's frame count with the frames you can see; empty cells at the end of a half-filled row are skipped, not counted.
  • After Apply, switch to Sheet view (`): every region outline should run through the gaps, never through the art. Drag any region that is still off.
  • Play one row with Enter. A frame that jumps by a whole gap width means the spacing is wrong; a one-pixel bob is usually drawn that way (align the frames if not).
  • In Islands mode look for pieces drawn in red: they belong to no frame and are left out unless you drag a region over them.

Troubleshooting

SymptomLikely causeHow to checkFix
Each column is a little further off than the lastSpacing between cells that the grid ignoresIn Sheet view the error grows by the same amount per columnSet Gap X (and Gap Y), or pick the listed alternative that has the gap
The whole sheet becomes one frameAn opaque background: magenta, black or another flat colour leaves no transparency between framesThe import panel shows no key-colour decision, or a rejected oneChoose the key-colour alternative in the import panel; the untouched original stays for undo
Sprites are cut in half, or two sprites share a frameThe cell is half or double the real sizeThe frame count is double or half of what you seePick the other cell size from the list or type it; use Islands for sprites of different sizes
Sparks or dust vanish or become tiny framesIslands mode treats detached pixels as pieces; pieces far from every sprite stay unassignedRed pieces on the canvas in the previewDrag the frame region over them, or cut by a grid instead of islands

Other ways to do it

OptionWhen it is the better choice
The engine's own slicer: Godot's SpriteFrames panel (Add frames from a Sprite Sheet) or Unity's Sprite Editor (Slice: Grid By Cell Size, Grid By Cell Count, Automatic)You already know the cell size and want the frames inside the project. Unity's slicer also takes Offset and Padding. See sprite sheets in Godot and sprite sheets in Unity.
The classic Sprite LabYou need one PNG file per frame in a ZIP: sprite sheet to PNG frames.
The atlas data that came with the sheetA packed atlas has no grid at all; open the PNG together with its JSON or XML in the atlas viewer.

What this page does not cover

  • Automatic detection searches margins up to 64 px and gaps up to 16 px; a wider layout needs the Custom grid.
  • A trimmed or rotated atlas cannot be recovered from the PNG alone; its data file holds the rectangles.
  • Separate PNG files per frame are not a Studio export yet.

Versions and sources

With the default choices the importer cut 16 of 16 real assets correctly (plain and colour-keyed sheets, a 4096² effect sheet, atlas data, frame files, GIFs and .aseprite files; 2026-09-23). The engine slicers named above are described from the Unity 6 manual and the Godot 4.7 documentation.

Official documentation used

Example

Original geometric sample · 96 × 64
Original geometric sample · 96 × 64
Processed sample · 24 × 36
Processed sample · 24 × 36

Example generated with this tool. ZIP tools show their preview; inspect the downloaded archive for every file.

Sprite Sheet Slicer

Find alpha-connected frame candidates, review their boxes, and export PNGs.

How it works

  1. Add images
  2. Adjust settings and review the result
  3. Download a new file

Supported formats

PNG / JPG / WebP / AVIF / HEIC → PNG + JSON (ZIP) — Input decoding depends on browser support and optional engines.

What this tool does

Find alpha-connected frame candidates, review their boxes, and export PNGs.

Implementation and verified quality

advanced · Studio Sprite workspace: measured grid (margin, spacing) or alpha islands, colour key, previewed import decisions; GIF/APNG/.aseprite decoders; timeline, pivots, boxes, alpha contour collision. Quality qualification is in progress. Pro/Flagship quality has not been established.

Before you export

Disconnected parts may become separate candidates. Overlapping characters are not semantically separated.

Frequently asked questions

What are this tool’s limitations?

Disconnected parts may become separate candidates. Overlapping characters are not semantically separated.

Are my files uploaded?

This tool processes the files you open on your device without uploading them. Images you explicitly attach to community posts are uploaded separately. Optional engines and models are downloaded from third parties; those requests expose connection information such as your IP address.

Will my work be saved automatically?

No. Images and editing state stay in this tab; media output can use local temporary storage. Changing language preserves your work; reloading, closing the tab, or following a link to another page can clear it.