Free tool, no signup

Sprite Sheet Maker

Turn frames or GIFs into one engine-ready sprite sheet: edit the timeline, pack tight or on a grid, and export data for Phaser, Godot, Aseprite and more. Free, no signup.

$0Free, no watermarks
6Engine formats
GIFOr many PNGs

Runs in your browser on Retro Diffusion's Rust engine. Your images never leave your device.

Drop frames or a GIF here, or click to choose several

Several PNGs (sorted by name) and/or animated GIFs

or try a sample
Frames--
Sheet--
Duplicates--
Time--
Layout

Layout

Grid for simple engines, packed for atlas loaders.

AlignFrames smaller than the cell
PaddingBetween frames
1px
ExtrudeRepeat edge pixels
0px
BorderAround the sheet
0px
Frames
Sheet size
Input pixelsShrinks enlarged frames on add
Export

Export

Data for your engine, with timing, tag and pivot.

Format
Direction
Pivot
How it works

Sprite Sheet Maker, step by step

  1. 01

    Add frames

    Drop several PNGs at once (sorted by name), an animated GIF, or both. Add more any time; frames are appended.

  2. 02

    Edit the animation

    Reorder, duplicate or delete frames and set each frame’s timing. The preview plays exactly what you will export.

  3. 03

    Lay out the sheet

    A same-size grid for simple engines, or tight MaxRects packing with trim, padding and edge extrusion against texture bleeding.

  4. 04

    Export for your engine

    The sheet PNG plus data for TexturePacker, Aseprite, Phaser 3, Godot 4 or CSS, with frame timing, tag and pivot.

Need new art, not just edits?

Generate real pixel art from a prompt

Retro Diffusion's models draw on a true pixel grid with a limited palette: characters, tilesets, animations and more, from $0.03 an image. New accounts start with free balance.

Start creating free
Questions

Sprite Sheet Maker FAQ

Select all the frame PNGs and drop them in together. They are sorted by name (frame-2 before frame-10), shown in a timeline you can reorder, and packed into one sheet with a data file describing every frame.

A grid keeps every frame in a same-size cell, which suits Godot hframes/vframes, Unity grid slicing and Aseprite imports. Packed (MaxRects) trims empty space and fits frames tightly, which suits atlas loaders like Phaser, PixiJS and TexturePacker readers.

When a game scales or filters a sprite, the GPU can sample a pixel or two outside the frame. Padding leaves a gap between frames; extrude repeats each frame’s edge pixels into that gap, so nothing bleeds in.

TexturePacker JSON (hash or array) is read by Phaser, PixiJS, Cocos and most frameworks. The Aseprite export keeps frame timing and the animation tag, Phaser 3 gets an atlas plus an animation config, and Godot 4 gets a ready SpriteFrames resource.

Yes, free with no signup. It runs in your browser on Retro Diffusion’s Rust engine; nothing is uploaded.