ForgeSprite

Sprite Sheet Maker

Arrange existing PNG frames into a sheet. Set the layout, timing and animation tags before exporting.

Frame preview

Choose PNG frames, a PNG sprite sheet or a GIF to preview here.

— / —
No frames to preview yet

Sprite sheet layout and export guide

Prepare your PNG frames

Add one frame per file, then check order and transparency. The tool packs existing artwork; it does not generate images.

Read details

Use this sprite sheet maker to generate a sheet from existing PNG images. Add one frame per file, inspect transparency and visual scale, then review the frame order. This workflow arranges finished artwork; it does not generate new images.

New batches use natural filename order; use the frame controls to change it. If your input is already a sheet, split it into individual frames first. To create new static artwork, start from the AI sprite generator instead.

Grid, trim and spacing

Choose a regular grid or tight packing. Set spacing and margins; trim only removes transparent borders.

Read details

Choose equal cells for a regular grid and set the cell size and alignment. Choose tight packing for frames with different bounds. Cell size and alignment apply only to equal cells; tight packing is not a regular grid.

Margin adds space around the sheet; spacing separates cells or packed frames. Trim removes transparent outer borders, not an opaque background. Extrusion copies edge pixels outward to help reduce texture sampling seams; it does not sharpen or repair the artwork.

A cell dimension of 0 uses the largest retained frame after any trim. Setting a cell size does not resize the input pixels. For a first grid export, leave trim and extrusion off, use cells that fit every frame, and compare the output before trying a tighter layout. Tight packing can reduce empty space, but does not guarantee the smallest possible atlas.

Example: a 138 × 70 sheet

Eight 32 × 32 frames, four columns, 2 px spacing and margin. No trimming or extrusion.

Read details

Use eight 32 × 32 PNGs in equal 32 × 32 cells, arranged as four columns and two rows. Set spacing to 2 px and margin to 2 px on each side. Turn trim off and set extrusion to 0.

Width = 4 × 32 + 3 × 2 + 2 × 2 = 138 px. Height = 2 × 32 + 1 × 2 + 2 × 2 = 70 px. The sheet is 138 × 70 px; spacing is counted only between cells.

This calculation applies to those equal-cell settings. Tight packing, trimming or extrusion can change the layout; inspect the generated dimensions and frame rectangles rather than reusing the same grid calculation.

PNG, JSON and engine import

Keep the image and frame data together. Unity and Godot need their own region, pivot and timing setup.

Read details

The sheet PNG contains the packed pixels. The companion JSON records frame placement, order, durations and tags. The ZIP includes sheet.png, sheet.json, README.txt and individual frame PNGs. Keep this bundle together: it preserves layout information that the image alone cannot describe.

The JSON is engine-neutral, not a native Unity or Godot import format. In Unity, import the PNG as Sprite (2D and UI), set Sprite Mode to Multiple, and configure regions in the Sprite Editor. In Godot, use atlas regions or a SpriteFrames resource for existing animation frames. Transfer order and timing into the engine separately, by hand or with an adapter.

For trimmed frames, account for source-canvas offsets and pivots when placing sprites. A tight-packed sheet needs its actual frame rectangles, not uniform-grid slicing. Test a frame and any intended playback before importing the whole set.

Packing is not animation

The tool arranges your frames. It does not create poses, matching directions or seamless tiles.

Read details

This tool does not invent poses, in-between frames or matching character directions. Durations and tags describe the frames you supply. Playing them or converting them to GIF is not AI animation generation.

Packing does not make tiles seamless, standardize palettes or turn painted backgrounds into transparency. File, frame-count and output-size limits still apply; follow the validation message shown by the tool.

Fix size, order and edges

Start with the reported limit, frame order and source alpha. Check filtering and spacing if you see seams.

Read details

If building fails, check that the inputs are valid PNGs and read the reported limit. For a size-limit error, try fewer frames or smaller source images. Changing column count changes the sheet’s shape, not the amount of source pixel data.

For unexpected playback, inspect frame order, durations and tags. For shifted sprites, compare original canvases, trim offsets and engine pivots before changing the images.

For colored seams, check frame regions and texture filtering, then test spacing and extrusion. If a checkerboard appears in the exported pixels, check the source alpha channel: trim cannot remove an opaque painted background.

How to make a sprite sheet

  1. Choose PNG frames

    Add your existing frames. New batches use natural filename order; move frames with the arrow buttons.

  2. Set the layout

    Choose equal cells or tight packing. Set spacing, margin and optional trim or extrusion. Cell size and alignment apply only to equal cells.

  3. Build and inspect

    Build the sheet, inspect it and download the PNG, JSON and frame ZIP.

Questions