How to turn a GIF into a sprite sheet
- Upload the GIF. The tool shows the frame count, size and loop length and plays it next to the sheet.
- Set the layout: columns (0 picks a near-square grid), spacing between frames, and a whole-number scale for pixel art.
- Download the sheet as a PNG with a JSON file of frame positions and durations and a ready-made CSS animation, or every frame as its own PNG in a ZIP.
To go the other way, switch to Sprite sheet → GIF, upload a sheet, enter its columns and rows, how many frames to use and the delay, and download the GIF.
Full frames, not fragments
Most GIFs are stored as a first frame plus the rectangles that change, and each frame carries a disposal method that says what happens before the next one: leave it, clear that area to transparent, or put back what was there before. The tool decodes the file with gifuct-js and then replays every frame onto a canvas with its disposal method, the way a browser plays the animation, and copies the full canvas into the sheet.
What we tested
On October 14, 2026 we made test GIFs with Pillow, ran them through the tool in Chromium and compared the results with Pillow’s own decoding:
| Test | Result |
|---|---|
| GIF with disposal 1 (keep), 8 frames, mixed delays | 8 frames, 0 pixels differ from Pillow, delays match |
| GIF with disposal 2 (clear to transparent) | 8 frames, 0 pixels differ from Pillow, delays match |
| GIF with disposal 3 (restore previous) | 8 frames, 0 pixels differ from Pillow, delays match |
| CSS animation | 8 keyframes for 8 frames |
| Scale 3× (pixel art) | frame 120x90, 0 pixels differ from a nearest-neighbour enlargement |
| Frames as PNGs (ZIP) | 8 files |
| Sheet back to GIF (4 × 2 grid, 80 ms) | 8 frames of 40x30, delays [80] ms, 0 pixels differ from the original GIF |
The page fitted a 390 px phone screen with no errors.
Sources
Checked on .
Frequently Asked Questions
Built by Derek Giordano · Part of Ultimate Design Tools