Make a sprite sheet from a GIF (Beta)

Turn an animated GIF into a sprite sheet PNG with the frame positions and timings as JSON.

Opens: GIF, WebP, APNG, HEIC, AVIF
Saves: PNG, JPEG, ZIP, JSON

Split

Animation
Choose a file… or drop it here
.gif, .webp, .png, .apng, .heic, .heif, .hif, .avif · up to 100 MB
    Replace file

    An animated GIF, WebP or PNG (APNG). A still picture works too and gives one frame; a HEIC or AVIF burst or collection gives each of its pictures.

    Options
    Save frames as

    1 = every frame, 2 = every second frame, and so on.

    Frames per row of the sheet; 0 = automatic (about square).

    Fills transparent areas in JPG frames (a hex colour such as #ffffff).

    More options

    0 = the last frame.

    Your files are deleted after processing.

    Make a sprite sheet from a GIF

    A sprite sheet puts all frames of an animation side by side in one picture. Games, CSS animations and many graphics programs play animations from sprite sheets because one image loads faster and is easier to manage than dozens of separate frames.

    1. Upload the GIF, animated WebP or APNG.
    2. Choose how many columns the grid should have, or leave 0 for a roughly square sheet.
    3. Click Split and download the sprite sheet PNG and its JSON file.

    What you get

    • name-sprite-sheet.png: every selected frame at full size, left to right and top to bottom, with transparency kept.
    • name-sprite-sheet.json: the frame width and height, the number of columns and rows, the loop count, and for each frame its number, position (x, y), size and delay in milliseconds.
    • The separate frames in a ZIP as well, and a contact sheet preview.

    A frame in column c and row r (both counted from 0) starts at x = c × width, y = r × height. In CSS, that becomes the background-position of each step; in a game engine, the rectangle of each sprite.

    Tips

    • Keep sheets small enough for their use: a 100-frame GIF of 500 × 500 px makes a very large sheet. Use “Keep every Nth frame” to thin out long animations; very large sheets are refused with a note instead of producing an unusable file.
    • Frames with different delays play correctly only if your player reads the delays from the JSON.
    • GIF frames are drawn completely (not as the partial updates GIFs store), so each cell of the sheet is a full picture.

    More about what this tool reads and writes: GIF Frame Extractor.