Free Online Video Screenshot Grabber (1:1 Native 4K & 8K Stills)

Take crystal-clear, uncompressed screenshots from MP4, MOV, WebM, MKV, AVI & M4V videos at 100% native pixel resolution, no player overlays, no display scaling blur, no upload.

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)

No video file handy? Test frame-stepping (#000–#149), First & Last Frame & Contact Sheet instantly:
Workbench Controls & Pro Modes Preview (Single Frame · Batch ZIP · Contact Sheet · FFmpeg CLI)▾
fps
MM:SS.mmm00:00.000Frame #0
Equivalent FFmpeg CLI Command
ffmpeg -ss 00:00:00.000 -i "input.mp4" -frames:v 1 -q:v 1 frame_0001.png
Frame-Lock Verification Pipeline: HTMLVideoElement.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)▾

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 Audit▾

Verified Engineering Bounds: Browser WebCodecs / rVFC vs. FFmpeg showinfo

PTS Frame-Accurate Within Browser Demuxer Bounds

Active Frame Fingerprint: PTS 00:00.000 · SMPTE 00:00:00:00 · Frame #0 · Checksum sha256:e3b0c442

Single-Frame Bitstream Digest: 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 WorkloadBrowser rVFC / WebCodecs ResultFFmpeg / 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 Remux▾

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.

H.264 (AVC1)
Hardware Native (SSR Verified)
HEVC (H.265 / hvc1)
Browser / OS Hardware Dependent
VP9 (WebM / MP4)
Hardware Native (SSR Verified)
AV1 (av01)
Hardware Native (SSR Verified)
Apple ProRes (.mov)
Safari Native / FFmpeg Remux
MKV / AVI containers
Chromium Demux / 0.5s Remux
0.5-Second Lossless Container Remux (No Re-encoding): ffmpeg -i "input.mkv" -c copy -movflags +faststart "output.mp4"Wraps MKV / AVI / HEVC into browser-native MP4 in <1s with 100% identical bitstream hashes

What is a video screenshot grabber and how does it capture 1:1 native-resolution stills without screen-capture loss?

