To extract a frame from a video, enter a timestamp, let the browser decode the clip locally, and save the resulting still at its native dimensions as a PNG — that single sentence describes the entire flow that Video Frame Extractor runs in your current tab without uploading the source file. Readers searching for "how to extract all frames from a video" usually want one of three things: a single clean still for a thumbnail or slide, a few reference images at meaningful timestamps, or every single frame at full size for analysis or motion study. Browser-based extraction handles the first two cases cleanly because the browser already knows how to decode MP4, WebM, MOV, M4V, and Ogg containers and can paint a frame onto a canvas on demand. Full-per-clip extraction — every source frame across the timeline — is a different problem that usually needs a desktop tool with frame-number access, batch output, and codec control. This article focuses on the browser path: how to pull one PNG at a precise time you choose, what the tool will and will not do, and when to switch to a dedicated desktop video frame extractor for the heavier work.

What Video Frame Extractor Does and Does Not Do
Video Frame Extractor takes one local video file you choose, seeks to a time you type, draws the decoded frame onto a same-size canvas, and exposes that canvas as a downloadable PNG inside your current tab. Nothing leaves your computer: the browser reads the file, the HTMLMediaElement handles the seek, the canvas drawImage step copies the pixel data, and the PNG is encoded in memory and offered as a local download URL.
What the tool does:
- Decodes one supported container locally (MP4, WebM, MOV, M4V, Ogg)
- Seeks to any time between 0 and the reported duration, including fractional seconds
- Produces a PNG at the decoded frame's native pixel dimensions
- Names the output file using the time you entered
- Reports decode, seek, canvas, and encoding errors instead of writing an empty file
What the tool does not do:
- Batch or bulk frame extraction across an entire timeline
- Resize, crop, sharpen, interpolate, or apply filters
- Guarantee frame-accurate numbered source frames
- Convert the output to JPEG, WebP, TIFF, or any other format
- Process HDR or color-managed workflows reliably
- Accept files outside the shared video safety policy limits
If you only need one still — or a handful at different times — Video Frame Extractor is the right size of solution. If you need every frame at native resolution with timestamped filenames, you will need a different tool, and the table later in this article maps those scenarios.
How to Extract a Frame from a Video
The whole job runs in three steps inside Video Frame Extractor. There is no account, no upload, and no re-encode of the source clip.
- Choose one supported local video and wait for the duration and preview to load. Pick an MP4, WebM, MOV, M4V, or Ogg file from your computer. The browser reads metadata from the file, so the duration shown is the clip's own reported length, not a guess. If the duration does not appear, the container opened but the codec inside did not, and you will need to remux or transcode the file first.
- Enter a frame time between zero and the displayed duration, including decimals when needed. For example, type 12.5 if you want the still at twelve and a half seconds, or 0.04167 if you are targeting the frame closest to one twenty-fourth of a second on a 24 fps clip. The time field accepts fractional values from zero through the duration; values outside that range are rejected before the seek step runs.
- Select Extract PNG frame, verify the still, and download the local PNG. The browser seeks the video element to your requested time, waits for the seek to finish, draws the decoded frame onto a canvas at the same pixel dimensions, encodes a PNG, and offers a download button. Open the PNG to confirm the content matches what you expected, and rename or move it like any other file.
If you want a second still, change the time field and run the extract step again. Each extraction is independent, so you can build a small set of PNG references without leaving the page. The output filename includes the requested time, which makes it easy to keep multiple stills straight when you are working through a sequence.
Supported Containers, Codecs, and File Limits
The tool accepts five container formats, but a matching extension does not guarantee a working file. MP4, MOV, and M4V files can carry a wide range of audio and video codecs, and browsers only support a subset — typically H.264 and AAC for the MP4 family, plus VP9 and AV1 in some browsers. WebM and Ogg are more constrained by design and usually open cleanly. If the browser cannot decode the codec inside your file, the duration will not load and the seek step will fail before any PNG is produced.
The shared safety policy caps input files so the browser can finish the decode, seek, draw, and encode inside a single tab without freezing:
| Limit | Maximum |
|---|---|
| File size | 500 MiB |
| Duration | 5 minutes |
| Width per side | 4096 pixels |
| Output frame area | 3840 × 2160 pixels |
Any file that exceeds those numbers is rejected before decoding starts. The PNG you receive matches the decoded video frame's pixel dimensions, and transparency is preserved only if the browser's decoded video frame actually carries an alpha channel. Most MP4 and WebM clips do not, so expect a standard RGB PNG unless you are working with footage that explicitly includes alpha.
Why Browser Seeking Is Not Frame-Accurate
The biggest surprise for first-time users is that the time you type is a position on the media timeline, not a guarantee of a specific source frame. Browsers use keyframe-based seeking: when you ask for 14.7 seconds on a clip that has a keyframe every two seconds, the decoder may decode the keyframe at 14.0 seconds and then play forward to 14.7, or it may stop at the nearest decoded sample. The variables include keyframe distance, variable frame rate, edit lists, timestamp rounding, and codec-specific behavior, all of which sit outside the reach of a tab-level tool. The MDN HTMLMediaElement currentTime reference describes how the property works in practice.
This matters for three jobs and not for the rest:
- Thumbnail and reference stills: a nearby decoded frame is fine
- Social posts, slides, and blog images: a nearby decoded frame is fine
- Film and broadcast editorial work, scientific frame analysis, or any task that needs "the exact 583rd source frame": not fine
If you need frame numbers and exactness, a desktop tool that decodes packet by packet is the correct choice. Video Frame Extractor records and writes the requested time into the output filename so you know what position you asked for, but it does not inspect packet timestamps to identify a numbered source frame. For a deeper dive on the same workflow with different examples, the guide Capture a Video Frame as a PNG: Exact Time, Full Size walks through related use cases.
When You Need a Different Tool
The table below maps common scenarios to the right approach. "Browser tool" refers to Video Frame Extractor unless noted, and "desktop tool" means a dedicated frame extractor that decodes the full timeline and writes one image per source frame.
| Scenario | Right approach |
|---|---|
| One still for a thumbnail, slide, or blog post | Video Frame Extractor |
| A handful of reference PNGs at known times | Video Frame Extractor, run repeatedly |
| Every frame at native resolution, numbered | Desktop tool with batch extraction |
| Frame-accurate editorial work (broadcast, film) | Desktop tool with packet-level decode |
| HDR or color-managed output | Desktop tool with an HDR pipeline |
| Files larger than 500 MiB or longer than five minutes | Desktop tool |
| Clips whose codec the browser does not support | Transcode or remux first, then retry |
| A short trim or cut of the clip itself | Video Trimmer |
For a quick reference PNG from a short clip you control, the browser path is the fastest option because there is no upload step, no queue, and no waiting on a server. The result is a single PNG at the decoded dimensions, named for the time you requested, sitting in your downloads folder.
Privacy and Local Processing
Every stage of the pipeline runs in your browser tab. Video Frame Extractor does not upload the source clip, does not upload the PNG, does not call a remote encoder, and does not store either file on a server. The HTMLMediaElement reads the local file, the canvas encodes the PNG, and a revocable object URL exposes the download to your browser's download manager. When you change inputs or navigate away, the object URLs are invalidated so stale PNGs do not leak across sessions.
This local-only behavior is why the tool can be safe to use on internal clips, rough cuts, and confidential reference material without an upload step — the file never leaves the machine. The same pattern applies to the audio track through Video to Audio Converter and to short edits through Video Trimmer, so you can pull a still, trim the clip, and lift the audio using three separate local passes without any of your footage touching a remote server.