Extract Frames
Turn a video into a numbered set of still images, sampled however you choose.
What this tool does
Extract Frames turns one video into a numbered set of still images without an encoder, a plugin or an upload. It builds a list of timestamps from the settings you choose, then walks that list: move the playhead to a timestamp, wait for the decoder to settle on a frame, copy what the video element is showing into a canvas at the width you asked for, and encode that canvas as a JPG, PNG or WebP. Every image is written inside this tab, so the file you picked is not transmitted anywhere and the tool carries on working with the network switched off.
Three sampling plans cover most of what a frame grab is for. Every N seconds takes one image at a fixed spacing, from 0.04 seconds apart up to 600. A set number per second expresses the same idea as a rate, between 0.1 and 30 frames a second. A fixed number of frames, evenly spaced puts the first image on the start point, the last on the end point and the rest at equal gaps between — ask for one and you get the midpoint instead — which is the mode to reach for when you want exactly twelve images regardless of how long the clip runs. Start at and End at narrow the job to a section; both accept plain seconds, mm:ss or hh:mm:ss, and leaving End at blank runs through to the end of the video.
Two ceilings and one caveat are worth knowing before you start. No job may plan more than 600 frames, and one that would is refused with the number it was about to produce rather than quietly truncated, so a ten-minute clip cannot be exploded frame by frame here. Frames are also taken strictly one at a time — a seek, a decode and an image encode for each — so a 600-frame job is a matter of minutes rather than seconds and needs the tab left open. And because the timestamps go to the browser's seeking machinery rather than to a frame index read out of the container, what returns is whatever the decoder settles on at each mark: for an ordinary MP4 that is the frame at or immediately before the time you named, while a file with sparse keyframes or a damaged index can land a fraction of a second adrift, and two close requests can come back as the same picture.
What you get is a plain set of images and nothing besides. They are painted from a canvas, so none of the source's metadata survives — no camera fields, no capture date, no timecode printed into the picture — and the audio track plays no part in the job. JPG re-encodes each frame lossily at the quality you set, anywhere from 40 to 100; PNG is the choice when a frame is going on to be edited or compared pixel by pixel, and WebP usually lands smaller than JPG for the same visual quality. The width control only ever scales down: ask for 1920 px from a 720p source and 1280 px comes back, because enlarging invents detail the camera never recorded.
How to use it
- Pick the video. Extract Frames takes a single file at a time. Everything hangs off the browser's own decoder, so MP4 and WebM are safe bets, a MOV opens only when its codec is H.264 or HEVC rather than ProRes, an MKV only when it carries VP8, VP9 or AV1, and the older AVI, WMV, FLV, MPG and TS containers do not open at all.
- Decide how the frames are spaced. Pick an interval, a rate per second, or a fixed count spread evenly across the range. Only the field belonging to the mode you selected is shown, so there is a single number to set.
- Narrow the range if you want part of the clip. Start at and End at take seconds, mm:ss or hh:mm:ss. An end point earlier than the start is rejected outright, and the message names the video's real length so you can correct it.
- Set the image format, quality and width. One format covers the whole set: JPG, PNG or WebP. The quality slider covers 40 to 100 and appears for JPG and WebP only, PNG having no lossy setting. A width of 0 keeps the video's own frame size.
- Start the run, then keep the images. Progress counts the frames off as they are written. Each image downloads on its own, or the whole set as a single ZIP, and the summary reports the count, the pixel size and the first and last timestamps.
Processing & privacy
Runs on your device. Your file is processed directly in this browser.
Common use cases
Pulling a still for a thumbnail or a poster
A video screenshot taken by pausing playback and grabbing the screen carries the player's scaling and whatever interface sat on top. Sampling several candidate frames and keeping the sharpest gives a clean image at the recording's own resolution.
Skimming a long recording
A fixed number of frames evenly spaced turns an hour of footage into twenty images you can take in at a glance, which is the quickest way to find the section that actually matters.
Illustrating a bug report or a support reply
Three or four stills a second apart show the moment a layout breaks or a control stops responding, and they sit inline in a ticket where a video attachment has to be downloaded and opened.
Inspecting a suspect second closely
At a short interval one awkward second becomes a strip of images you can step through in an ordinary image viewer, rather than scrubbing a timeline that keeps snapping to keyframes.
Producing input for something else
Photogrammetry, OCR and dataset work all want individual images rather than a video, and PNG output hands them frames with no compression artefacts of their own.
Questions
Does the clip leave my machine?
Can I export every single frame?
How exact are the timestamps?
JPG, PNG or WebP for a still?
Why is my image smaller than the width I asked for?
Do the images keep the video's date or camera details?
The video never loads here. What now?
How is this different from Video Thumbnail?
Related tools
- Compress Video — Reduce video file size with a quality target.
- Video to GIF — Turn a short clip into an animated GIF.
- Video to MP3 — Extract the audio track from a video.
- Convert Video — Convert between MP4, WebM, MOV and MKV.
- Trim Video — Cut a clip to a start and end point.
- Merge Videos — Join several clips into one file.