Free Online Frame by Frame Video Viewer & Stepper
Step forward and backward 1 frame at a time (-1 / +1 Frame or , / . keys) across 24, 25, 30, and 60 fps MP4, MOV, WebM, MKV & AVI videos with Exact PTS Frame-Lock.
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 -ss 00:00:00.000 -i "input.mp4" -frames:v 1 -q:v 1 frame_0001.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 hashesWhat is a frame by frame video viewer and how does exact PTS frame stepping work in a browser?
The Frame Extractor Frame by Frame Video Viewer (https://frame-extractor.app/frame-by-frame-video-viewer) is a precision browser playback and micro-step inspection tool engineered to step through video recordings one discrete frame at a time. Powered by Frame-Exact Hardware-Accelerated Decoding (WebCodecs / requestVideoFrameCallback + Deterministic PTS Frame-Lock, Zero Frame Drops across CFR & VFR videos), it calculates exact 1/fps intervals at 24, 25, 30, or 60 fps and locks onto each decoded presentation timestamp across MP4, MOV (QuickTime/iPhone), WebM, MKV, AVI, and M4V containers (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), animators, sports analysts, VFX artists, and QA engineers can scrub with -1 Frame / +1 Frame buttons or , / . keyboard shortcuts and grab 1:1 native-resolution PNG, JPG, or WebP stills instantaneously.
Why Standard Video Players Skip Frames, And How Exact PTS Frame-Lock Solves It
Most desktop and web media players are optimized for real-time audio-synced playback rather than forensic frame inspection. Dragging a standard timeline scrubber jumps between distant Intra-coded keyframes (I-frames), skipping dozens of intermediate P-frames and B-frames. By contrast, our viewer pauses playback and computes exact 1 / fps millisecond offsets on the HTMLVideoElement pipeline, verifying buffer readiness via requestVideoFrameCallback() so the hardware decoder reconstructs the complete Group of Pictures (GOP) up to your target frame.
Whether you are studying golf swing mechanics in 60fps iPhone MOV recordings, inspecting UI animation glitches in screen captures, or pulling a razor-sharp hero still with our Video Screenshot Grabber or 4K Video Frame Extractor, you get live MM:SS.mmm timecode telemetry, exact Frame #N indexing, and 1-click native capture.
Frame Rate Stepping Cadence & Time Delta Reference
| Frame Rate (FPS) | Step Delta (1 / FPS) | Primary Video Sources | Typical Inspection Use Case |
|---|---|---|---|
| 24 fps (Cinema) | 41.667 ms / frame | Narrative film, animation, Sora / Runway AI clips | 2D/3D animation timing, VFX plate study, cut verification |
| 25 fps (PAL Broadcast) | 40.000 ms / frame | European broadcast, DVB recordings, mirrorless PAL | Broadcast compliance, subtitle sync, editorial review |
| 30 fps (NTSC / Web) | 33.333 ms / frame | YouTube, smartphone video, OBS screen recordings | Thumbnail selection, UI bug reproduction, product demos |
| 60 fps (High Action) | 16.667 ms / frame | GoPro, DJI drones, iPhone 4K60, 60fps gameplay | Sports biomechanics, fast motion de-blurring, frame pacing |
How to Step Through a Video Frame by Frame Online
Drop Your Video File
Open any local MP4, MOV, WebM, MKV, AVI, or M4V video with zero server upload and no file size limit.
Select FPS & Step (-1 / +1)
Choose 24, 25, 30, or 60 fps, then click -1 Frame / +1 Frame or press , and . on your keyboard.
Grab Stills or Contact Sheet
Click Grab Current Frame on each key moment to build a sequence for ZIP download or Contact Sheet export.
Real Production Workflows & Practitioner Notes
"VLC's E key only steps forward, so if you pass the athlete's rear-foot block clearance by two frames you have to drag the slider back and start over. Having both -1 Frame and +1 Frame mapped to the comma and period keys makes measuring ground contact time instant."
"When studying impact frames and smears on twos and ones, variable framerate web rips usually skip frames in standard players. The PTS Frame-Lock here steps cleanly through every single drawing without doubling frames."
Frame by Frame Video Viewer FAQ
How does the -1 Frame and +1 Frame stepper guarantee exact frame navigation?
Standard web players use coarse keyframe seeking that skips predicted P-frames and B-frames. Our viewer calculates the exact 1/fps temporal delta (at 24, 25, 30, or 60 fps) and combines HTMLVideoElement seeked verification with requestVideoFrameCallback (Deterministic PTS Frame-Lock) so every step lands on an adjacent decoded frame.
What keyboard shortcuts are available for stepping through video frames?
When a video is loaded in the workbench, press the comma (,) or Left Arrow key to step backward 1 frame (-1 Frame), and press the period (.) or Right Arrow key to step forward 1 frame (+1 Frame), matching professional NLE editors and YouTube frame stepping.
Which video containers and codecs can I inspect frame by frame?
You can inspect MP4, MOV (QuickTime/iPhone), WebM, MKV, AVI, and M4V files encoded with H.264/AVC, H.265/HEVC, VP9, AV1, and Apple ProRes, all decoded locally via your device GPU without uploading.
Can I save a full-resolution still photo while stepping through frames?
Yes. As soon as you isolate the exact millisecond and frame number (#N), click Grab Current Frame to add it to your session gallery or click Grab & Download to immediately save a 1:1 native-resolution PNG, JPEG, or WebP still.
Is there any file size cap for opening 4K 60fps or long recordings?
No. Frame Extractor features No Server Upload Size Limit (Zero-copy local Blob streaming supports multi-gigabyte 4K/8K raw footage). Even 5 GB+ raw camera clips open in under a second from your local drive.
Does the viewer show the exact millisecond timestamp and frame index?
Yes. The viewfinder status bar displays a live tabular-nums timecode in MM:SS.mmm format alongside the calculated Frame #N index and an equivalent FFmpeg CLI command that updates in real time as you step.
Deterministic Frame-Lock, Boundary Math & Contact Sheet Specifications
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.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).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 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.