Free Video Frame Extractor & Video Frame Grabber
Extract high-resolution still frames from MP4, MOV, WebM, MKV, AVI, or M4V files locally. PTS-aligned frame capture with no server upload and no watermarks.
Frame Extractor is a browser-based workbench using requestVideoFrameCallback for PTS-aligned frame capture. It supports H.264/VP9/AV1 natively, with HEVC 10-bit on supported browsers. For unsupported codecs, it suggests ffmpeg -i input.mkv -c copy output.mp4. Features include a +/-5 frame filmstrip loupe with Laplacian variance scoring, +/-1 frame nudging, and 1-click ffmpeg hash-check commands.
Drop a video file, or browse
MP4 · MOV (ProRes/HEVC) · WebM · MKV · AVI · M4V (No Server Upload)
Exact PTS Frame-Lock (WebCodecs / requestVideoFrameCallback) · Zero Skipped Frames across CFR & VFR · No server upload (GPU/RAM-bound)
Workbench Controls & Pro Modes Preview (Single Frame · Batch ZIP · Contact Sheet · FFmpeg CLI)Specs▾
ffmpeg -i "input.mp4" -vf "fps=1/1" -q:v 1 frame_%04d.pngHTMLVideoElement.requestVideoFrameCallback((now, metadata) => ...) verifying metadata.mediaTime and metadata.presentedFrames + seeked (readyState >= 2) with CFR showinfo-aligned PTS capture and VFR stepped sampling (framemd5-verifiable) · Blink-Catcher +/-5 Laplacian loupe · First & Last Frame Boundary Math: t = 0.000s & duration - 1/fps · Math.max(0, duration - (1 / fps)) · Export Contact Sheet: 3/4/5 Columns (3 / 4 / 5 columns) grid + MM:SS.mmm Timestamp watermark toggle + single composite PNG/JPEG download.Micro-Moment Blink & Motion Picker (±5 Frame Burst Filmstrip Loupe · Laplacian Sharpness Auto-Ranker)Specs▾
Micro-Moment Blink & Motion Picker: ±5 Frame Burst Filmstrip Loupe (-5f to +5f) + Real-Time Laplacian Sharpness Scoring (★ Sharpest in Burst · Sharpest / Least Motion Blur)
Hotkeys: ←/→ ±1 frame · Shift+←/→ ±5 frames · [ / ] ±10ms · Space Play/Pause · Auto-ranks 11 surrounding frames by 2D Laplacian variance to eliminate motion blur & closed eyes.
Verified Engineering Bounds: Browser WebCodecs / rVFC vs. FFmpeg showinfo & SHA-256 Bitstream AuditSpecs▾
Verified Engineering Bounds: Browser WebCodecs / rVFC vs. FFmpeg showinfo
PTS Frame-Accurate Within Browser Demuxer BoundsActive Frame Fingerprint: PTS 00:00.000 · SMPTE 00:00:00:00 · Frame #0 · Checksum sha256:e3b0c442
ffmpeg -ss 00:00.000 -i "input.mp4" -frames:v 1 -f framemd5 -Stream PTS Audit: ffprobe -v error -select_streams v:0 -show_entries frame=n,pkt_pts_time,pict_type -of csv| Benchmark Workload | Browser rVFC / WebCodecs Result | FFmpeg / ffprobe Reference |
|---|---|---|
| 1080p 29.97fps CFR (1800/1800 frames matched) | 100% timestamp parity (0 dropped or duplicated frames) via HTMLVideoElement.requestVideoFrameCallback((now, metadata) => ...) verifying metadata.mediaTime & metadata.presentedFrames. | ffmpeg -i input.mp4 -vf showinfo -f null - |
| iPhone 15 Pro 4K 60fps VFR (PTS delta <= 0.001s) | Tracks real per-frame metadata.mediaTime deltas rather than fixed 1/fps stepping; exports full per-frame verification-manifest.json with SHA-256 & SMPTE timecode. | ffprobe -v error -select_streams v:0 -show_entries frame=n,pkt_pts_time,pict_type -of csv |
| 4K 60fps 3.2GB Local MP4 (0 MB upload / < 420MB RAM) | Zero server upload size cap via local disk URL.createObjectURL(file). 4K 60fps uses ~400–650 MB tab RAM; 8K (7680×4320) uses hardware GPU decode in Chromium/Safari. | ffmpeg -ss 00:00.000 -i "input.mp4" -frames:v 1 -f framemd5 - |
Live Browser Hardware Codec Compatibility Matrix & 0.5-Second Lossless Container RemuxSpecs▾
Live Browser Hardware Codec Compatibility Matrix & 0.5-Second Lossless Container Remux
Probed via HTMLVideoElement.canPlayType / navigator.mediaCapabilities · Instant zero-reencode MP4 faststart remux for MKV, AVI & HEVC containers.
ffmpeg -i "input.mkv" -c copy -movflags +faststart "output.mp4"Wraps MKV / AVI / HEVC into browser-native MP4 in <1s with 100% identical bitstream hashesHow to extract frames from video locally in your browser
overviewFrame Extractor is a client-side tool for capturing full-resolution stills from MP4, MOV, WebM, MKV, and AVI files. It avoids server uploads by using local Blob streaming, which supports large 4K files within browser memory limits. For CFR footage, the tool aligns requestVideoFrameCallback metadata with ffmpeg -vf showinfo tests. For VFR files, it uses seeked and stepped sampling. Users can verify frame accuracy by copying the provided ffmpeg -ss <PTS> command for independent framemd5 hash checks. The interface includes a +/-5 frame filmstrip loupe that displays Laplacian variance scores, allowing you to nudge by +/-1 frame or 10ms to find the sharpest moment. Supported codecs include H.264, VP9, and AV1 natively, with HEVC 10-bit support on Safari, macOS Chromium, and Windows with the HEVC extension. If a file format is unsupported, the tool provides the necessary ffmpeg command to re-containerize the stream. This approach ensures privacy and precision for video editors and QA engineers. For blink and micro-timing moments, the +/-5 Frame Blink-Catcher Filmstrip Loupe scores each neighboring still with Laplacian variance and lets you nudge by +/-10 ms or +/-1 frame.
Video frame extraction engineering
technical capabilitiesLocal client-side decoding
Frames decode locally using URL.createObjectURL and browser GPU pipelines. No data leaves your device. RAM usage for 1080p/4K60 is 400-650MB. 8K requires desktop discrete GPU or Apple Silicon.
Codec and container support
Supports H.264, VP9, AV1. HEVC 10-bit requires Safari, macOS Chrome/Edge, or Windows HEVC extension. For unsupported MKV/AVI, use ffmpeg -i input.mkv -c copy output.mp4. Unsupported MKV/AVI or missing HEVC decoders trigger HTMLVideoElement.canPlayType and MediaCapabilities.decodingInfo prechecks, plus a copyable `ffmpeg -i input.mkv -c copy output.mp4` remux tip.
Frame-lock and verification
CFR seeks wait for seeked plus requestVideoFrameCallback (metadata.mediaTime and presentedFrames) and match ffmpeg -vf showinfo on 23.976/24/25/29.97/30/60fps clips. VFR (iPhone/OBS) uses stepped sampling; copy `ffmpeg -ss <PTS> -i input.mp4 -frames:v 1 -f framemd5 -` to hash-check any still. Blink-Catcher Filmstrip Loupe scores +/-5 neighbors with Laplacian variance and nudges by +/-10 ms or +/-1 frame.
Blink-Catcher Filmstrip Loupe
View +/-5 frames with Laplacian variance sharpness scores. Nudge by +/-10ms or +/-1 frame to isolate exact motion-blur or blink moments.
How to extract frames in 3 steps
three steps- S01
Drop a local video file
Drag any MP4, MOV, WebM, MKV, AVI, or M4V file into the dropzone. Files open from disk via local Blob streaming with no server upload.
- S02
Step frame by frame or pick a batch interval
Use the +/-5 frame filmstrip loupe to find the exact moment. Nudge by +/-1 frame or 10ms. Use Laplacian variance scores to identify sharp frames.
- S03
Export stills, ZIP archive, or Contact Sheet
Save individual PNG, JPEG, or WebP stills, or download a numbered ZIP archive. Use the generated ffmpeg command for independent verification.
How editors, AI creators, and engineers use Frame Extractor
production notes"Importing a 4.6 GB 10-bit HEVC clip into Premiere just to export three clean thumbnail options takes longer than setting up the lights. I drop the raw MP4 here, tap the period key to step past the motion blur on my hand gesture, and grab a 3840x2160 PNG in about ten seconds."
"Whenever I dragged a video slider to the end in QuickTime to extend a Kling shot, the exported frame was either black or had a slight gamma shift that caused a visible seam on frame one of the next generation. The Grab First and Last Frame button pulls duration minus 1/fps cleanly every time."
"For Postshot 3DGS walks, one blurry turn ruins the point cloud alignment. I sample 120 fixed frames from my iPhone MOV clip right in Chrome, uncheck the six or seven frames where my gimbal dipped, and download the numbered ZIP straight into my reconstruction folder."
"Our claims team cannot upload client dashcam footage to random cloud converter websites because of privacy compliance. Because this runs locally in the browser tab, adjusters step frame by frame across a 60fps intersection clip until the license plate is readable and export a timestamped contact sheet."
Frequently asked questions
common questionsQ01Does this online video frame extractor upload my video to a server?
+
Does this online video frame extractor upload my video to a server?
No. Frame Extractor runs client-side using HTML5 video and WebCodecs. Your file never leaves your device, ensuring privacy for confidential footage.
Q02What is the difference between a video frame grabber and taking a screen capture?
+
What is the difference between a video frame grabber and taking a screen capture?
Screen captures record your display buffer, including UI elements and color distortion. This tool reads the decoded video stream at native pixel dimensions with deterministic PTS frame-lock for 1:1 accuracy.
Q03Which video input formats and image output formats are supported?
+
Which video input formats and image output formats are supported?
Supports MP4, MOV (including 10-bit HEVC and ProRes), WebM, MKV, and AVI. Codecs include H.264, H.265, VP9, and AV1. Export as PNG, JPEG, or WebP.
Q04Can I extract a single exact frame or batch extract frames at intervals?
+
Can I extract a single exact frame or batch extract frames at intervals?
Yes. Use the +/-5 frame filmstrip loupe with Laplacian variance scores and +/-1 frame nudging for precision. Batch mode samples at defined intervals into a ZIP archive.
Q05What is the maximum video file size and resolution supported?
+
What is the maximum video file size and resolution supported?
There is no server upload limit. Local Blob streaming supports multi-gigabyte 4K/60fps files. 8K requires desktop discrete GPU or Apple Silicon. Mobile browsers typically cap at 4K.
Q06How do you ensure frame accuracy for CFR and VFR footage?
+
How do you ensure frame accuracy for CFR and VFR footage?
For CFR, we align requestVideoFrameCallback metadata.mediaTime with ffmpeg -vf showinfo. For VFR, we use seeked and stepped sampling. We provide a copyable ffmpeg -ss <PTS> command for independent hash checks.
Q07Is there a private video frame grabber that does not upload files?
+
Is there a private video frame grabber that does not upload files?
Yes. This tool is 100% client-side. It uses local Blob URLs and hardware-accelerated decoding to keep your footage on your device.
Got a feature request? /feedback
Popular Video Frame Extraction Tools
Specialized WorkflowsMP4 Frame Extractor
Extract stills from .mp4 files with PTS-aligned accuracy.
MOV Frame Extractor
Grab frames from .mov files without server upload.
4K Video Frame Extractor
Pull 8.3-megapixel stills from 4K/60fps footage.
Video Contact Sheet Maker
Generate timestamped storyboard grids in one click.
Frame-by-Frame Video Viewer
Step through video with a +/-5 frame filmstrip loupe.
4K Video Screenshot Grabber
Take clean 1:1 native-resolution screenshots.
First & Last Frame Extractor
Extract start and end frames for AI training.
AI Video Frame Extractor
Curate sharp keyframes for AI model training.
Video to PNG Converter
Capture uncompressed frames for VFX plates.
Video to JPG Converter
Convert video clips into lightweight JPEG sequences.
Extract Frames Every Second
Automated sampling into a numbered ZIP archive.
Frame-Lock Verification Pipeline: HTMLVideoElement.requestVideoFrameCallback((now, metadata) => ...) verifying metadata.mediaTime and metadata.presentedFrames + seeked (readyState >= 2) via MDN HTMLVideoElement and HTMLCanvasElement.toBlob() - First & Last Frame Boundary Math: Grab First & Last Frame locks onto t = 0.000s (metadata.presentedFrames >= 1) and Math.max(0, duration - (1 / fps)). Contact Sheet Specification: Export Contact Sheet composites selected frames into a 3 / 4 / 5 columns grid with optional MM:SS.mmm timestamp watermarks and direct PNG/JPEG download.