More games at WuGames.ioSponsoredDiscover free browser games — play instantly, no download, no sign-up.Play

Extract Frames from Video

Extract frames from video, build a contact sheet grid, and tag filenames with timestamps. Free online video-to-image tool. JPG, PNG, WebP, ZIP.

Upload
Drag & drop a video file here
or click to browse
Choose a video file to extract frames (MP4, WebM, MOV)

About Extract Frames

This online tool allows you to extract frames (images) from video files directly in your browser. Perfect for creating thumbnails, storyboards, or capturing specific moments. Choose extraction interval, frame count, or FPS. All processing happens locally for complete privacy.

What's the best way to extract a single specific frame from a video?

Specify the exact timestamp in seconds (or HH:MM:SS.mmm) and set the extraction interval to 1 frame. Under the hood the tool seeks to the nearest preceding keyframe, decodes forward until your target time, and exports that decoded image. For frame-accurate single extraction, use the WebCodecs API (Chrome 94+) which can index every frame, or feed FFmpeg the -ss option after -i for accurate seek mode. If the result looks like a different frame than expected, the source likely has variable frame rate or PTS/DTS reordering — convert to constant frame rate first. Output format affects fidelity: PNG is lossless and best for posters/thumbnails; JPEG at quality 92+ is smaller and fine for most uses; WebP gives 30% better compression than JPEG at equivalent quality.

What output format should I pick: PNG, JPEG, or WebP?

PNG (Portable Network Graphics) is lossless: every pixel from the decoded video frame is preserved exactly. Best for thumbnails you will edit, scientific or forensic frames, or screenshots needing transparency. File size is large (often 5-10x larger than JPEG). JPEG (ISO/IEC 10918, quality 0-100) uses lossy DCT compression that throws away high-frequency details invisible to most viewers. Use quality 85-95 for high-fidelity thumbnails and 70-85 for web previews where size matters. WebP (Google, 2010) supports both lossless and lossy modes, gives roughly 25-35% smaller files than JPEG at the same visual quality, and is now supported by all modern browsers. AVIF goes even further (50% smaller) but encodes more slowly. Pick PNG for editing, WebP for web delivery, JPEG for universal compatibility.

How do I extract one frame every N seconds for a contact sheet?

Set the extraction interval to N seconds (or 1/N frames per second). For a 10-minute video at 1 frame per second, you get 600 thumbnails — usually a good density for a quick visual index. For long content (lectures, surveillance), 1 frame per 5 seconds gives a manageable 120 thumbnails per 10 minutes. Internally, the tool tells FFmpeg something like -vf fps=1/N which decodes the entire stream but only emits frames at the requested cadence. To save processing time on very long sources, also lower the resolution (extracting 320-wide thumbnails is much faster than 1920-wide). For a true contact sheet image (grid of thumbnails in one file), you'd then run FFmpeg's tile filter on the extracted frames or use ImageMagick montage.

Why are my extracted frames blurry or pixelated?

Several typical causes. First, the source itself is low resolution or heavily compressed — extracting from a 480p YouTube download cannot conjure 4K detail. Second, you extracted a P-frame or B-frame from a heavily compressed encode, where small motion-prediction errors show up clearly when the frame is viewed in isolation; extracting on or near a keyframe (I-frame) usually gives a cleaner image. Third, if the video has interlacing (common in older TV broadcasts and DV), single frames show comb artifacts unless you apply a deinterlace filter (FFmpeg's yadif or bwdif). Fourth, output JPEG quality was set too low. Fixes: extract from a higher-quality source, prefer keyframes, deinterlace if needed, and use PNG or JPEG quality 90+ for the export.

Extract Frames from Video — Extract frames from video, build a contact sheet grid, and tag filenames with timestamps. Free online video-to-image too
Extract Frames from Video

Can I extract every single frame from a video?

Yes — set the interval to match the source frame rate (30 fps source = 30 frames per second extracted = every frame). Be aware of the disk space: a 30-fps 1-minute clip extracted as PNG at 1080p produces 1800 files of roughly 2-4 MB each, totaling 4-7 GB. For all-frame extraction, JPEG quality 95 is usually the sweet spot (much smaller files, visually indistinguishable). Use cases for all-frame extraction include rotoscoping, AI training datasets, stop-motion analysis, and forensic review. For very long videos, consider extracting to a sequence of frames inside a single archive (TAR or ZIP) to avoid filesystem strain from millions of tiny files, since many filesystems slow down dramatically with more than 100,000 files per directory.

What's the difference between I-frames, P-frames, and B-frames when extracting?

Modern video codecs store frames in a structure called a GOP (Group of Pictures). I-frames (intra-coded) are full standalone images — the largest and highest quality. P-frames (predicted) store only the differences from previous frames; reconstructing one requires decoding everything since the preceding I-frame. B-frames (bidirectional) reference both past and future frames, the smallest. For extraction, I-frames are the highest fidelity per frame because they have no inter-frame prediction errors. To extract only I-frames (often the natural thumbnail candidates in a video), set the filter to -vf "select='eq(pict_type,I)'" in FFmpeg. This gives you roughly one frame every 2-4 seconds for web video, perfect for chapter markers or scene change detection.

How do I extract frames at exact timestamps without re-encoding?

Pure extraction is always a decode operation — there is no codec-copy mode for individual frames because you must decompress to get pixel data. However, you can avoid re-encoding by choosing a lossless output format (PNG, lossless WebP, TIFF) so the decoded pixels are written verbatim. The decode itself does not lose anything beyond what the original lossy encode already cost. To extract at exact times, supply the timestamps in fractional seconds and use the WebCodecs API or FFmpeg with -accurate_seek. If you want a long sequence of timestamps, write them to a text file and use FFmpeg's select filter with timestamps separated by + signs, all in one pass — much faster than seeking N separate times.

Why don't extracted frames perfectly match what I see when scrubbing the video?

Video players smooth the playback by skipping decoder warm-up, using their own seek heuristics, and sometimes rendering motion-blurred composites for fast scrubbing. The exact pixel values you see while scrubbing may be from a partially decoded or interpolated frame. The extracted PNG is the true pixel value of the decoded frame at the requested presentation timestamp (PTS). If your source uses B-frames with reordering, the displayed frame at scrub-time t may actually be a different frame number than the one closest to PTS t. Other sources of mismatch: color space differences (player applies BT.709 to BT.601 conversion, extraction doesn't), HDR-to-SDR tone mapping in playback, or hardware decode rounding. For ground-truth extraction, trust the file over the player.