NEW · FFmpeg.wasm · 100% Browser-Based

Free Video Frame Extractor

Extract still frames from any video as PNG or JPG — at chosen intervals, exact timestamps, or every keyframe. Browser-based, no upload.

🎬
Drop a video file
MP4 · MOV · WebM · MKV · AVI · GIF
Files stay on your device · Never uploaded

Why Do This in Your Browser?

Extracting still frames from a video sounds simple — and is, on the command line, with one FFmpeg flag. Online, it's a mess: most tools cap free use at one frame, watermark output, or upload your full video to extract a few stills.

This tool extracts frames in three modes: by interval (one frame every N seconds), by exact timestamps (frames at 0:03, 0:17, 1:42), or by keyframe (every I-frame, the natural 'scene boundary' marks in the source). Output is PNG (lossless) or JPG (smaller). Files stay on your device.

How It Works

Interval extraction uses FFmpeg's `fps` filter to sample frames at the chosen rate — 1fps gives one frame per second, 0.1fps gives one frame every 10 seconds, 0.01fps gives one frame every 100 seconds. Exact-timestamp mode uses the `select` filter with frame-specific timestamps. Keyframe mode uses `-vf select='eq(pict_type,I)'` to keep only intra-coded frames (the source video's natural scene boundaries).

Output format trade-off: PNG is lossless (every extracted frame is pixel-perfect) but ~5–10x larger than JPG. JPG at quality 90 is visually indistinguishable from PNG and saves significant download time when extracting hundreds of frames. For ML training data or detail-critical inspection, use PNG; for previews and bulk extraction, use JPG.

Tip: Extract frames from a specific portion by trimming the video first, then running the frame extractor on the trimmed result. If your goal is an animated sequence rather than separate stills, the GIF Maker handles frame-range conversion more directly.

Common Use Cases

Thumbnail Generation
Extract one good frame for a video thumbnail — at the moment of peak interest.
Storyboard Sheets
1 frame every 5 seconds = a contact-sheet view of an entire video's progression.
ML Training Data
Bulk extraction of frames for computer-vision training datasets.
Forensic Inspection
Pull every keyframe to inspect for tampering or to verify content.
Bug Reports
Grab the exact frame where a UI glitch appears.
Animation Reference
Extract frame-by-frame stills for studying movement, timing, and composition.

How We Compare

Honest read on free, paid, and self-hosted options for this kind of job:

UDT Frame Extractor (this tool): Free, browser-based, three extraction modes. No upload, no watermark, no signup.
Frame Extractor sites (various): Mostly free with ads, cap at small files, cloud upload your full video.
VLC Player snapshot: Free, runs locally — but extracts one frame at a time via menu click. Tedious for bulk extraction. This tool extracts hundreds at once.
FFmpeg CLI: Free, fastest possible. `ffmpeg -i in.mp4 -vf fps=1 frame_%04d.png`. Requires CLI comfort. This tool wraps it with a UI.
Adobe Premiere Frame Export: Export per frame from a timeline — workable but slow. Requires Premiere subscription.

Frequently Asked Questions

How many frames can I extract at once?
No hard limit — the tool will extract every frame in the requested range if you ask. Practical browser cap is around 5000 frames per export (memory + zip generation). For larger extractions, run multiple batches.
Are my videos uploaded anywhere?
No. Frame extraction runs entirely in your browser via FFmpeg.wasm. Output PNG/JPG files are generated locally and offered as a downloadable zip.
What's the difference between interval and keyframe extraction?
Interval extraction samples at a constant rate (1fps, 0.1fps, etc.) regardless of video content. Keyframe extraction outputs only the source video's I-frames — the natural scene boundaries, typically one every 2–10 seconds depending on encoding settings. Keyframe is better for storyboards; interval is better for ML datasets.
PNG vs JPG — which should I pick?
PNG for ML training data, frame analysis, or when storage isn't a concern. JPG (quality 90) for previews, thumbnails, and bulk extraction — visually indistinguishable from PNG at 5–10x smaller file sizes.
Can I extract a specific frame number?
Yes — switch to 'exact timestamps' mode and enter timestamps in HH:MM:SS.MS format. For frame-number lookup, divide frame number by source framerate (frame 720 in a 30fps video → timestamp 24.0 seconds).
What resolution will extracted frames be?
Same as the source video. A 1080p video produces 1920×1080 PNGs. To get smaller stills, resize the video first with the Video Resizer.
Will the frames be in chronological order?
Yes — filenames are prefixed with timestamp or sequence number (frame_0001.png, frame_0002.png, etc.) so they sort naturally.
Can I extract every single frame of the video?
Yes — set the interval to match source framerate (30fps = 0.0333s interval, or just type 30). Note that a 5-minute 30fps video has 9000 frames; PNG output would be ~10GB+. JPG is more reasonable for full-rate extraction.

Related Tools on UDT

Video Trimmer →
Trim videos with frame-accurate precision in your browser.
GIF Maker →
Turn any video into an animated GIF with frame-range, fps, and size controls.
Video Compressor →
Shrink video files with platform presets — WhatsApp 16MB, Discord 10MB, Gmail 25MB, IG Reels 4GB, Ti…
All Video Tools →
Browse the full Video Suite — 12 tools, all in-browser.