Every video is a sequence of still images shown fast enough that your eye reads them as motion. Extracting frames means reaching into that sequence and pulling individual images back out as JPEG, PNG or WebP files.
People do this for a lot of reasons. A photographer wants the one frame where nobody blinked. A student wants every slide from a two-hour lecture recording. An engineer wants ten thousand labelled images to train a model. An editor wants a reference still to match a colour grade against. The underlying operation is identical in all four cases, and it is much simpler than most people expect.
This guide covers how to do it in a browser without installing anything, what actually happens under the hood, and the handful of things that go wrong and why.
The fastest method: extract in your browser
Modern browsers already contain everything needed to do this. They ship with video decoders for the common codecs, and they expose a canvas API that can capture whatever the decoder produces. Put those two together and you have a frame extractor with no server involved at any point.
That last part matters more than it sounds. Because the work happens on your machine, your file is never uploaded, there is no wait while it transfers, no file size ceiling imposed by someone else’s server, and no copy of your footage sitting in a stranger’s storage bucket afterwards.
- 1Open the extractor and select your video. MP4, MOV, MKV, WebM, AVI, FLV, MTS, M2TS, M4V, OGV and 3GP are all accepted.
- 2Once the file loads you will see its duration. Decide how many frames you want across that duration - for a two-minute video where one frame every ten seconds is enough, that is twelve.
- 3Pick an output format. JPEG for general use, PNG when the images will be edited or used as training data, WebP when they are going onto a web page.
- 4Click Extract Frames. A preview gallery fills in as it works, and you can abort at any point without losing what has already been captured.
- 5Click Download ZIP. Every frame arrives in one archive, named in sequence.
Try FrameRipper - free, no upload
Extract frames from any video directly in your browser. No sign-up, no file size limits.
Open FrameRipperHow frames are chosen
Frames are sampled at even intervals across the whole video, and specifically at the midpoint of each interval. The formula is t = (duration / count) x (i + 0.5), where i counts from zero.
That half-interval offset is deliberate and worth understanding, because it explains a result that otherwise looks wrong. Sampling from the start of each segment would put your first capture at t=0, and the first frame of a video is very often black, a fade-in, or a title card. Technically correct, practically useless. Offsetting by half a segment means every capture lands inside real content.
A worked example: a 60-second video at 10 frames gives you captures at 3s, 9s, 15s, 21s, 27s, 33s, 39s, 45s, 51s and 57s. Notice there is no capture at 0s and none at exactly 60s. The final capture is also clamped fractionally short of the end, because seeking to the exact last timestamp fails on a surprising number of files.
One consequence catches people out: setting the count to 1 does not give you the opening frame. It gives you the exact middle of the video, which is usually a far better single representative image.
Deciding how many frames you need
The right number depends on how fast the content changes, not on how long the video runs. A ninety-minute lecture where slides advance every two minutes needs fewer captures than a thirty-second product clip where the framing never settles.
The easier way to think about it is to pick an interval rather than a count, then convert. Divide the duration in seconds by the gap you want. A twelve-minute video sampled every twenty seconds needs thirty-six frames.
| What you are capturing | Interval | 10-minute video |
|---|---|---|
| Lecture slides | 20-30 seconds | 20-30 frames |
| Interview or talking head | 60 seconds | 10 frames |
| Sports or action | 1-2 seconds | 300-600 frames |
| Editing reference stills | 5 seconds | 120 frames |
| Finding one specific moment | 0.5-1 second | 600-1,200 frames |
Over-sampling costs almost nothing. Extraction is fast, and deleting the frames you do not want takes seconds. Missing the moment you needed means running the whole job again.
Which formats actually work
This is where most problems start, and the root cause is almost always the same misunderstanding: a file extension names the container, not the codec.
The container is the wrapper holding video, audio, subtitles and metadata together. The codec is the compression scheme used for the picture itself. Browsers decode codecs. They do not care much about containers. This is why two files that both end in .mp4 can behave completely differently.
An .mp4 might hold H.264, HEVC or AV1. A .mov from an iPhone holds H.264 or HEVC depending on one camera setting. An .mkv can hold almost anything. So "does MP4 work?" has no single answer - it depends what is inside.
| Codec | Chrome / Edge | Firefox | Safari |
|---|---|---|---|
| H.264 (most common) | Yes | Yes | Yes |
| VP8 / VP9 (WebM) | Yes | Yes | Yes (14+) |
| HEVC / H.265 | Hardware dependent | No | Yes |
| AV1 | Yes (70+) | Yes (67+) | Partial (17+) |
| ProRes / DNxHD | No | No | No |
When a file will not load
If the tool refuses your file, the cause is nearly always a codec the browser cannot decode rather than a corrupt file. Three fixes, in order of effort.
Try a different browser first
This costs thirty seconds and solves the most common case. iPhone footage that fails in Chrome on Windows will usually open in Safari on a Mac, because Safari decodes HEVC natively and Chrome depends on hardware support being present.
Check what codec you actually have
On a Mac, open the file in QuickTime Player and choose Window then Show Movie Inspector. On Windows, right-click the file, open Properties, and look at the Details tab. VLC shows the same thing under Tools then Codec Information on any platform.
Re-encode to H.264
HandBrake is free, open source, and available for Windows, macOS and Linux. Load the file, choose the Fast 1080p30 preset, and export. The result is H.264 in an MP4 container, which decodes everywhere. Quality loss at that preset is negligible for still extraction.
If you are working with log or 10-bit footage from a cinema camera, apply your colour transform during this step. Otherwise the extracted frames will look flat and washed out, and correcting them afterwards is harder than doing it once at the source.
Picking an output format
JPEG is the right default and handles most situations. It is universally supported, files are small, and at high quality settings the difference from lossless is invisible on normal footage.
PNG matters in three cases. When frames will be edited and re-saved repeatedly, PNG avoids the generational quality loss that comes from re-compressing a JPEG each time. When frames are training data, PNG keeps compression artifacts out of the signal - JPEG artifacts follow a regular block grid and models can learn to key on them. And when the source is a screen recording, a slide deck or animation, PNG is frequently both smaller and sharper than JPEG, because flat colour compresses beautifully losslessly and badly with JPEG.
WebP is a reasonable middle path if the images are going straight onto a web page, producing smaller files than JPEG at comparable quality.
Try FrameRipper - free, no upload
Extract frames from any video directly in your browser. No sign-up, no file size limits.
Open FrameRipperDoes it work offline?
Yes, completely. Once the page has loaded, extraction makes no network requests at all. The decoder and the canvas API are parts of your browser, not services being called remotely.
This is easy to verify and worth verifying if it matters to you. Load the page, disconnect from wifi, and extract. It behaves identically. That property is what makes browser-based extraction workable for confidential recordings, internal training material, medical or legal footage, and anything else that should not be uploaded to a third party. The guarantee is structural rather than a promise in a policy document.
The limits worth knowing about
A single extraction is capped at 10,000 frames. This is not arbitrary: every frame is held in memory until the ZIP is assembled, and past roughly that point most browsers exhaust their heap and the tab crashes.
Resolution matters as much as count. Ten thousand frames from a 480p clip is a very different proposition from ten thousand frames of 4K, where you can run into memory pressure well before reaching the numeric ceiling. If you need a denser sample than the cap allows, split the source into segments and process each one separately.
The other real limit is codec support, which belongs to your browser rather than to any tool. No browser decodes ProRes or DNxHD, and no browser-based tool will ever change that.
When to use FFmpeg instead
Browser extraction is not always the right answer, and it is worth being clear about where it stops.
Use FFmpeg when you need codecs browsers cannot decode, when you want scene-change detection so you only capture where the picture actually shifts, when you need exact frame-number targeting rather than timestamps, or when you are processing many files unattended on a schedule. It is free, it is the tool the entire video industry is built on, and it does all of this well.
The browser is the better choice when you want the job done in the next two minutes, when you are on a machine where you cannot install software, or when the footage is something you would rather not upload anywhere. For the large majority of people who need a few dozen stills from a file they can already play, that describes the situation exactly.