GIF to Sprite Sheet Converter

Convert GIF to sprite sheet images in your browser, with a PNG grid and per-frame JSON. The same converter turns animated WebP and APNG files into sprite sheets too, in every current browser.

How to use this tool

  1. Open the animation

    Drop an animated GIF, WebP or APNG into the converter. Use the original animation file rather than a screenshot: a screenshot only contains a still image. The tool decodes the animation locally and shows the resulting frames for review.

  2. Inspect the frames

    Check the frame count and preview before saving. GIF frames are composited with their disposal behavior, so the result represents complete animation frames rather than just changed patches. Read any truncation warning if the input exceeds the converter’s frame cap.

  3. Set the grid

    Choose the number of columns to arrange the frames. Watch the resulting sheet dimensions: changing columns changes the shape of the sheet without changing the artwork. Choose a layout that fits the dimension limit and your engine’s import settings.

  4. Download or continue

    Download the sheet and its timing metadata, or send the decoded frames to Export & Download. The export tool lets you rename frames and choose engine formats. Keep the JSON if the animation uses unequal delays; a PNG alone cannot store frame timing.

What you get

The converter keeps up to 300 frames and limits a downloadable sheet to 8192 pixels per side. It also checks the total decoded pixel budget, so large frames can reach a memory safeguard before the frame cap.

Direct downloads provide a PNG grid and JSON with frame positions and durations. GIF, animated WebP and APNG decode in every current browser, Safari and iPhone included: where the browser has no animation decoder of its own, SpritePilot reads the frames itself.

Use the result in your engine

  • Godot 4 import guide

    For session sprites, choose Godot SpriteFrames in Export & Download. Keep the sheet beside the .tres resource, then drop the resource onto an AnimatedSprite2D. A standalone PNG can also be sliced in the engine.

  • Unity import guide

    Import the PNG as Sprite (2D and UI), choose Multiple, and slice it in the Sprite Editor. Unity does not read this tool’s JSON metadata; check the slicing and pivot in the editor.

  • Phaser 3 import guide

    Load a sheet with Phaser or TexturePacker JSON using load.atlas. For a uniform grid without atlas metadata, use load.spritesheet with the correct frame size. Build the animation from the intended frame names or indices.

Frequently asked questions

Is this tool free?

Yes. You can use the tool and download its output without payment or signup. Keep a downloaded copy of work you want to save; browser storage belongs to this browser and can be cleared by its settings.

Are my files uploaded?

No. This tool works on your device, in your browser, so your files stay with you. The only exception on the site is the optional auto-detect in Sprite Detection, which uploads the image to our server and deletes it within 24 hours; its Grid Slice mode runs on your device too.

Can I convert an animated WebP or APNG?

Yes, when the browser can decode that animation format. Support varies by browser and file. If a supported decoder is unavailable, try a browser with that capability or provide a GIF version. Renaming an extension does not convert the underlying image.

Will the original frame delays survive?

The direct JSON records frame durations. The handoff to Export & Download also carries timing into Aseprite-style JSON and Godot SpriteFrames. A PNG grid has no timing by itself, and a player set to one fixed FPS cannot reproduce unequal delays automatically.

Why does the sheet have fewer frames?

Only the first 300 frames are retained when the animation exceeds the cap, and a warning identifies this. Use a shorter source animation if the ending matters. Also check the decoded pixel budget when each frame is large.

Can I make a GIF from a sheet again?

Use Sprite Sheet to GIF for the reverse direction. Set its grid to match the PNG and check the frame sequence. That workflow uses the speed you choose in the player, so verify the timing when the original animation had uneven delays.