Skip to content

Video to GIF converter — screen recordings for READMEs and PRs

Free · no sign-up · runs in your browser

Turn a screen recording or any MP4, MOV or WebM clip into a looping GIF sized for a README, a pull request or a docs page. Pick the start, end, frame rate and width; everything runs in your browser and nothing is uploaded.

MP4, MOV or WebM — whatever your browser can play. Nothing is uploaded.

Seconds from the start of the video.

Never wider than the video itself.

GIF

Your GIF will appear here.

The video is decoded and the GIF is written in this page. Nothing is uploaded — check your network tab.

A GIF is still the one moving image that renders everywhere a developer writes: GitHub READMEs, pull request descriptions, issue comments, npm pages and most docs sites. Most converters want the clip uploaded first. This one reads the video in the page, grabs the frames with the browser's own decoder and writes the GIF in JavaScript, so a recording of unreleased work never leaves your machine.

How it works

  1. 01Pick a video. The browser reads its length and size locally and shows a preview so you can find the part you want.
  2. 02Set the start and end in seconds. Each frame in that range is reached by seeking the video, drawn into a canvas at the width you chose and read back as pixels.
  3. 03One palette of up to 255 colours is built from all the frames together, so colours do not flicker from one frame to the next — the usual tell of a cheap GIF.
  4. 04After the first frame, only the rectangle that changed is written, and unchanged pixels inside it are left transparent. A cursor moving over a still window costs a few hundred bytes a frame instead of a full image.
  5. 05Frames that are identical to the one before are merged into one longer frame, so pauses in a recording add almost nothing to the file.
  6. 06The result loops forever, previews in the page and downloads as a .gif named after your video.

Use cases

  • Showing a new feature in a pull request description without asking reviewers to download a video.
  • Adding a short demo to the top of a GitHub README.
  • Recording a bug reproduction for an issue.
  • Embedding a looping product clip in docs or a changelog.
  • Turning a simulator recording into something a chat app previews inline.
  • Converting a clip you would rather not upload to a third-party server.

Frequently asked questions

How do I make a GIF for a GitHub README?

Record the screen (Cmd+Shift+5 on macOS, Win+Alt+R on Windows, or the simulator's own recorder), open the file here, trim it to the few seconds that matter, keep the width at 640–800px and 10 fps, and download the GIF. Commit it to the repository (or drag it into an issue to get a hosted URL) and reference it with standard Markdown image syntax.

Why is my GIF so large?

GIF stores every changed pixel with an old compression method, so size grows with width × height × frames. Halving the width cuts the size by roughly four; dropping from 15 to 10 fps cuts it by a third. Screen recordings compress well here because only changed areas are written; camera footage, where every pixel changes, does not, and is better shared as MP4.

What is the GitHub file size limit for GIFs?

GitHub accepts images and GIFs up to 10 MB when you attach them to issues, pull requests and comments. Files committed to a repository can be larger, but a README GIF over a few megabytes loads slowly for everyone who opens the repo, so aim for 1–5 MB.

Should I use GIF or MP4?

MP4 is far smaller and looks better, and GitHub now plays MP4 attachments inline in issues and pull requests. GIF still wins where video is not rendered: README files on npm, many docs generators, some chat apps and email. If the destination plays video, use the video compressor instead; if it only shows images, use a GIF.

Is my video uploaded?

No. The video is decoded by your browser's <video> element, frames are read from a canvas and the GIF is assembled in JavaScript in this page. There is no server step, which you can check in your browser's network tab.

Is there a length limit?

A single GIF holds at most 600 frames — a minute at 10 fps — because every frame is kept in memory until the palette is built. Longer selections are cut at that point and the page says so. A GIF that long is rarely what you want anyway; a short MP4 is a better fit.

Related reading

More tools