Load the video
Choose a file or drop it on the upload area. The first visit downloads the WebAssembly video engine, about 31 MB, once.
Load a video and browse it as a filmstrip. Save any frame as a full resolution still, or mark a start and an end frame to export that slice as a looping animated GIF. FFmpeg compiled to WebAssembly does all of the work in your browser, so the video is never uploaded.
MP4, MOV, WebM, MKV, AVI and most other formats
The video never leaves your deviceFrames appear here once a video is loaded.
Load a video to see its frames.
Video decoding and GIF encoding run on ffmpeg.wasm, a WebAssembly build of FFmpeg. The wrapper is MIT licensed and the self-hosted core build is GPL-2.0-or-later; its source is published by the ffmpeg.wasm project. 73hi is not affiliated with the FFmpeg project.
No upload queue, no command line, and no software to install.
Choose a file or drop it on the upload area. The first visit downloads the WebAssembly video engine, about 31 MB, once.
Frames line up horizontally with their timestamps. Click one frame to select it.
Save frame exports that moment at full resolution. Click a later frame to mark a range, then Create GIF.
The same filters a video editor would use, running in WebAssembly.
See evenly spaced frames or let FFmpeg pick the scene changes, each labelled with its timestamp.
The strip is only a preview. Saving a frame re-reads that timestamp and writes the video's original pixels.
Each GIF gets a palette generated from its own frames, which keeps gradients and skin tones far cleaner than a fixed palette.
Decoding and encoding happen in a Web Worker on your device. The video is never uploaded to a server.
Input support follows the FFmpeg build that runs in your browser.
| Direction | Format | Notes |
|---|---|---|
| Input | MP4, MOV, WebM, MKV, AVI | Most common containers decode directly; exotic codecs may need a conversion first |
| Still output | PNG, JPEG | Exported at the original frame resolution |
| Animation output | GIF | Looping, palette optimised, 240 to 640 pixels wide |
Performance: the single threaded WebAssembly build is much slower than desktop FFmpeg. Short clips of a few seconds at 10 fps and 320 pixels wide encode in seconds, while long or high resolution ranges can take a minute or more. Keep the browser tab open while the progress bar moves.
No. The video is written into the memory file system of FFmpeg compiled to WebAssembly, which runs in a Web Worker in your browser. Decoding, frame extraction and GIF encoding all happen on your device.
The tool downloads the FFmpeg WebAssembly core, about 31 MB, the first time you open the page. Browsers cache it, so later visits start immediately. Nothing else is downloaded while you work.
Anything the FFmpeg build can decode, which covers MP4, MOV, WebM, MKV, AVI and most other common containers. Support for a specific codec still depends on the build, so if a file fails, try converting it to MP4 with H.264 first.
The single threaded WebAssembly build is several times slower than FFmpeg on a desktop. Keep clips short, use 8 to 12 frames per second and a width of 320 to 480 pixels for quick results.
Click the first frame you want, then click a later frame. The two marks define the range, the frames between them are highlighted, and the GIF is encoded from the start timestamp to the end timestamp.
Yes. The filmstrip only shows small previews, but Save frame re-reads that exact timestamp from the video and exports it at full resolution as a PNG or a JPEG.
Yes. The GIF is written with looping enabled, so it repeats continuously in browsers and chat apps.