Extractor · No upload
Video to frames and stills, without uploading the video
Load a video from your device, scrub to the moment you want and save that still — or dump frames across a clip at a set interval. Frames come out at the video's own resolution as PNG or JPEG. Everything runs inside your browser: the video never travels anywhere, and the network meter below proves it live.
One still image — scrub to the moment, save as PNG or JPG
Many frames — sample across a clip
How this frame extractor works
When you choose a video from your device, the browser's File API hands this page the bytes in memory — no transfer happens, because the file is already on your machine. Your browser's own media engine does the decoding: the same machinery that plays video on any web page loads your clip into the preview above, and this page draws whatever frame is showing onto a canvas at the video's measured width and height. The canvas then writes a PNG or a JPEG, which is also the browser's own code. Unlike this site's HEIC, MP3 and GIF tools, this page downloads no library at all — there is nothing to fetch after the page itself, so the network meter's zero covers the whole session. The methodology page shows how to verify that for yourself.
Everything the readout and the result rows show is a measurement, not an assumption. The resolution is the width and height the browser reports for your file, and it is what the frames are written at — nothing is scaled up or down. The timestamp on each row and in each file name is the position the video actually landed on, not the one that was requested: browser seeking is keyframe-dependent, so asking for 3.000 seconds can land a few hundredths away, and both numbers are printed side by side. If two sampled positions resolve to the same decoded frame, the row says so instead of quietly dropping one, and if your browser writes a PNG when JPEG was asked for, the file is named for what it actually produced and the substitution is reported.
The honest limits: what your browser can't decode, this page can't read — MP4, MOV and WebM are dependable, while MKV and AVI generally are not, and a file that fails gets an error naming both the file and the container rather than a silent skip. A web page is given no way to read a video's true frame rate and no way to step to a specific frame number, so the readout says the source frame rate is not measurable and the frames-per-second control is a rate this tool asks for, sampled by timestamp. A run stops at 120 frames, and stops earlier if the collected frames reach a 512 MB memory guard; both are stated here and reported on the run whenever they apply. Sampling many frames at native resolution takes real time and memory on your device.