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
Upload images
Drop or browse for sprites, icons, or textures. Batch upload supported
Configure packing
Choose algorithm, padding, max size, trim, and power-of-two settings
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
Drop in your images
Add any number of PNGs or other images — individual sprites, UI elements, or tiles.
Pick a packing layout
The packer arranges images into a tight atlas; adjust padding, power-of-two sizing, and layout options.
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