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.

拖入影片,或 選擇檔案

MP4 · MOV (ProRes/HEVC) · WebM · MKV · AVI · M4V - 零伺服器上傳限制

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 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 SourcesTypical Inspection Use Case
24 fps (Cinema)41.667 ms / frameNarrative film, animation, Sora / Runway AI clips2D/3D animation timing, VFX plate study, cut verification
25 fps (PAL Broadcast)40.000 ms / frameEuropean broadcast, DVB recordings, mirrorless PALBroadcast compliance, subtitle sync, editorial review
30 fps (NTSC / Web)33.333 ms / frameYouTube, smartphone video, OBS screen recordingsThumbnail selection, UI bug reproduction, product demos
60 fps (High Action)16.667 ms / frameGoPro, DJI drones, iPhone 4K60, 60fps gameplaySports biomechanics, fast motion de-blurring, frame pacing

How to Step Through a Video Frame by Frame Online

01

Drop Your Video File

Open any local MP4, MOV, WebM, MKV, AVI, or M4V video with zero server upload and no file size limit.

02

Select FPS & Step (-1 / +1)

Choose 24, 25, 30, or 60 fps, then click -1 Frame / +1 Frame or press , and . on your keyboard.

03

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

Track & Field Biomechanics · 120fps Sprint Start

"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."

Coach Andre Miller, NCAA Sprint Performance Analyst
2D Hand-Drawn Animation Study · 24fps Sakuga Clips

"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."

Mina Park, Storyboard Artist & Character Animator

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

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.

熱門影片取幀與截圖工具

專屬格式與批量抽幀工作流
H.264 / HEVC / AV1→

MP4 影片取幀工具

在瀏覽器本地從 .mp4 影片無損提取高畫質靜態畫面或帶時間戳記的連續圖序列。

iPhone 與 QuickTime→

MOV 影片取幀工具

免上傳雲端,直接從 iPhone、iPad 與 macOS QuickTime (.mov) 錄影擷取原畫質照片。

3840×2160 UHD→

4K 影片高畫質取幀工具

從空拍機、運動相機與無反相機的 4K 60fps 影片中提取原生 830 萬畫素超高清靜態照片。

Storyboard / Sprite Grid→

Video Contact Sheet Maker

Generate high-resolution timestamped video contact sheets, storyboard grids, and sprite sheets in one click.

-1 / +1 Frame Stepper· Current→

Frame-by-Frame Video Viewer

Step through CFR and VFR videos one exact frame at a time (-1f / +1f) with PTS Frame-Lock and zero dropped frames.

1:1 Native Still Capture→

4K Video Screenshot Grabber

Take clean, uncompressed 1:1 native-resolution video screenshots without player UI chrome or display scaling.

AI Video Continuity→

First & Last Frame Extractor

Extract the exact 0.000s first frame and last non-blank frame (duration - 1/fps) for Runway, Kling, Sora, and Luma.

Sora / Kling / LoRA / 3DGS→

AI Video Frame Extractor

Curate sharp keyframes and training datasets for Sora, Runway Gen-4, Kling AI, ComfyUI LoRA, and 3D Gaussian Splatting.

100% 無損畫質→

影片轉 PNG 無損擷取

擷取像素級精準的無壓縮 PNG 靜態影格,最適合 YouTube 縮圖、UI 文件截圖與 VFX 合成。

輕量 JPEG 批量匯出→

影片轉 JPG 轉換器

將 MP4、MOV 與 WebM 影片轉換為檔案輕巧、相容性最高的 JPEG 圖片序列並支援品質調節。

1 fps / 每 N 秒 / 每 N 幀→

按秒批量擷取影片影格

自動按每 0.25 秒、1 秒、5 秒或每 N 幀取樣抽幀,並一鍵打包為按時間編號的 ZIP 壓縮檔。

採用 W3C 與 WHATWG 標準之硬體加速 MDN HTMLVideoElement 解碼與 1:1 像素級 HTMLCanvasElement.toBlob() 緩衝區封裝技術 - 0 位元組上傳雲端,100% 離線隱私安全。