Drop a video here, or click to choose
MP4, WebM, MOV, M4V. Whatever your browser can play.
Free · no sign-up · nothing uploaded. Your file is decoded on your own device, so even a multi-gigabyte video opens instantly.
Pull a still from any point in a video file at the source's true resolution, stepping one frame at a time. The file is decoded on your own device and never leaves it.
Drop a video here, or click to choose
MP4, WebM, MOV, M4V. Whatever your browser can play.
Free · no sign-up · nothing uploaded. Your file is decoded on your own device, so even a multi-gigabyte video opens instantly.
Space play/pause · ←→ step one frame · Shift + arrows for 1s ·C capture
The usual answer to "I need a still from this video" is a screenshot or an ffmpeg command. A screenshot caps you at screen resolution and catches player overlays. ffmpeg you have to install, then remember the syntax for.
Browsers already ship a complete, hardware-accelerated video decoder. floi points that decoder at your file, draws the decoded frame to a canvas at its full size, and encodes it. The result is pixel-identical to what ffmpeg would give you, with no install and no upload.
Most browser-based tools nudge currentTime by a hard-coded 1/30th of a second and hope. That drifts on 24 fps film, 25 fps PAL, 50 fps and 60 fps footage alike.
floi instead derives the real rate from the decoder itself, and drops it into a picker you can override. It measures the interval between presented frames, falling back to the decoder's frame counter when the compositor is idle. Stepping then moves exactly one frame. Captures wait for the decoder to actually present the new frame before reading pixels, so you never get the previous frame by accident.
For contact sheets, thumbnails, dataset frames or scene breakdowns, set an interval and let it run. floi seeks to each mark in turn, captures, and reports progress. When it is done you can download all of them in one ZIP, named by timecode so they sort correctly:
my-video-00h00m00s000ms.png
my-video-00h00m05s000ms.png
my-video-00h00m10s000ms.pngRuns are capped at 300 frames. Each captured frame is held in memory as an encoded blob, and a few hundred 4K PNGs is already a serious amount of RAM. The cap keeps the tab responsive. For longer jobs, run several passes with different start points.
| Key | Action |
|---|---|
| Space / K | Play or pause |
| ← → | Step one frame back / forward |
| Shift + ← → | Jump one second |
| C / Enter | Capture the current frame |
No. The file is opened with a local object URL and decoded by your browser's own video engine. floi has no backend. The page is static files on a CDN, so there is nowhere for a file to be uploaded to. You can disconnect from the internet after the page loads and it keeps working, decoding and all. Reloading while offline is the one thing that will not come back, unless your browser still has the page cached.
The video's exact native resolution. A 3840×2160 source exports 3840×2160 frames. floi reads videoWidth/videoHeight from the decoder, not the on-screen preview size, so a small preview window does not reduce quality.
Anything your browser can play: MP4 (H.264/H.265 where supported), WebM (VP8/VP9/AV1), MOV, M4V and OGV. MKV and AVI often will not decode. If the video will not open, remux it to MP4 first with a tool like HandBrake or ffmpeg.
floi samples the decoder's own frame timings to measure the true frame rate, then steps by exactly 1 / fps. Use ← and → for one frame, or hold Shift for one second.
The rate sits in a picker next to the timecode. Detection fills it in automatically, and you can override it. Pick 23.976, 25, 59.94 or any standard rate if you know what your footage was shot at.
Yes. Set an interval, anywhere from every 0.5 seconds to every minute, then press Extract series. floi seeks and captures each point in turn, shows progress, then lets you download the whole set as a ZIP. Batches are capped at 300 frames per run to stay within browser memory limits.
Not directly. A browser cannot read pixels out of YouTube's cross-origin player, and its media servers do not permit cross-origin fetches. Either download the video first (only where you have the right to) and open the file here, or use Live Capture, which samples what is already on your screen.
To step through a YouTube video frame by frame in the player, pause it and press . and ,, which are YouTube's own shortcuts. They do not exist on mobile, and they cannot save the frame for you; this extractor does both, on any device, once you have the file.