MP4 to GIF

Convert MP4 video to GIF for free — pick the range and create it in your browser, no upload.

Open the MP4, choose a few seconds, pick a width and a frame rate, and Nerulio decodes the MP4's video track with your browser's WebCodecs decoder and writes a GIF. Most MP4s carry H.264 video, which browsers decode widely; MP4s from newer phones and cameras may carry HEVC or AV1, whose support depends on the browser and device. The audio track is ignored, a phone's rotation flag is applied, and a variable-frame-rate recording becomes an evenly paced GIF.

Drop video files hereProcess many files at once
No upload · processed on this device

What is inside an MP4, and what the GIF keeps

MP4 is a container. The video inside is usually H.264 (AVC); MDN also lists AV1 and VP9 as MP4 video codecs, and many phones write HEVC. The container stores a timestamp for every frame and, for phone recordings, a rotation flag. Nerulio reads those with Mediabunny and decodes only the frames it needs, in time order, in a background worker.

Phone MP4s are often recorded at 30 or 60 fps and with a variable frame rate. A GIF has fixed delays, so Nerulio samples the section at even steps of 1 ÷ fps seconds and takes whichever frame is on screen at each step: a 60 fps recording at 15 fps keeps one frame in four, and uneven source timing comes out evenly paced.

A portrait phone MP4 is usually stored as landscape pixels plus a 90° rotation flag. Frames are turned upright before scaling, so the width you pick applies to the upright picture: 480 px wide from a 1080 × 1920 clip gives 480 × 853.

H.264 (AVC)
The most common MP4 video codec, widely decoded by browsers.
Variable frame rate
Frame timestamps that are not evenly spaced, common in phone and screen recordings.
Rotation flag
Metadata saying the stored picture must be turned for display.

Example: a 4-second portrait phone MP4 at 60 fps

Width 480 px, 15 fps, crop 4:5:

Source        1080 × 1920 as displayed (stored 1920 × 1080 + 90° flag), 60 fps, H.264 + AAC
Width 480     480 × 853 px after turning upright
Frames        4 s × 15 fps = 60 frames: one source frame in four
Crop 4:5      480 × 600 px, centred (253 px cut: 126 at the top, 127 at the bottom)
Index data    480 × 600 × 60 = 17.3 million bytes before LZW
AAC audio     not read

Without the crop the same GIF is 480 × 853 × 60 = 24.6 million bytes of index data, which is why tall phone clips are worth cropping or narrowing.

From the MP4 to the GIF

In the MP4In NerulioIn the GIF
H.264, HEVC or AV1 video trackDecoded frame by frame with WebCodecsPalette images of up to 256 colours
Frame timestamps, even or variableSampled every 1 ÷ fps s inside the sectionDelays in 1/100 s, e.g. 70-60-70 ms at 15 fps
Rotation flagApplied before scalingUpright frames
AAC audio trackNot readNo sound
Other tracks, chapters, subtitlesIgnored—

Check the result

  • After opening, the file line shows the upright dimensions and the duration; a sideways size means the MP4 has no rotation flag.
  • The frame count in the summary should be seconds × fps ÷ speed.
  • Compare the GIF's first frame with the MP4 at the section start using the Result and Source tabs.

Troubleshooting

SymptomLikely causeHow to checkFix
Decoder error as soon as the GIF startsThe MP4 holds HEVC or AV1 and this browser has no decoder for itffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 clip.mp4Use a browser that decodes it, or export the MP4 again as H.264
The GIF looks choppier than the MP4A 60 fps MP4 sampled at 15 fps keeps one frame in fourFrame count in the summaryChoose 24 fps, or keep a short MP4 with trim
The GIF is sidewaysThe MP4 carries no rotation flag, or one the reader does not applyCompare with the phone's own playerExport the MP4 again from the phone or editor
The file is far too big for a portrait clipTall frames: 853 px high at 480 px wideResult dimensionsCrop to 4:5 or 1:1, or choose 320 px

Other ways to do it

OptionWhen it is the better choice
FFmpeg with palettegen and paletteuse on the MP4Scripts and batches, with one palette for the whole clip.
Keep it as a short MP4Where the platform plays MP4: smaller than a GIF and with sound; cut it with trim.

What this page does not cover

  • The browser must decode the MP4's video codec; HEVC and AV1 support varies by browser and device.
  • Only the primary video track is used.

Versions and sources

Checked in tests/media-browser.mjs with a 1920 × 1080 H.264/AAC MP4 in Chromium 153 and Firefox 155: 2 s at 640 px and 12 fps gave 24 frames 640 px wide. MP4 codec facts follow MDN; HEVC browser support is from caniuse.

Official documentation used

MP4 to GIF

MP4 is the video format used by most phones, cameras and editors.

GIF size depends heavily on width, frame rate and colours; short clips at a modest width share best.

Your file is never uploaded — it is processed inside this browser.

Video to GIF

Set width, frame rate and palette size; frames are processed sequentially.

How it works

  1. Open a video and select a short range
  2. Set width, frame rate and palette size
  3. Export a GIF and check motion, colors and file size

Supported formats

MP4 / WebM / MOV → GIF — Input decoding and output encoding depend on browser support.

What this tool does

Decode one frame at a time; choose GIF width, FPS, palette size and dithering.

Implementation and verified quality

advanced · WebCodecs sequential frames / gifenc adaptive palettes / measured size targets. Quality qualification is in progress. Pro/Flagship quality has not been established.

Before you export

Fast cut shrinks to inner keyframes. Precise mode re-encodes; codec availability varies. Temporary outputs use local browser storage when available. Compatibility recording retains its short-clip limits.

Frequently asked questions

What determines the supported size?

Actual device memory, storage and codec support. Tested examples are evidence, not a guarantee for every file.

Are my files uploaded?

This tool processes the files you open on your device without uploading them. Images you explicitly attach to community posts are uploaded separately. Optional engines and models are downloaded from third parties; those requests expose connection information such as your IP address.

Will my work be saved automatically?

No. Images and editing state stay in this tab; media output can use local temporary storage. Changing language preserves your work; reloading, closing the tab, or following a link to another page can clear it.