The Frame Extractor Video Screenshot Grabber (https://frame-extractor.app/video-screenshot) is a free browser-native still capture tool that extracts full-resolution photographs directly from the decoded video bitstream rather than your monitor's display buffer. Powered by Frame-Exact Hardware-Accelerated Decoding (WebCodecs / requestVideoFrameCallback + Deterministic PTS Frame-Lock, Zero Frame Drops across CFR & VFR videos), it supports MP4, MOV (QuickTime/iPhone), WebM, MKV, AVI, and M4V containers across H.264/AVC, H.265/HEVC, VP9, AV1, and Apple ProRes with No Server Upload Size Limit (Zero-copy local Blob streaming supports multi-gigabyte 4K/8K raw footage). Clicking Grab Current Frame or Grab & Download draws the intrinsic videoWidth × videoHeight frame onto an offscreen canvas, bypassing OS window scaling, media player progress bars, and JPEG screenshot compression to deliver true 1080p, 4K (3840x2160), or 8K (7680×4320) PNG, JPG, and WebP stills.

Why OS Screen Captures Degrade Video Quality, And How Offscreen Canvas Solves It

When you pause a video in QuickTime, Windows Media Player, VLC, or iPhone Photos and press your operating system's screenshot shortcut, the OS captures the viewport rather than the video track. A 3840x2160 4K video playing inside a 1280×720 browser or laptop window loses 88% of its pixels immediately, while player controls, scrubber shadows, and display color-profile LUTs permanently bake into the image. By reading the intrinsic stream properties from HTMLVideoElement and serializing the frame via HTMLCanvasElement.toBlob(), our tool guarantees 1:1 pixel fidelity independent of your screen size.

Use the built-in -1 / +1 Frame Stepper to move past motion-blurred intermediate frames until you lock onto the sharpest keyframe, then export as lossless Video to PNG or high-efficiency Video to JPG. For drone and mirrorless camera recordings, pair this workflow with our 4K Video Frame Extractor or Video Contact Sheet Generator.

Native Video Bitstream Grab vs. OS / Player Screenshot Methods

Capture MethodOutput Resolution on 4K SourceUI Overlay / Chrome RiskFrame-Accurate PTS Lock
Frame Extractor (/video-screenshot)3840 × 2160 (1:1 Native 8.3 MP)Zero (Raw Video Buffer)Yes (-1/+1 Frame + rvFC Lock)
macOS Cmd+Shift+4 / Windows Snipping ToolWindow-scaled (e.g., 1440 × 810)High (Scrubber, play icon, rounded corners)No (Coarse pause timing)
iPhone / iPad iOS ScreenshotScreen-locked (~2556 × 1179)High (Status bar, home bar, HDR clipping)No (Touch scrubber drift)
CapCut / Web Editor Preview ExportLocked to Timeline Canvas (often 1080p)Low, but re-encoded proxy bufferTimeline-dependent

How to Take a High-Resolution Screenshot from Any Video

01

Open Your Video File

Drop any MP4, MOV, WebM, MKV, AVI, or M4V video into the dropzone. Check the intrinsic pixel dimensions in the viewfinder bar.

02

Align to the Sharpest Frame

Pause near your target moment and press , / . or click -1 Frame / +1 Frame to eliminate motion blur.

03

Click Grab & Download

Click Grab & Download for an instant 1-click native PNG/JPG still, or Grab Current Frame to queue multiple shots.

Real Production Workflows & Practitioner Notes

Film Criticism Substack · 2.39:1 Scope Stills

"Every time I used Cmd+Shift+4 on my MacBook, the screenshot had the QuickTime shadow border or downscaled the 4K Criterion stream to my retina window width. Clicking Grab & Download on `/video-screenshot` saves the raw 3840x2160 frame with zero player chrome."

Gideon Horowitz, Film Essayist
Dashcam License Plate Capture · Night 60fps MP4

"When a hit-and-run car passes at 40 mph, nine out of ten frames are smeared by motion blur. Stepping +1 Frame at a time let me find the single frame where the streetlamp lit the front plate cleanly and export an uncompressed PNG for the police report."

Rachel Kim, Commuter & Dashcam User

Video Screenshot Grabber FAQ

Is my video screenshot limited by my laptop or phone screen resolution?

No. Standard OS screenshots (Cmd+Shift+4 or Print Screen) only capture your monitor display buffer, downscaling a 4K (3840x2160) or 8K (7680×4320) video to your window size. Our Video Screenshot Grabber reads video.videoWidth and video.videoHeight directly onto an offscreen canvas so every screenshot is saved at 100% native source resolution.

Why does taking a screenshot in QuickTime, VLC, or iPhone Photos look blurry or washed out?

Media player screenshots include CSS/window scaling, playback progress bars, shadow gradients, and aggressive HDR-to-SDR display tone mapping. Frame Extractor captures the raw decoded video frame buffer via Frame-Exact Hardware-Accelerated Decoding (WebCodecs / requestVideoFrameCallback + Deterministic PTS Frame-Lock) with zero UI chrome.

Which video containers and codecs are supported for taking video screenshots?

You can grab native screenshots from MP4, MOV (QuickTime/iPhone), WebM, MKV, AVI, and M4V files encoded with H.264/AVC, H.265/HEVC, VP9, AV1, and Apple ProRes.

Should I export a video screenshot as PNG, JPEG, or WebP?

Choose PNG for 100% lossless, uncompressed pixel accuracy (ideal for YouTube thumbnails, print layouts, and VFX reference), JPEG (90-95% quality) for compact photography shares, or WebP for lightweight web publishing.

Is there a multi-GB (No Server Upload Size Limit) file size cap when grabbing screenshots from raw camera footage?

No. Frame Extractor has No Server Upload Size Limit (Zero-copy local Blob streaming supports multi-gigabyte 4K/8K raw footage). Your video file never leaves your device.

Can I grab multiple screenshots from different timestamps and download them together?

Yes. Step through the video with -1 Frame / +1 Frame and click Grab Current Frame at each timestamp you want to keep. Then use the gallery checkboxes to download selected screenshots as a ZIP or composite them into a Video Contact Sheet.

Deterministic Frame-Lock, Boundary Math & Contact Sheet Specifications

1. Frame-Lock Verification Pipeline: HTMLVideoElement.requestVideoFrameCallback((now, metadata) => ...) verifying metadata.mediaTime and metadata.presentedFrames + seeked (readyState >= 2), guaranteeing zero dropped or duplicated frames on both CFR and VFR clips.
2. First & Last Frame Boundary Math: Grab First & Last Frame automatically locks onto the first decoded frame (t = 0.000s, metadata.presentedFrames >= 1) and the last non-black frame (Math.max(0, duration - (1 / fps))), exporting both native-resolution stills in one click (PNG/JPEG/WebP).
3. Contact Sheet Specification: Export Contact Sheet composites selected frames into a single high-resolution storyboard image with configurable 3 / 4 / 5 columns grid layout, optional millisecond MM:SS.mmm timestamp watermarks, and direct PNG/JPEG download.

Popular Video Frame Extraction Tools

Specialized Workflows

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.