Why "just pause and screenshot" fails
The obvious approach is to pause playback and press the system screenshot key. It works, right up until the moment the result matters.
A screen capture records what the display showed, not what the file contains. That means the video's real resolution has been scaled to the size of your player window, the colours have gone through the display pipeline, and any overlay — subtitles, the player's own controls, a mouse cursor — has been baked into the image. Capture a 4K clip playing in a 900-pixel-wide window and you have permanently thrown away three quarters of the detail.
There is also a precision problem. Pausing lands you wherever the player happened to stop, which is usually not the frame you wanted. At 30 fps each frame is 33 milliseconds; at 60 fps, 17. No one hits a specific one of those by tapping the space bar.
Both methods below solve the same two problems: they save at the source resolution, and they let you move one frame at a time rather than guessing.
Method 1: VLC
VLC has two separate features here, and picking the wrong one is the usual reason people find it awkward.
Snapshot — for grabbing one frame
This is the one you want for a single still. Play the video, get near the moment, then:
- Windows / Linux:
Shift + S, or Video → Take Snapshot - macOS:
Cmd + Alt + S, or Video → Take Snapshot
The snapshot is written at the source resolution, not the window size — this is the key advantage over a screen capture. Set the destination and file type first, under Tools → Preferences → Video → Video snapshots, where you can choose the directory, the format (PNG or JPG), and the filename prefix. Leave the format on PNG if the still is going anywhere near an editor.
To land on the right frame, step rather than scrub. The E key advances exactly one frame while paused. VLC has no keyboard shortcut for stepping backwards — if you overshoot, you have to seek back a second and step forward again, which is the single most irritating part of the workflow.
Scene filter — for capturing many frames
Different feature, different purpose: it writes an image automatically during playback. The full path is Tools → Preferences, then switch Show settings from "Simple" to All at the bottom left — the filter is invisible in the simple view — then Video → Filters → Scene filter.
The settings that matter:
- Image format —
pngorjpg. - Directory path prefix — where files land. If this path does not exist or is not writable, extraction fails silently with no error at all. This is the number one reason people report "the scene filter does nothing".
- Recording ratio — save one image every N decoded frames. On a 30 fps source, a ratio of 30 gives roughly one image per second; a ratio of 1 saves every single frame and will fill a disk quickly.
Then — and this is the step everyone misses — go back to Video → Filters in the same "All" view and tick Scene video filter in the list. Configuring the filter does not enable it. Save, restart VLC, and play the file; frames are written only while video is actually playing.
Method 2: In a browser
The frame-by-frame tool is built around the single-frame case, so the stepping problem is handled directly.
- Drop the video in. Nothing is uploaded; the file is read from disk into the page.
- Set Source FPS to match your footage. This one field decides how far a single step moves. It defaults to 30; if your clip is 24, 25, 50 or 60 fps, change it before stepping. The interface shows the resulting step size — at 30 fps,
Step 0.0333s— so you can confirm it looks right. - Seek roughly, then step precisely. Use the player scrubber to get within a second, then Previous Frame / Next Frame to walk to the exact one. Stepping works in both directions, which is the practical difference from VLC's forward-only
E. - Check the timestamp readout. It shows the current position to the millisecond, so you can record exactly which frame you took — useful when the still is evidence for a bug report or a review note.
- Click Save Current Frame. The image is written at the video's native resolution, with no player chrome and no overlays.
Finding the source frame rate: in VLC it is under Tools → Codec Information. On macOS, Get Info in Finder shows it. Failing that, step forward ten times and watch the timestamp — if it advances by 0.333s total you are at 30 fps, 0.4s means 25 fps, 0.167s means 60.
Three things that go wrong
1. The saved frame is not the one you were looking at
Common with VLC snapshots on some builds and hardware-decoding setups: the still is written from the decoder's current output, which can be a frame or two ahead of what the display is showing. On a static shot nobody notices. On fast motion — a ball, a wheel, a hand — the difference is the whole point of the capture.
The workaround in VLC is to pause first, step with E to the frame you want, and only then take the snapshot; a paused decoder and a paused display agree. In the browser tool the saved frame is read from the same paused video element you are looking at, so what you see is what is written.
2. Stepping produces the same image twice
Almost always a frame-rate mismatch. If Source FPS is set to 60 but the clip is really 30, each "step" advances half a frame — so two consecutive steps land inside the same frame and the picture does not change. Symptom: the timestamp moves but the image does not.
The reverse mistake is worse because it is silent: set 30 on a 60 fps clip and every step skips a frame. Nothing looks broken, you just never see half the footage — including, quite possibly, the frame you were hunting for. Set the value correctly before you start stepping.
3. The output is smaller than the video
If a saved frame comes out at 1280×720 from a 4K source, you almost certainly took a screen capture rather than a real frame export. Check the file's pixel dimensions against the source: Tools → Codec Information in VLC gives the true resolution.
VLC's snapshot has a related setting worth knowing about — under Preferences → Video → Video snapshots, a non-zero Video snapshot width forces a resize. Leave it at 0 to preserve the source resolution. The browser tool always writes at native resolution, with no equivalent setting to get wrong.
When VLC is the better choice
- The video is already open in VLC. If you are watching something and want a still,
Shift + Sis faster than anything involving another application. - Codecs a browser will not decode. VLC plays essentially everything — ProRes, MKV with unusual audio, DVD structures, broken files. If the browser cannot play it, the browser cannot extract from it.
- Streams and network sources. VLC can snapshot from an RTSP camera feed or a network stream; a local-file tool cannot.
- Long unattended captures. The scene filter will happily write frames through a two-hour recording with no memory ceiling. A browser tab holds frames in RAM and will not.
The browser tool is the better fit when you need to step backwards as well as forwards, when you want the timestamp recorded alongside the still, when the footage is confidential enough that you would rather it never left the machine, and when you would rather not restart an application to change a setting.
Quick reference
| Task | VLC | Browser tool |
|---|---|---|
| Save one frame | Shift + S (Cmd + Alt + S on Mac) |
Save Current Frame |
| Step forward one frame | E |
Next Frame |
| Step backward one frame | Not available | Previous Frame |
| See the exact timestamp | Playback time, seconds only | Millisecond readout |
| Choose output folder | Preferences → Video snapshots | Browser download location |
| Capture many frames automatically | Scene filter + recording ratio | Interval extraction |
| Setup before first use | Filter config + enable + restart | None |
| Network streams and cameras | Supported | Local files only |
| Unusual codecs | Almost anything | Only what the browser decodes |
| Hours-long unattended capture | Fine | Limited by tab memory |
For a single frame the whole job comes down to two things: get the frame rate right so stepping means what you think it means, and save from the decoder rather than the screen. Everything else is a matter of which window you happen to have open.