Why this matters
Extracting a single frame from a video seems simple, but achieving frame-accurate results is surprisingly difficult with most tools. Screenshot utilities capture your entire screen including playback controls, and basic video editors bury the export-single-frame feature under multiple menus. When you need a clean still at a specific moment — a presenter's expression, a product shot from a video review, or a frame for a thumbnail — the friction adds up quickly.
The technical challenge is that video files use keyframes and predictive compression, so seeking to an arbitrary timestamp does not always land on the exact frame you see on screen. Browsers handle this with varying precision depending on the codec and container format. This tool works with the browser's native video element and canvas drawing to get as close to frame-accurate as the browser allows, with single-frame step buttons for fine adjustments.
The output quality matches the video's native resolution — a 1080p video produces 1920 by 1080 pixel stills, a 4K video produces 3840 by 2160 pixel stills. You choose between PNG for lossless quality (ideal for frames containing text or UI elements) and JPG for smaller file sizes (ideal for photographic content). Each captured frame appears in a grid with its timestamp for easy identification.
Visual demo. The real tool processes your actual file locally in the browser.
Capture options at a glance
| Option | PNG | JPG |
|---|---|---|
| Quality | Lossless | Lossy, smaller file |
| Best for | Text, UI, graphics | Photographic frames |
| File size | Larger | 5-10x smaller |
| Resolution | Video native | Video native |
| Frame stepping | Plus/minus 1 frame (~30 fps) | Plus/minus 1 frame (~30 fps) |
How to use it
Drop a video file (MP4, WebM, or MOV) onto the upload zone.
Use the timeline scrubber or the plus/minus frame buttons to navigate to the exact moment you want.
Select PNG or JPG as your preferred output format.
Click 'Capture current frame' — the still appears in the grid below with its timestamp.
Click any captured frame in the grid to download it individually.
Testing your result
Load a short video with visible on-screen text — a news broadcast or a tutorial with subtitles. Scrub to a frame where the text is sharp, capture it as PNG, and open the download in an image viewer. Zoom in and verify that the text edges are clean and pixel-sharp with no compression artifacts. Then capture the same frame as JPG and compare the file sizes; JPG should be significantly smaller.
Test the frame stepping by capturing a frame, stepping forward one frame, capturing again, and comparing the two images pixel by pixel in an editor. They should differ, confirming that the step buttons actually advance by one frame rather than by a larger interval. Also test with a DRM-protected video to confirm you get a black frame or an error, as expected.
Common mistakes
Trying to capture frames from a DRM-protected streaming video, which taints the canvas and produces black output.
Using JPG for frames that contain text or fine UI elements, where PNG's lossless quality makes a visible difference.
Expecting perfect frame accuracy on every video; the actual precision depends on the browser's codec support and the video's keyframe spacing.
Not pausing the video before capturing, which can result in a frame slightly different from what you see on screen.
Edge cases and options
The single-frame step buttons assume a frame rate of approximately 30 fps. If your video is 24 fps (common for film) or 60 fps (common for gaming content), each step will be slightly less or more than one true frame. The scrubber still provides precise timestamp-based navigation, so you can always drag to the exact moment visually and then capture.
Batch capture is not yet supported — each frame must be captured individually. However, the grid stores all captured frames during your session, so you can capture as many as you need and download them one by one. Each frame in the grid shows its timestamp, making it easy to identify and select the right stills after a capture session.
Real-world use cases
A content creator extracting a high-quality thumbnail from a YouTube video by capturing the most engaging frame at full resolution.
A UX designer capturing a specific moment from a screen recording to include in a bug report or design review document.
A sports analyst grabbing still frames from game footage to create a tactical breakdown presentation with annotated images.
Frequently asked questions
Q: Is my video uploaded to any server?
A: No. The video loads and plays locally in your browser, and each frame is drawn to a canvas element on your machine. No data leaves your device.
Q: Should I choose PNG or JPG for my capture?
A: PNG is lossless and best for frames containing text, UI elements, or sharp graphics. JPG produces much smaller files and is fine for photographic content. Both capture at the video's full native resolution.
Q: Why is my captured frame completely black?
A: The video may be DRM-protected or served cross-origin without proper CORS headers, which taints the canvas and blocks pixel extraction. Use a video file you own and have downloaded locally.
Q: How precise is the frame stepping?
A: The plus and minus buttons advance by approximately one frame at 30 fps. True frame-accurate seeking depends on the browser, codec, and keyframe spacing. Use the scrubber for visual precision.
Q: What resolution are the captured images?
A: Each captured frame matches the video's native resolution, such as 1920x1080 for HD or 3840x2160 for 4K. The resolution is displayed on each frame's badge in the grid.
Q: Can I capture multiple frames in one batch?
A: Currently, frames are captured one at a time. Each appears in the grid with its timestamp for individual download. Batch export of all captured frames is planned for a future update.
Start using it now
Try the Video Frame Capture tool. See also Video to GIF, Screen Recorder, and Video Trimmer.