Skip to content

Sprite sheet packer

The Sprite sheet tab packs individual PNG frames into a single atlas. Useful for shipping a tight texture rather than dozens of separate images, and for engines that prefer one draw call per atlas.

Sprite sheet tool with nine character frames packed into an atlas preview, plus the Export PNG and JSON action

Title bar Tools menu, then Pipeline tools, then Sprite sheet.

  • Frame images. File picker, multi-select. Drop your individual sprites in.
  • Padding gutter. 0 to 8 pixels, slider. Adds transparent space between packed frames to prevent bleeding when the atlas is sampled with bilinear filtering.
  • Atlas name. Used in the export filenames.

Forge uses MaxRects with a best-short-side-fit heuristic. The bin grows in powers of two up to 4096px. The header shows occupancy (the percentage of the bin actually filled). Higher is better for memory and load time.

If a frame is larger than 4096px, packing fails and the tab tells you which frame is too big.

The preview canvas renders the packed atlas at 1:1, with pixelated rendering so you can see exactly what’s about to be exported. Frames that couldn’t be placed are flagged inline.

Two files saved to <project>/.forge/generated/spritesheets/<atlas-name>/:

  • PNG atlas. The packed texture.
  • JSON descriptor. A Phaser-compatible “JSON Hash” descriptor. Frames are keyed by basename, with source paths preserved for traceability.
{
"frames": {
"walk-1.png": {
"frame": { "x": 0, "y": 0, "w": 32, "h": 32 },
"rotated": false,
"trimmed": false,
"spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
"sourceSize": { "w": 32, "h": 32 }
}
}
}

The descriptor format is engine-flexible. Phaser ingests it directly. Aseprite, TexturePacker, and Unity sprite atlases use related but distinct schemas; you can reformat the JSON if you need a different shape.

  • Unreadable images (corrupt PNGs, unsupported formats) are skipped silently. The pack continues with whatever loaded.
  • Repacking after adding or removing frames re-runs the entire layout. Frame placement isn’t stable across packs.
  • This is a single-atlas tool. For multi-atlas projects, run the tool once per atlas with a different name.