Conversion Directions and Supported Formats
This tool provides two conversion workflows. It extracts video frames at designated timestamps from MP4, WebM, or Ogg videos to create animated GIFs, and it records animated GIF playback from a canvas into silent WebM videos.
Creating MP4 files from GIFs is not supported. In addition to file picker accept attributes, dragged and dropped files are checked for video or GIF formats; however, even if file extensions match, files cannot be processed if internal codecs cannot be decoded by your browser.
Input and output object URLs are revoked upon replacement or page exit, and MediaRecorder instances, MediaStreams, and animation loops used during GIF recording are stopped upon completion.
This does not, however, guarantee overall device memory status or browser-level implementation behavior.
Video to GIF Conversion Process
Converting video files to GIF animations operates by controlling video playback through a visible preview HTMLVideoElement, sampling pixel data on a canvas, and assembling binary files via a JavaScript GIFEncoder.
The selected video is loaded into memory as an object URL and attached to the video element. Detecting the loadedmetadata event obtains the total video duration in seconds.
If duration is zero, negative, or not recognized as a finite number via Number.isFinite, the file is treated as damaged or unsupported, halting conversion with an on-screen error message.
When valid, a timestamp array for all sampling frames between time 0 and video duration is calculated based on requested FPS. Conversion runs on the main thread using asynchronous seeking: if the element is already at the target timestamp, readyState is checked immediately without waiting for seeked, whereas seeking to a new position waits up to 10 seconds for the seeked event.
Sampled frames are drawn to a canvas context (ctx.drawImage) at the chosen scale and added to the encoder. Frames are sampled at fixed intervals without guaranteeing exact alignment with original source keyframes.
Once seeking and encoding finish, frame data is assembled into a 256-color GIF binary Blob with 10 ms delay resolution. Progress percentage updates in real time on the user interface, converting the entire clip without segment trimming.
GIF to WebM Video Conversion Process
In contrast, converting GIF animations to video parses the binary data using gifuct-js to reconstruct composite frames according to disposal 2 and disposal 3 rules.
The process selects frames matching elapsed playback time via original frame delays, drawing them onto an offscreen canvas and transferring them to a main canvas over an opaque white background (#ffffff).
Conversion accepts files up to 25 MiB, maximum dimensions of 4096 pixels per side, and an estimated decompressed limit of 100 MiB.
A MediaRecorder captures the canvas stream at a requested 30 FPS using VP8 configuration (falling back to default WebM container), running a real-time timer loop from 0 seconds through the chosen duration of 2 to 15 seconds while ignoring original GIF loop counts.
MediaRecorder chunks are assembled into a silent WebM Blob for download. Because recording relies on real-time setTimeout scheduling and requested 30 FPS streams without guaranteed frame delivery, output timing can diverge depending on browser load.
Controlling FPS and Scale Parameters
When converting video to GIF, you can select frame rates from 5 to 20 FPS and scale factors of 0.25, 0.50, 0.75, or 1.00x. Higher FPS extracts more frames, and higher scale increases pixel count per frame, resulting in longer processing times, higher memory usage, and larger files.
Conversion is limited to a maximum of 600 frames and 80,000,000 processed pixels (width × height × frames), and will not start if limits are exceeded.
Because segment selection is not supported, long videos must be trimmed beforehand or configured with lower FPS and scale. When converting GIF to WebM, the canvas uses the original GIF dimensions to record a stream requested at 30 FPS for 2 to 15 seconds without guaranteeing actual FPS delivery, and without options for adjusting scale or FPS.
Technical Limitations in Color, Audio, and Timing
Converting video to GIF reduces full-color footage to a palette of at most 256 colors, which can cause color banding and tonal shifts.
Because GIFs lack audio tracks, original video sound is omitted, and WebM videos created from GIFs are also silent canvas recordings.
Video-to-GIF conversion processes the entire clip from start to end without segment clipping, but will not begin if limits of 600 frames or total processed pixel volume are exceeded.
GIF-to-WebM conversion selects composite binary frames by elapsed delay time, recording canvas playback for the chosen 2 to 15 seconds while ignoring original loop metadata.
Neither conversion preserves original color, audio, or timing reversibly.
Environment Compatibility and Device Load
Before closing your source files after export, inspect the start and end frames, total duration, playback speed, loop transitions, and playback compatibility.
In video-to-GIF conversion, sequentially seeking video timestamps, drawing each frame to canvas, and passing it to the GIF encoder consumes CPU and memory in proportion to duration, FPS, and scale, capped at 600 frames and 80,000,000 processed pixels without predicting total memory beforehand.
GIF-to-WebM conversion validates 25 MiB file size, 4096-pixel side limits, and an estimated 100 MiB uncompressed limit, but cannot guarantee overall browser memory availability.
Test short clips first to verify responsiveness.
Converting GIF to WebM parses GIF binary frames, applies disposal and delay metadata to reconstruct composite frames, and selects them by elapsed time to record a silent WebM on a white background for the chosen 2 to 15 seconds, ignoring original loop counts.
Because it requests a 30 FPS stream and records in real time, actual frame delivery and timing depend on browser execution load and background timer throttling, meaning original timing is not guaranteed.
Even with MP4, WebM, or Ogg extensions, videos cannot load if internal codecs cannot be decoded by your browser. WebM export from GIF also depends on browser MediaRecorder and WebM encoder implementations.
This tool does not install additional codecs or re-encode failed videos using alternate tools. Verify length, visuals, loop boundaries, and absence of audio after conversion.
Selected asset frame extraction, canvas rendering, and export are performed on this page. During conversion, inputs, settings, tabs, and export actions are locked, and navigating away aborts reverse recording while discarding stale updates across both processes, though immediate seek cancellation and total browser memory safety are not guaranteed.
However, this does not govern network traffic for site assets, scripts, browser extensions, or device sync and backups. Evaluate confidential materials based on browser and device administration.
Before closing original files, verify start and end visuals, total duration, GIF speed, and WebM loop transitions. If video-to-GIF exceeds limits, trimming footage with a separate tool beforehand helps balance visual quality with processing load.