Free Sprite Sheet Packer & Texture Atlas Generator

Drop a folder of sprites and get one tightly packed sheet plus the coordinate data your engine reads. Works with Unity, Godot, Phaser and PixiJS, and every file stays on your device.

  • Free
  • No signup
  • Files stay on your device

How to use the Sprite Sheet Packer

A sprite sheet, or texture atlas, puts many small images into one texture so the GPU can draw them in a single batch instead of switching textures for every sprite. This packer arranges your PNGs with the MaxRects algorithm, trims empty transparent borders, adds padding against texture bleeding, and writes the frame coordinates as TexturePacker-style JSON, Starling XML or Godot AtlasTexture resources.

  1. 1Drop all your sprite PNGs onto the packer, or click to select them.
  2. 2Choose a layout: tightly packed for the smallest atlas, or a uniform grid for Unity’s Sprite Editor and animation strips.
  3. 3Pick the data format your engine reads: JSON hash, JSON array, Starling XML or Godot .tres.
  4. 4Set padding, extrude, trimming and the maximum atlas size, then press Pack sprite sheet.
  5. 5Download the ZIP with atlas.png and the coordinate file, and import both into your project.

Frequently asked questions

What is the difference between a sprite sheet and a texture atlas?

The two terms are used interchangeably. Strictly, a sprite sheet holds equal-sized frames in a grid, usually animation frames, while a texture atlas packs images of different sizes as tightly as possible and needs a data file that says where each one is. This tool makes both: choose Uniform grid or Tightly packed.

How do I import the sprite sheet into Unity?

Unity has no built-in importer for atlas JSON, so use the Uniform grid layout. Import atlas.png, set Sprite Mode to Multiple, open the Sprite Editor and choose Slice, then Grid By Cell Size. The packer shows the exact cell size, offset and padding to enter. If your sprites already live in the Unity project as separate files, Unity’s own Sprite Atlas asset can pack them at build time instead.

How do I use the atlas in Godot?

Choose the Godot .tres format and enter where atlas.png will live in your project, for example res://sprites/atlas.png. The ZIP then contains one AtlasTexture resource per sprite. Copy the PNG and the .tres files into the project and assign any of them wherever a Texture2D is expected, such as a Sprite2D or a TextureRect.

Which atlas JSON format do Phaser and PixiJS need?

Both read the TexturePacker JSON layout this tool writes. In Phaser 3, load it with this.load.atlas(key, "atlas.png", "atlas.json"); JSON hash and JSON array both work. PixiJS loads the JSON hash file directly as a spritesheet through Assets.load.

What do padding and extrude do in a sprite sheet?

Padding leaves transparent pixels between sprites so neighbours do not show through when the texture is scaled or filtered. Extrude repeats each sprite’s edge pixels outwards, which fixes the thin seams that appear between tiles in a tilemap. Two pixels of padding is a safe default; add one or two pixels of extrude for tilesets.

Should a texture atlas be a power of two?

It is the safe choice. Sizes such as 1024 or 2048 are required by some compressed texture formats and for mipmaps on older mobile GPUs. Modern desktop hardware handles any size, so turn the option off if you want the smallest possible image.

Does trimming change where my sprites are drawn?

No. Trimming removes empty transparent borders to save space, and the data file records the original size and offset of every sprite, so an engine that reads it places the sprite exactly where the untrimmed image would be.

All tools →