Images to Atlas

Upload multiple images and pack them into an optimized texture atlas.

Drag & drop your images here

Upload sprites, icons, or textures to pack them into an optimized texture atlas with metadata export.

Or click to browse

PNG, JPEG, WebP, GIF, BMP

How it works

1

Upload images

Drop or browse for sprites, icons, or textures. Batch upload supported

2

Configure packing

Choose algorithm, padding, max size, trim, and power-of-two settings

3

Export atlas

Download PNG + metadata for Unity, Godot, Phaser, PixiJS, and more

Common questions

What image formats are supported?

PNG, JPEG, WebP, GIF, and BMP. Transparency is preserved for PNGs and WebP.

How does the packing algorithm work?

Choose between Shelf, MaxRects, or Grid. MaxRects usually gives the tightest fit.

Is there a limit on image count?

No hard limit. For very large sets, enable multipack to split across multiple atlases.

Does it detect duplicate sprites?

Yes — enable alias detection to merge identical images and save atlas space.

How It Works

1

Drop in your images

Add any number of PNGs or other images — individual sprites, UI elements, or tiles.

2

Pick a packing layout

The packer arranges images into a tight atlas; adjust padding, power-of-two sizing, and layout options.

3

Export atlas + JSON

Download the packed PNG and a metadata file with each sprite's coordinates for your engine.

Frequently Asked Questions

One atlas means one texture bind and fewer draw calls, which is significantly faster for GPUs than rendering from dozens of separate images.

Yes. The rectangle packer places mixed-size images efficiently and records each one's exact position and size in the exported metadata.

Identical images are detected and packed once, with all references pointing at the same atlas region — a free file-size win for repeated sprites.

Padding inserts empty pixels between sprites; extrusion copies each sprite's edge pixels outward into that gap. Both fight texture bleeding — the thin seams or neighbor-sprite slivers that appear when the GPU samples across a sprite's edge. 1–2px of each is a good default; increase it if you zoom sprites or use mipmaps.

MaxRects is the best default — it fills gaps between mixed-size sprites for the tightest atlas. Shelf is nearly instant and fine for quick iteration. Grid forces every sprite into a uniform cell, which wastes space but is required by engines that slice by rows and columns instead of reading a data file.

Yes. Trimming crops each sprite's transparent border before packing, and the metadata records the original size and offset so your engine restores exact positioning at render time. The only time to leave it off is when your engine ignores the metadata and expects untrimmed, uniform cells.

2048×2048 for anything targeting mobile or WebGL — it's supported everywhere. Go to 4096 only when you control the hardware floor. If sprites don't fit, it's usually better to split atlases by scene or purpose than to push size: you'll also get finer control over what stays in memory.

Want the full workflow, engine tips, and format details? Read the Texture Atlas Generator guide