This page's code did not start.

Opening index.html directly from a folder blocks JavaScript modules, so nothing will happen when you choose a GIF. Serve the folder over http instead:

powershell -ExecutionPolicy Bypass -File serve.ps1

Then open http://localhost:8080/.

GIF to MP4

Every frame, with the delay the GIF gave it, as H.264 in an MP4. Converted on your machine; the file never goes up.

Language: English
View source
Your GIFs are processed in your browser. No processing upload.

The GIF you choose is decoded, drawn frame by frame, encoded and written into an MP4 in memory on this machine, by your own browser's encoder and code served from this address. Nothing here can make an upload, and there is no server on the other end of this page to receive one.

Live check: checking…

Offline: checking…

Don't take our word for it: open DevTools, watch the Network tab, and convert something. Not one request carries a GIF, a frame, or a filename. Or unplug from the internet and convert it anyway.

1 Choose the GIF

2 See what will be written

Every frame of the GIF becomes one frame of video, shown for exactly as long as the GIF shows it. Nothing is resampled, dropped or doubled, and the video plays for as long as the GIF does. The picture stays its own size.

Behind the transparent parts A video does not loop by itself the way a GIF does: the player decides. The preview below loops; a chat app or a feed usually does too.

The 512 MiB limit is an estimate for retained pixels, composition and video buffers. Private codec memory may add more. Cancel retires the run; a native read or synchronous drawing call may still finish.

3 Convert it

View as Markdown

How to convert a GIF to MP4

  1. Choose the GIF. One at a time. It is read straight off your disk by the browser, and the page says what it is: how big, how many frames, how long it plays, and its size in pixels.
  2. Read what will be written. One line: the size, the frames and their timing, the length, and the bitrate. There is nothing to set unless the GIF has transparent places, in which case a colour field appears for what goes there.
  3. Convert it, and read the line that says it was checked. Every frame is drawn and encoded, with a bar that says where it is. Then the finished file is opened again here and has to play for as long as the GIF does with every frame present. It plays from memory under the download, looping, so you can see the join.

The longer version

How to convert a GIF to MP4, and why it gets so much smaller Why an MP4 of the same animation is a tenth of the size of the GIF, what a video cannot do that a GIF can, why the frame timing is what most converters get wrong, and how to convert a GIF in your browser without uploading it.

Questions

Why is the MP4 so much smaller?

Because a GIF stores every frame as a picture with at most 256 colours and no memory of the frame before it, and a video codec stores only what changed. H.264 has had thirty years of practice at that. The same animation usually comes out at a tenth of the size, often less, and looks better, because it is no longer limited to 256 colours. A tiny or a very still GIF can come out larger; the page says so when it happens.

Will the timing be the same?

Yes, frame for frame. A GIF has no frame rate, only a delay on each frame, and the video keeps every delay as it is: each frame of the GIF is one frame of video that lasts exactly as long. Nothing is resampled, doubled or dropped. The one liberty taken is the one every browser takes, playing a delay under two hundredths of a second as ten, so the video plays for as long as the GIF plays in a browser. The finished file is opened again to check both.

Will it loop?

That is up to whatever plays it. A GIF carries its own instruction to loop; an MP4 carries no such thing, and the player decides. Most feeds and chat apps loop a short video, and the preview on this page loops so you can see the join. A video player on a desktop usually plays it once.

What happens to the transparent parts?

They get a colour, because a video is a solid rectangle. For a GIF that has transparent places the page shows a colour field, white by default because that is what most pages are; for one that has none the field is not shown. The colour is drawn behind the frames before they are encoded, so it is part of the picture.

Does it change the size of the picture?

H.264 needs even edges, so an odd width or height gets one line of background without resampling. If the longest edge exceeds 3840 pixels, the GIF is drawn down to fit that limit. The page states the actual output size before starting; output resizing does not reduce the source composition buffers.

How long does it take?

An ordinary GIF usually takes seconds with hardware encoding, longer without it. The bar shows the current frame. Cancel retires its encoder and output; a native support query, file read or synchronous drawing call can still finish. Late work cannot replace a newer source or result.

Are my GIFs uploaded anywhere?

No. The GIF is read, decoded, encoded and written by your own browser on your own hardware, and the page's Content-Security-Policy names every address it may contact — none of them belongs to this site. The simplest way to satisfy yourself is to unplug from the network and use the page anyway.

Does it work on a phone?

On a phone whose browser can encode video, yes, and a phone's own hardware encoder is quick. What a phone lacks is memory: the GIF's frames are decoded into memory first, so a very long one may be more than a phone can hold.

Is there a size limit, and does it cost anything?

The reader retains at most 512 million decoded patch pixels, and conversion refuses estimated known buffers above 512 MiB. This is not a guarantee about private codec memory or every browser allocation. The page explains a refusal. It is free, with no account, sign-in or trial. Advertising pays for the site and receives nothing about your GIFs.

Does it work offline?

Yes. Load the page once, then disconnect from the internet and it keeps working. That is also the simplest way to prove nothing is being uploaded: a tool that sent your GIF away to be converted would stop the moment you unplugged.