This guide explains how to extract frames from video on every common device. Every computer and phone can get a still image out of a video, but the built-in methods differ a lot in quality. Some save the real frame at full resolution; others only take a screenshot of the player, which is limited to the size of your screen. Below is what works on each device, with the limits of each method. Menu names were checked against the vendors’ own help pages on 25 October 2026; apps change, so if a menu has moved, look for the same words nearby.
The quickest way to extract frames from video on any device
- Open the video frame extractor in any current browser.
- Choose your video file. It is read on your device and not uploaded.
- Step to the frame you want with the slider or the arrow keys, or pick a mode such as one frame every N seconds.
- Download the frame as PNG or JPG, or all selected frames as a ZIP.
That works the same on Windows, Mac, Linux, Android and iPhone, because it runs in the browser. The sections below cover the methods built into each system and the free desktop tools.
Windows
With VLC (free, also for Mac and Linux): open the video, pause on the frame and choose Video › Take Snapshot, or press Shift + S. VLC saves the frame at the video’s resolution as a PNG in your Pictures folder. Press E to step forward one frame at a time (VideoLAN hotkey list).
With a screenshot: pause the video in any player, press Windows + Shift + S and drag over the picture. Quick, but the image is only as big as the player window and may include the player controls.
Limits: neither method saves a series of frames. For that, use ffmpeg (below) or an online extractor.
Mac
With QuickTime Player: open the video, then press ← or → to stop playback and move one frame back or forward (Apple lists these shortcuts in the QuickTime Player User Guide). When the frame is on screen, take a screenshot of the window with Shift + Command + 4, then press Space and click the window.
With VLC: as on Windows, Video › Take Snapshot; the shortcut on a Mac is Command + Option + S. This saves the full-resolution frame.
Limits: a screenshot is limited by the window size, so a 4K video in a small window gives a small image. Play the video at actual size (Command + 1 in QuickTime) or use VLC when resolution matters.
iPhone
Pause the video in Photos and take a screenshot: press the side button and the volume-up button together (on iPhones with a Home button, the side button and the Home button). Hide the playback controls first by tapping the video.
Limits: the screenshot has the screen’s resolution and shape, not the video’s, and it is easy to land a frame early or late. To save the real frame, open the video in Safari on this site; files stay on the phone.
Android
With Google Photos: open the video, tap Edit, move to the frame you want and tap Export frame (Google Photos Help, “Edit your videos with Google Photos”).
Limits: the button is in the video editor, which some phones replace with the manufacturer’s own gallery; positioning to an exact frame is fiddly on a touch screen. A screenshot (usually Power + Volume down) works everywhere but has the same resolution limits as on iPhone.
VLC: save many frames automatically
VLC can also write frames continuously using its scene filter, described on the VideoLAN wiki (“How to create a thumbnail from a video”). From the command line:
vlc input.mp4 --video-filter=scene --vout=dummy --scene-format=png --scene-ratio=30 --scene-prefix=frame --scene-path=/path/to/folder vlc://quitThis saves one frame out of every 30 (one per second for a 30 fps video). VLC plays through the file to do this, which is slow for long videos, and the setting is per frame count rather than per second. ffmpeg is usually the better choice for this job.
ffmpeg: precise and scriptable
ffmpeg is a free command-line program for Windows, Mac and Linux, and the most reliable way to extract many frames. Pick what you want in the builder below and copy the command; the default values match the examples underneath.
ffmpeg command builder
ffmpeg -i input.mp4 -fps_mode passthrough input_%05d.png| Goal | Command |
|---|---|
| Every frame | ffmpeg -i input.mp4 -fps_mode passthrough input_%05d.png |
| One frame per second | ffmpeg -i input.mp4 -vf "fps=1" input_%04d.png |
| One frame at 4.1 s | ffmpeg -ss 4.1 -i input.mp4 -frames:v 1 input_at_4_1s.png |
| Last frame | ffmpeg -sseof -3 -i input.mp4 -update 1 input_last_frame.png |
-fps_mode passthrough writes each decoded frame once, without duplicating or dropping frames to fit a constant rate, which matters for phone videos with a variable frame rate. In the last-frame command, ffmpeg decodes the final three seconds and keeps overwriting the same file, so the file left at the end is the last frame.
When to use an online tool instead
If you are still deciding how to extract frames from video, the choice is simple. Use an online tool when you do not want to install anything, need the exact frame at full resolution on a phone, or want frames at regular intervals without learning ffmpeg. This site runs in the browser and does not upload your video:
- the video frame extractor saves one frame, every N seconds or every frame as JPG, PNG or WebP;
- the last frame extractor gets the true final frame, or the first frame;
- the frame by frame video player steps through a clip one frame at a time and saves any frame.
Use ffmpeg for formats browsers cannot read (AVI, some MKV and professional codecs), for very large batches, or when you need to script the job.
Example results
We ran the commands above with ffmpeg 7.1 on our sample video (10 s, 30 fps, 300 frames):
| Command | Files written |
|---|---|
| Every frame | 300 |
| One frame per second | 10 |
| One frame at 4.1 s | 1 |
| Last frame | 1 |
The same counts are produced in the browser by the video frame extractor with Every frame and One frame every 1 second.