GDevelop Sprite Sheet — Cut It into Frame Images First
GDevelop's sprite object builds each animation from separate images, one per frame, so a single sprite sheet has to be cut before you can use it. The classic Sprite Lab finds the frames, lets you fix any box, and downloads a ZIP with one PNG per frame, numbered in order and ready to add to an animation.

- Frame PNGsMeasured· Pillow
What it does
- Grid mode measures cell size, margin and spacing, so every PNG comes out the same size and the frames stay lined up when GDevelop plays them.
- Auto mode finds sprites separated by transparent gaps on an uneven sheet and keeps small detached parts, such as a hat or a sword, with their body.
- Files are named after the sheet with a zero-padded number (hero_001.png, hero_002.png …), so a file picker lists them in frame order.
- Pixels are copied, not redrawn: each PNG was measured equal to the box outlined on the sheet, with nothing scaled or smoothed.
- A colour key under Advanced clears an opaque backdrop, such as magenta, before the frames are cut.
- Scope, stated plainly: we did not open these files in GDevelop; the steps in the table are GDevelop's usual ones.
How to do it
- Drop the sprite sheet on the Sprite Lab.
- Choose Grid for an even sheet, or Auto for an uneven one, and look over the boxes.
- Drag or type any box that is off, and keep the frames in reading order.
- Download the frame PNGs as a ZIP and unzip it.
- In GDevelop, add one animation's images to the sprite object in order, set the time between frames and turn loop on or off.
From the ZIP to a GDevelop animation
| Step in GDevelop | What you use from the ZIP | Tip |
|---|---|---|
| Add the frame images in order | The PNGs of one row, e.g. hero_001 to hero_008 | Zero-padded names keep the order in the file picker |
| One animation per action | One group of files per row of the sheet | Name each animation the way your events refer to it |
| Set the time between frames | Your frame time in seconds, e.g. 0.1 for 10 fps | The ZIP holds no timing; one value covers the whole animation |
| Loop | On for idle and walk cycles, off for one-shot attacks | Decide it per animation |
| Frame size | Every PNG the same size when cut by Grid | Mixed sizes are what make a character shift |
Nothing here was run in GDevelop; the rows name the usual steps of its object editor. The PNGs themselves were measured equal to their boxes on the sheet.
Outputs and how each was checked
"Measured" means the downloaded file was opened again outside the page (Pillow, numpy or an independent parser) and the property was measured. Loading these files in a game engine was not tested.
| Target | Files | Check |
|---|---|---|
| Frame PNGs | <sheet>-frames.zip (one PNG per frame) | Measured PillowEvery frame PNG equals its outlined box on the sheet (Chromium and Firefox). No position data in the ZIP. |
Evidence
Frames re-read from the ZIP equal their regions of the source sheet pixel for pixel.
Limits
- The classic Lab has no timeline or tags; use the Studio for animations.
- Frames are cut by alpha islands or a grid you confirm.
- Very large sheets are sliced in bands; the page shows progress.
Questions
Why cut the sheet outside GDevelop?
Its sprite animations are made of individual frame images. Cutting here gives you those images with exact pixels and a predictable order, and you can check every box before a file is written.
One sheet holds several animations. How do I split them?
Download the ZIP once. The files follow the sheet's reading order, row by row, so in GDevelop you create one animation per row (idle, walk, attack …) and add that row's files to it.
My animation wobbles after import.
Frames of different sizes can shift against each other when they play. Cut with Grid to get equal boxes, or run the Normalize step to put every frame on one common canvas before you download.
Does the ZIP carry timing or hitboxes?
No, only the PNGs. Timing and collision masks are set in GDevelop. If you also need an engine atlas with per-frame timing for Godot, Unity or Phaser, open the same sheet in the Studio.
Is it free, and do I need an account?
Everything on these pages is free and works without an account. There is no watermark and no export that is held back.
Are my sprites uploaded?
No. The Studio decodes, packs and exports in this browser tab. Projects are autosaved in the browser (IndexedDB) and can be saved as a .nerulio file.
Does it need Aseprite or an engine plugin installed?
No. .aseprite files are read and written in the browser, and each engine bundle carries what that engine needs (for Godot, the import settings and scene; for Unity and the Godot TileSet, a small editor script).