Splitting Existing Sprite Sheets for Reuse or Editing
When you have one big sheet and need frames: grid detection, margins, offsets, and exporting to ZIP for editing or re-pack.
Sometimes you have one big sprite sheet (from an asset pack, an old project, or a vendor) and you need individual frames—to re-pack them, edit in an art tool, or import into an engine that expects separate files. A sprite sheet splitter lets you define the grid (columns, rows, margin, spacing) and export every cell as its own image, often in a ZIP. This guide covers grid detection, export settings, naming, and typical use cases so you can reliably turn any uniform sheet into a set of frames.
Detecting the Grid
If the sheet is uniform (same-size cells in a grid), set columns and rows. Margin is the empty space around the whole sheet; spacing (or offset) is the gap between cells. Some tools use a single "spacing" value; others use horizontal and vertical. Preview the grid overlay to confirm every frame is inside one cell and nothing is cut off. If the sheet has variable-size frames, you may need a tool that supports non-uniform grids or manual rects; for classic grid-based sheets, columns/rows are enough.
To derive columns and rows: if you know the cell size, divide the sheet width by (cell width + spacing) and height by (cell height + spacing). Account for margin by subtracting it from the usable area first. If the sheet has a known frame count (e.g. 48 frames) and is one row, columns = 48 and rows = 1. Always preview: misaligned grid can cut off edges or include parts of neighbouring frames. For variable-size or trimmed sheets, use a tool that accepts a list of rects or a metadata file instead of a uniform grid.
Grid math
Usable width = sheet width − 2×margin. Usable height = sheet height − 2×margin. Columns = floor(usable width / (cell width + spacing)). Rows = floor(usable height / (cell height + spacing)). If the sheet has no margin or spacing, columns = sheet width / cell width and rows = sheet height / cell height. When in doubt, use the tool's preview and nudge columns/rows until every cell lines up with the art.
Exporting Frames
Export as a ZIP of PNGs. Naming is important: either frame_001.png by row/column order or a name derived from position. That way you can re-import the sequence into an atlas tool or an editor and keep order. If you're re-packing, use the same frame size (no scaling) when you pack so that the new atlas is consistent.
Zero-padded numbers (001, 002, …) keep alphabetical and numeric order the same so that when you drop the folder into another tool, frames stay in sequence. Some pipelines use names like run_01.png, run_02.png for animation naming. After export, you can batch-rename if needed. When re-packing, avoid scaling the split frames unless you intentionally want a different resolution; same size keeps the new atlas predictable and avoids quality loss from a second resize.
Use Cases
Splitting is useful when you need to replace a few frames in the middle of a long animation, when you're merging two sheets from different sources, or when your engine or pipeline expects one image per frame for an initial import. After splitting you can edit in Aseprite, Photoshop, or another editor and then re-pack into a new sheet with the same or different layout.
Other use cases: extracting a single character or animation from a multi-character sheet, converting a grid-based sheet to a packed layout for a different engine, or preparing frames for a tool that only accepts individual images. Once you have individual frames, you have full flexibility to reorder, delete, or add frames and then run them through any atlas or sprite sheet exporter. Keep the original sheet as backup until you're happy with the new result.
Summary
Define the grid (columns, rows, margin, spacing), preview to confirm alignment, and export as a ZIP with ordered filenames. Use the frames for editing, re-packing, or engine-specific pipelines. Consistent naming and frame size make the next step (atlas or import) straightforward.