Ludo.ai
Free tool · Runs in your browser

Sprite Sheet Generator

Drop your animation frames or an animated GIF and get one packed sprite sheet, with the files Phaser, PixiJS, Godot and Unity import. Free, no sign-up, and your images never leave your device.

Drop your frames or a GIF here

PNG, JPG, WebP or animated GIF. Frames are packed in name order.

Runs entirely in your browser. Your frames are never uploaded.

No frames yet?

Generate them from one character image

Ludo's Sprite Generator animates a single sprite from a motion prompt or a preset motion and gives you the sprite sheet directly. Then bring the sheet back here, or download it for your engine from Ludo.

  1. Upload a character image, or create one in Ludo
  2. Describe the move, or pick a preset: walk, run, attack, idle and more
  3. Set the frame count, sprite size and looping, then download the sheet PNG, with JSON, as a GIF or as single frames
Walking Animations
Low-poly 3D · 36 frames

What is a sprite sheet generator?

A sprite sheet generator packs the frames of an animation into one image laid out in a grid, so a game engine loads a single texture and plays the frames in order. This one runs in your browser: it centres frames of different sizes in equal cells, keeps transparency, and writes the atlas files each engine reads, with the same code as the open-source Ludo CLI toolbox. To create the frames themselves, Ludo's Sprite Generator animates a character image into a sprite sheet.

Updated November 2026
Made with Ludo

Animations generated with Ludo

Each of these started as one static image. The motion is generated.

Walking Animations
Low-poly 3D · 36 frames
walking forward at a steady pace
Idle Animations
Cel-shaded · 25 frames
soft idle pose, hair and skirt swaying with subtle breathing
Attack Animations
Stylized 3D · 25 frames
winds up and slams the war-hammer into the ground
Death Animations
Neon · 36 frames
takes a fatal blow to the chest and collapses to the ground
Creature Animations
Hand-painted · 36 frames
phoenix in full flight, wings beating powerfully, trailing ribbons of radiant flame
Item Interactions
Cartoonish · 25 frames
chest unlocking and swinging open to release a burst of golden light
Visual Effects
Cel-shaded · 36 frames
explosion ignites from an empty frame: nothing at all, then a tiny spark flashes at the centre and a fireball erupts and expands rapidly outward, growing brighter and larger with flying embers and smoke
Animated UI Elements
Cartoonish · 36 frames
power bar fills with fire

How to make a sprite sheet

Drop your frames

PNG, JPG or WebP files, taken in name order (walk-2 before walk-10), or an animated GIF, which is split into its frames at its own frame rate.

Set the layout

Choose frames per row, the frame rate and the play order: as is, reversed or ping-pong. The preview plays the animation the way your engine will.

Download for your engine

The PNG alone, or a ZIP with the PNG and a TexturePacker JSON atlas for Phaser and PixiJS, a Godot 4 SpriteFrames .tres, or a Unity .png.meta that slices the sheet plus an .anim clip.

Downloads:
Sprite sheet PNGPhaser / PixiJS JSONGodot 4 SpriteFramesUnity .meta + .animGIF to sprite sheet

FAQ


  • Yes. The packer is free, needs no account, and has no limit on how many sheets you make. It runs in your browser, so your frames are never uploaded to a server.


  • Drop the GIF on the packer. Every frame is extracted the way browsers play it, including GIFs that only redraw part of each frame, and the frame rate comes from the GIF's own delays. GIF has 1-bit transparency, so soft edges arrive hard-edged.


  • Each frame is centred in a cell the size of the largest frame, so the sheet stays a regular grid and the animation does not jump. For a character, trim and align the frames before packing so the feet stay on one line.


  • Download for Phaser / PixiJS. Load the PNG and JSON with this.load.aseprite(key, pngUrl, jsonUrl), then create the animation with this.anims.createFromAseprite(key). this.load.atlas also reads the JSON if you only need the frames.


  • Download for Phaser / PixiJS and load the JSON with Assets.load. The animation's frames are in sheet.animations under the name you gave it, ready for an AnimatedSprite.


  • Download for Godot 4 and copy the PNG and the .tres into your project side by side. Set the .tres as the Sprite Frames of an AnimatedSprite2D: the animation is called default and loops at the frame rate you chose.


  • Download for Unity and copy the PNG, its .png.meta and the .anim into your project's Assets folder together. Unity imports the sheet sliced into one sprite per frame at 100 pixels per unit, and the .anim clip plays them on a SpriteRenderer.


  • Up to 400 frames and 64 megapixels in total, which covers long animations at 512x512. Larger jobs are better done with the command-line version below.


  • Yes. The same packing and engine export are in the free Asset Toolbox of the Ludo CLI: ludo toolbox sprite join <frames> --engine godot (or unity, or texturepacker). It is open source (MIT), works offline and needs no account.


  • Yes. Ludo's Sprite Generator animates one character image from a motion prompt or a preset motion, up to 5 seconds long. You set the frame count, sprite size and looping, and download a sprite sheet PNG, the sheet with JSON, a GIF, a video or individual frames.

Experience the future of game creation

Free to try. No credit card required.