About this tool
Game engines and web animations want all the frames of a sprite in one image. Drop in the frames in order (or a single animated GIF) and they are laid out on a grid of equal cells, sized to the largest frame, with optional padding to stop texture bleeding. You get the sheet as a PNG and a JSON file listing every frame's position and size.
Cells are placed left to right, top to bottom, so frame N is at column N mod columns. That matches the default expectations of Unity, Godot, Phaser, and CSS sprite animations.
Everything happens inside your browser. Your file is never uploaded to a server: the conversion runs on your own device using WebAssembly, and the result is downloaded straight from memory. Close the tab and nothing is left behind.
How to use it
- Drop your PNG files into the box above, or click to browse. Nothing is uploaded.
- Adjust the options if you want; the defaults suit most files.
- Click the button and wait a moment.
- Download the results individually or all at once as a ZIP.
Frequently asked questions
How are frames ordered?
In the order you add them. Select files sorted by name to keep a numbered sequence in order. For a GIF, frames follow the animation.
Why add padding?
When a sheet is scaled by the GPU, neighbouring cells can bleed into each other at the edges. One or two pixels of padding prevents it.
Is this really free?
Yes. The site is supported by ads, and there are no limits on how many files you convert.
Are my files uploaded anywhere?
No. The converter runs entirely in your browser. Files stay on your device, which also makes it faster than upload-based converters for anything larger than a few megabytes.
Is there a file size limit?
The only limit is your device's memory. Images and audio of any normal size are fine; for video, files under about 500 MB work well on most laptops and phones.
Which browsers are supported?
Current versions of Chrome, Edge, Firefox, and Safari on desktop and mobile. Very old browsers without WebAssembly support will not work.