How to turn a video into frames
- Drop an MP4, M4V or MOV into the box above, or click it to choose one. The line underneath shows what the file actually contains: dimensions, codec, duration and how many coded frames it holds.
- Choose which frames you want — every one, every nth, or one every n seconds.
- Pick PNG, JPG or WebP, and optionally a maximum width or a time range.
- Press Extract frames. Each frame appears with its number, its timestamp and its size. Download them one by one, or untick the ones you do not want and take the rest as a ZIP.
Why the frame count is printed on the page
Almost every online frame extractor works the same way: it loads your video into a hidden player, moves the playhead to a time, and copies whatever is on screen into a canvas. That is simple, and it is not accurate. Seeking is not frame exact — ask a browser for the frame at 1.033 seconds and you get whichever frame the decoder can produce near that point. On a long clip, or one with widely spaced keyframes, two requests a fraction of a second apart can return the same picture, and frames in between are never seen at all.
Nothing tells you this has happened. You get a folder of images, some of them duplicates, and unless you compare them by eye you will not know.
This tool reads the container instead and hands each stored frame to the decoder in order, exactly once. That is why the page can show you three numbers after every run: how many coded frames the file contained, how many were decoded, and how many came out. When the first two match, no frame was repeated and none was missed. It is a claim you can check rather than a promise you have to accept.
| Approach | How frames are located | Can it duplicate a frame? | Does it tell you? |
|---|---|---|---|
| Seek and screenshot (the usual method) | Playhead jumps to a timestamp | Yes | No |
| Play and capture | Frames as they are presented | No, but frames can be dropped | Only if it counts them |
| Demux and decode (this tool, MP4 family) | Every stored frame, in order | No | Yes — counts are shown |
Which format to choose
The frames come out of the decoder as exact pixels. What happens next is your choice:
- PNG stores those pixels without further loss. Use it whenever the frames will be measured, compared, edited or pushed through another tool. It is also the largest — a thousand frames from a 1080p clip is a big folder.
- JPG is the practical choice for browsing, reference and contact sheets. At 85% the difference is hard to see and the folder is a fraction of the size.
- WebP sits between the two and is the best option if the frames are going onto a web page.
Remember that the video was already compressed before you started. No still taken from it is pristine; PNG simply avoids adding a second round of loss on top of the first.
What about WebM and MKV?
Those containers are read a different way — by playing the video and capturing each frame as it is presented. It is slower, it runs in real time, and if your machine is busy the browser will drop frames. The tool does not pretend otherwise: it says which path it used, and on the playback path it reports how many frames the browser dropped so you know whether the sequence is complete.
Size, speed and limits
There is no upload, so there is no file size cap to argue with. What limits you is memory, and the thing that consumes it is the number of frames you keep rather than the length of the video — which is why there is a default ceiling on extracted frames that you can raise. Decoding does not run in real time: a two minute clip does not take two minutes.
If the folder of frames turns out to be too large to send anywhere, that is a separate problem with its own trap — a 500 KB limit does not always mean 500 KB. The target size compressor takes the whole batch.
If you wanted a clip rather than stills
Extracting frames is the right move when you need individual pictures: a thumbnail, a moment to compare, a sequence to step through. If what you actually want is a short animated version of the clip, video to GIF goes straight there and can fit a size limit such as Discord's. To pull the sound out instead, use extract audio from video, which copies the audio without re-encoding it.