Turn a Video or a Pile of Images Into a GIF, Right in the Browser
Pull frames from a video or line up stills, edit the timeline, and encode a GIF with a global palette and inter-frame compression — all in your browser.
Drop a video or a set of images
MP4, WebM, MOV, MKV, AVI — or PNG, JPG, WebP, AVIF, GIF, BMP and HEIC stills.
Dropping a file starts nothing: you choose the settings and press the button.
How it works
Drop it in
A video or a pile of stills. Nothing is uploaded and nothing starts running on its own.
Choose the range
Set the in and out points and the frame rate, then pull the frames — or grab them one at a time by hand.
Edit the timeline
Delete frames, reverse them, hold one longer, and dial in colours and dithering.
Encode and check
Hold Alt over the preview to compare the GIF against the source, then download it or send it on.
One palette for the whole clip
The colours are chosen by median cut across every frame at once, so nothing shifts hue halfway through the loop.
Only what moved gets written
Pixels a frame shares with the one before it are inherited instead of re-encoded. On a screen recording that is most of the file.
Dithering that kills banding
Serpentine Floyd–Steinberg diffusion, with the strength on a slider, so gradients stay smooth even at 64 colours.
An editable timeline
Delete frames, reverse the run, make it a palindrome, hold a single frame longer. Undo costs nothing: it stores ids, not bitmaps.
Encoded across your cores
The animation is split over a pool of web workers, so the tab stays usable and the progress bar tracks real frames.
Nothing leaves the tab
The decoder, the palette and the compressor are all JavaScript running on your machine. No upload, no model fetched from a CDN.
Chained with the suite
Hand the frame on screen straight to crop, compress or the background remover without downloading it first.
A real GIF encoder, not a canvas dump
Frames are read straight from the decoded video with a high-quality resize, never round-tripped through a JPEG. The palette is built by median cut over the whole animation, the pixels are mapped with serpentine Floyd–Steinberg dithering, and everything a frame shares with the one before it is written as transparent and inherited. The work is split across a pool of web workers, so the page stays responsive and the progress bar tracks real frames.
For bug reports, demos and reaction loops
Record a bug once and cut it down to the four seconds that matter. Turn a design walkthrough into something that autoplays inside a pull request. Or line up a handful of stills and time them by hand. The timeline stays editable until you press encode.
Nothing is uploaded, and nothing is downloaded either
Every step runs in this tab: the video decoder is the browser's own, the quantiser and the LZW compressor are JavaScript loaded with the page, and the result is a Blob that never leaves your machine. There is no server to send files to and no model or codec fetched from a CDN. The trade-off is honest: everything is bounded by your RAM, so a 4K clip has to be trimmed and scaled down before it will encode.
Frequently Asked Questions
QIs there a file size limit?+
Not a fixed one, but there is a real one: the frames live in your tab's memory. A 480 px, 4-second GIF at 12 fps is around 50 MB of working data and encodes in a couple of seconds; a 4K clip will exhaust the tab long before it finishes. Trim the range and lower the working size — that is what those controls are for.
QWhy is my GIF still so big?+
GIF is a format from 1987: 256 colours and no motion compensation. Cut the width first, then the frame rate, then the palette. Leaving “reuse unchanged pixels” on is usually worth more than all three — on a screen recording it removes most of the file.
QWhy is the frame rate not exactly what I picked?+
GIF stores each delay in hundredths of a second, so only rates of the form 100/n exist. Asking for 12 fps really means 8 hundredths per frame, which is 12.5. The panel shows the rate you will actually get, not the one you asked for.
QWhich formats can I feed it?+
Any video the browser can play — MP4/H.264, WebM, MOV and often MKV — plus PNG, JPG, WebP, AVIF, GIF, BMP and iPhone HEIC for stills. An animated GIF dropped in as a still contributes its first frame only.
QDoes anything get uploaded?+
No. There is no upload step and no external request: the encoder ships with the page and runs in web workers inside this tab.
QCan I keep transparency?+
Yes, with the “keep transparency” switch. GIF supports exactly one fully transparent colour, so soft edges become hard ones. It cannot be combined with pixel reuse, because both need that same transparent slot.