Images & Design

Sprite Sheet Generator

Pack a small collection of raster images into a regular grid without resizing the originals. Download the transparent atlas and a readable coordinate manifest that records every frame’s position and size.

Free online tool

Loading tool…

Combine local sprites

Up to 24 files, 20 MB each, 40 MB total, 24 million decoded pixels total. Maximum source side: 4,096 px. SVG is not accepted. Animation exports one still frame.

Each cell uses the largest source width and height. Images keep their original dimensions and sit at the cell’s top left. Padding is inserted between cells and around the sheet. No trimming, rotation, or extrusion.

Atlas preview

Select sprites or load the face example. The resulting atlas will appear here.

JSON uses a simple documented array, not a game-engine-specific format. Coordinates start at the sheet’s top-left corner; frame width and height exclude padding. Duplicate filenames keep separate numeric IDs.

Image processing and generated artwork stay in your browser. Files are not uploaded by this tool.

GET STARTED

How to use the Sprite Sheet Generator

  1. 01

    Select up to 24 local raster files, or load the six original face sprites. The tool reads selected files in order.

  2. 02

    Choose columns and transparent padding. Review the sheet, reorder frames with Move earlier, and remove any unwanted source.

  3. 03

    Download the PNG and JSON together as a ZIP, or download either file separately. Use the manifest’s top-left pixel coordinates to select each frame.

Examples

A six-frame face atlas

Load the example and use three columns with four pixel padding. Six 48 × 48 sprites form a 160 × 108 PNG with transparent gutters.

Different-size UI icons

Combine a 24 × 24 icon and a 32 × 48 icon. Each cell uses the largest width and height, but each manifest frame keeps its own original dimensions.

Grid geometry and coordinates

Cell width is the widest source and cell height is the tallest source. Padding appears around the outside and between cells. Each sprite is placed at the top left of its cell. JSON contains a version, image filename, sheet dimensions, top-left origin, pixel units, padding, and a frames array with numeric ID, original filename, x, y, width, and height.

Memory and engine integration

The batch is bounded to 40 MB compressed files and 24 million decoded source pixels; the final sheet is bounded to 4,096 pixels per side and 16 million pixels. Files decode sequentially. The JSON schema is intentionally simple and is not a built-in format for a particular engine. Add an adapter if your loader expects frame rectangles under different property names. There is no trimming, rotation, or edge-pixel extrusion.

What to know

  • The tool uses a uniform grid rather than optimized rectangle packing.
  • PNG, JPEG, WebP, GIF, AVIF, and BMP are supported through the browser decoder; animations use a still frame. SVG and engine-specific metadata formats are not included.

Common questions

Are the images scaled to one size?

No. Sources are drawn at their natural raster dimensions. Transparent space may remain inside cells containing smaller images.

What happens to duplicate filenames?

Each frame receives its own numeric ID in array order, so repeated names remain separate entries. Names are stored as JSON string values.

Will padding prevent all texture bleeding?

Padding creates transparent gutters, but some filtering and mipmap workflows require repeated edge pixels or larger gutters. This tool does not extrude edge pixels. Test the sheet with your engine’s texture settings.

Sources & references