Free Online First & Last Frame Extractor for Video
Capture the exact first frame (00:00.000) and non-blank final frame of any MP4, MOV, WebM, MKV, or AVI clip in one click, purpose-built for Runway Gen-3, Kling AI, Luma, Veo, and ComfyUI continuity.
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 first and last frame extractor and how does it prevent the end-of-file black-frame bug?
The Frame Extractor First and Last Frame Extractor (https://frame-extractor.app/first-last-frame-extractor) is a specialized browser utility that captures the exact initial frame (00:00.000) and the final decoded visual frame of a video in a single click. Standard players and naive extractors suffer from the End-of-File (EOF) black-frame bug when seeking to video.duration. Powered by Frame-Exact Hardware-Accelerated Decoding (WebCodecs / requestVideoFrameCallback + Deterministic PTS Frame-Lock, Zero Frame Drops across CFR & VFR videos), our Grab First & Last Frame action calculates duration - max(1/fps, 0.04s) and verifies buffer readiness 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).
Continuous Video Extension & Loop Continuity for Runway, Kling AI, Luma & Veo
Generative AI video models, including Runway Gen-3 Alpha, Kling AI, Luma Dream Machine, Google Veo, Pika, and ComfyUI Wan/SVD workflows, rely on exact start and end anchor images to extend clips, chain multi-shot scenes, or synthesize infinite continuous loops. Even a 1-frame mismatch or slight color-space shift between the terminal frame of Shot A and the initial prompt image of Shot B creates a visible jump cut. By locking directly onto the decoded HTMLVideoElement presentation timestamp via requestVideoFrameCallback() and exporting uncompressed PNGs via HTMLCanvasElement.toBlob(), both anchor frames retain 100% pixel and gamma consistency.
Need broader dataset sampling for LoRA training or 3D Gaussian Splatting? Explore our AI Video Frame Extractor, fine-tune your end point with the Frame-by-Frame Video Viewer, or composite a visual continuity sheet with the Video Contact Sheet Generator.
AI Video Continuity & Keyframe Anchor Workflows
| AI / Editing Workflow | Required Frame(s) | Recommended Format | Why Exact PTS Lock Matters |
|---|---|---|---|
| Clip Chaining (Shot A → Shot B Extension) | Last Frame (duration - 1/fps) | PNG (Lossless 1:1) | Avoids EOF black frame and eliminates seam jump between clips |
| Continuous Infinite Video Loop | First (00:00.000) & Last Frame | PNG (Lossless 1:1) | Pass Last Frame as Start and First Frame as End to close the loop |
| Keyframe-Guided Interpolation (Kling / Luma) | Start Anchor + End Anchor | PNG or WebP (100%) | Preserves exact subject geometry and Rec.709 color balance |
| FFmpeg CLI Automation Reference | Live Equivalent CLI Bar | PNG (-q:v 1) | Copy exact timestamped FFmpeg command directly from workbench |
How to Extract the First and Last Frame in One Click
Drop Your Source Video
Load any MP4, MOV, WebM, MKV, AVI, or M4V clip locally in your browser with zero upload wait time.
Click Grab First & Last Frame
Click the highlighted Grab First & Last Frame button in the viewfinder bar to lock onto 00:00.000 and the final visual frame.
Download Both Stills or ZIP
Save each native-resolution PNG individually or click Download Selected (ZIP) to grab both anchors together.
Real Production Workflows & Practitioner Notes
"Before using `/first-last-frame-extractor`, dragging a player playhead to the end of a 5-second AI clip gave me a black frame half the time because of EOF packet timing. The Grab First and Last Frame button calculates `duration - 1/fps` automatically and gives me a clean 00:04.958 anchor PNG."
"To make an infinite background loop for our Spotify Canvas visuals, I grab frame 0.000s as PNG and feed it back into Luma as the End Frame target. Having both boundary frames extracted in one click keeps the aspect ratio and color profile locked."
First and Last Frame Extractor FAQ
Why do I get a black or empty frame when manually seeking to the end of a video?
Most video containers store an End-of-Stream (EOS) terminator at the exact video.duration timestamp. Seeking directly to duration often lands on an empty buffer. Our Grab First & Last Frame action uses a duration - max(1/fps, 0.04s) seek lock with Deterministic PTS Frame-Lock so the final capture always lands on the last true visual frame.
How does Grab First & Last Frame work for Runway Gen-3, Kling AI, Luma Dream Machine, and Veo?
With one click on Grab First & Last Frame, the tool seeks to 00:00.000 (First Frame) and the exact final frame (Last Frame), captures both at 100% native resolution, selects both in the gallery, and lets you download them individually or as a 2-frame ZIP ready for AI video extension, loop creation, or start/end keyframe prompts.
Which video containers and codecs are supported?
Frame Extractor supports the full container and codec matrix: MP4, MOV (QuickTime/iPhone), WebM, MKV, AVI, and M4V across H.264/AVC, H.265/HEVC, VP9, AV1, and Apple ProRes.
Does this tool preserve 1080p and 4K native resolution for AI video prompts?
Yes. Both the first frame and last frame are rendered at 1:1 intrinsic source pixel dimensions (such as 1920x1080 or 3840x2160) in lossless PNG, JPEG, or WebP so AI video generators experience zero resolution degradation or seam flicker.
Is there any file size limit or server upload queue?
No. Frame Extractor operates with No Server Upload Size Limit (Zero-copy local Blob streaming supports multi-gigabyte 4K/8K raw footage). Everything runs locally inside your browser.
Can I step backward 1 or 2 frames if the final frame of my clip has a fade-out?
Yes. After clicking Grab First & Last Frame, the playhead remains positioned at the end of your video. You can click -1 Frame (or press the comma key) to step back before a fade-to-black and click Grab Current Frame.
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.