Step 1
Choose images or a strip
Upload several separate frame images, or select one long strip and tell the tool how many equal frames it contains and whether they run horizontally or vertically.
The upload controls, canvas preview, grid settings, PNG or GIF encoder, metadata, and download actions hydrate in the browser. Large files stay on this device: nothing leaves your browser.
Multiple images or one strip · one clean sprite sheet
Turn separate animation images or one long horizontal or vertical strip into a regular sprite sheet. Choose the source mode, control the output columns, and download a PNG with exact metadata.
Step 1
Upload several separate frame images, or select one long strip and tell the tool how many equal frames it contains and whether they run horizontally or vertically.
Step 2
Set the number of output columns plus optional transparent padding and gaps. Rows and final sheet dimensions update from the actual decoded frame sizes.
Step 3
The browser packs the RGBA frames in order, encodes a real PNG, and exposes frame width, frame height, columns, rows, frame count, and full sheet dimensions.
Image-to-sheet conversion is mostly about preserving order and producing a grid that downstream tools can address without guessing.
Separate files can have different dimensions. The largest width and height define a shared cell, while smaller sources are centered at their original size and remain transparent around the edges.
A strip is treated as an existing one-row or one-column sheet. Its length must divide evenly by the requested frame count so each extracted frame has identical integer dimensions.
Padding adds transparent pixels around the outside of the entire sheet. Gaps add transparent pixels between cells. Both can prevent texture bleeding, but your importer must be configured with the same values.
For nearest-neighbor pixel art, keep source pixels at native scale and let the game engine scale the texture. This tool never smooths or resamples frames while packing them.
The export is an RGBA PNG, so fully transparent background pixels and partial alpha from PNG or WebP sources can remain intact. JPEG sources arrive without transparency because JPEG has no alpha channel.
The PNG byte size depends on color repetition, transparency, dimensions, and compression. Two sheets with identical geometry can have very different file sizes.
The regression fixture supplies four actual 4×4 RGBA images. In a 2-column grid with no spacing, the engine creates an 8×8 sheet containing four 4×4 cells.
With 1-pixel outer padding and a 1-pixel gap, the same frames create an 11×11 sheet and encode to a 132-byte PNG. The test also slices the no-spacing sheet back into four buffers and compares their pixels to the original images.
Upload the frame images in order, choose the output columns, and download the generated PNG. The tool places frames left to right and then top to bottom.
Yes. Choose strip mode, upload the horizontal or vertical strip, enter its frame count, and then select the new output column count.
No. Files are decoded with browser image APIs, packed through local canvas pixel data, and encoded as PNG on your device. Nothing leaves your browser.
The largest source width and height become the common cell size. Smaller images are centered without scaling, leaving transparent pixels around them.
No. It copies the original RGBA pixels at native size. The preview uses pixelated rendering, and the output packing step does not interpolate the frames.
Padding surrounds the whole sheet; gap separates neighboring cells. They can reduce texture bleeding, but they also change the coordinates your engine must use.
Any format your browser can decode through its image APIs can work, commonly PNG, WebP, JPEG, GIF still frames, and BMP. PNG or WebP is preferable when transparency matters.