GIF Frame Extractor (Beta)

Split an animated GIF, WebP or PNG into separate PNG or JPG frames, with each frame's timing, and make a sprite sheet if you need one.

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.

    Split an animation into frames

    Upload an animated GIF, WebP or PNG and download every frame as a separate picture, in a ZIP with the frames numbered in order (name-001.png, name-002.png…).

    • PNG or JPG: PNG keeps every pixel and transparency exactly; JPG makes smaller files for photo-like animations, with a background colour for transparent areas.
    • Fewer frames: keep every 2nd, 3rd or Nth frame, and choose the first and last frame under More options.
    • Timing: the frame count, the delay of each frame and the loop count are listed, and the ZIP has a frames.csv file with each frame's number, delay and start time.
    • Sprite sheet: all selected frames in one PNG grid, with a JSON file of their positions and delays, for games, CSS animations and 3D programs.
    • Contact sheet: the frames as thumbnails with their numbers and delays, as a JPG; it is also shown on the page after every split.

    What the frames look like

    Each frame is saved as it appears in the animation, fully drawn, not as the partial update GIFs often store. So every frame is a complete picture you can use on its own.

    Delays are the ones browsers use: a frame stored with 0 or 10 ms is shown for 100 ms by browsers, and that is the value listed (you get a note when this happens).

    A still picture (a GIF, WebP or PNG that isn't animated) gives one frame. A HEIC or AVIF file gives each of its pictures (a burst or collection holds several; they have no timing, so none is listed). A file that was cut off while downloading gives the frames that could be read, with a note.

    Limits

    Animations up to 3,000 frames and 160 million frame pixels in total (for example 1,000 frames of 400 × 400) can be split. The contact sheet shows up to 400 frames; the ZIP always has all selected frames.

    Frequently asked questions

    What delays are listed?

    The time each frame is shown, in milliseconds, as browsers play it. A GIF can store 0 or 10 ms, but browsers show such frames for 100 ms, so that is the value listed (with a note).

    Can I get only some of the frames?

    Yes. “Keep every Nth frame” thins them out, and under More options you can set the first and last frame. Frame numbers start at 1.

    What is in the sprite sheet JSON?

    The size of one frame, the number of columns and rows, the loop count, and for every frame its number, position (x, y), size and delay. Game engines and CSS animations can use it to play the frames back.

    Do transparent GIFs stay transparent?

    Yes, as PNG frames and in the sprite sheet. JPG has no transparency, so JPG frames get a background colour you can choose.

    Are my files kept on your server?

    No. Uploads are deleted as soon as the job finishes, and the results are deleted automatically after 30 minutes (or immediately with “Delete now”).