UtilityKit

500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.

Video Frame Extractor

Extract single frames or batch screenshots from any video at precise timestamps or regular intervals. Download as PNG, JPG, or ZIP.

About Video Frame Extractor

Video Frame Extractor captures individual frames from any video file directly in your browser using ffmpeg.wasm — no upload, no server. You can extract a single frame at a precise timestamp (including sub-second times like 1.5s), or batch-extract frames at regular intervals (e.g. one frame every 2 seconds for a storyboard). Output format is your choice of PNG (lossless) or JPG (compact). Batch results are shown as a thumbnail grid with individual download buttons, and a one-click ZIP download is provided for downloading all frames at once using the JSZip library.

Why use Video Frame Extractor

  • 100% private — video never leaves your device
  • Single frame or batch extraction modes
  • PNG (lossless) and JPG output options
  • Thumbnail grid preview for batch results
  • One-click ZIP download for batch frames
  • No watermarks, no signup, free to use

How to use Video Frame Extractor

  1. Upload your MP4, WebM or MOV video.
  2. Choose Single Frame mode to capture one frame at a specific time, or Batch mode to capture frames at regular intervals.
  3. For single mode, enter the timestamp in seconds (decimals supported).
  4. For batch mode, enter the interval in seconds between frames.
  5. Choose PNG for lossless quality or JPG for smaller file size.
  6. Click 'Extract Frames' and wait for processing.
  7. Download individual frames or click 'Download All as ZIP'.

When to use Video Frame Extractor

  • Creating storyboards or thumbnail previews from a video
  • Capturing a specific moment from a recording as an image
  • Generating dataset images from video for machine learning
  • Extracting product images from a video walkthrough
  • Pulling reference frames for design or animation work
  • Documenting a bug from a screen recording with crisp PNG frames

Examples

Single hero frame from a product video

Input: 60-sec MP4, single mode, timestamp 12.5s, PNG output

Output: One full-resolution PNG frame ready for use as a poster or social card

Storyboard from a tutorial

Input: 5-min WebM screencast, batch mode, 5-second interval, JPG output

Output: 60 JPG thumbnails delivered as a ZIP for review or documentation

ML dataset slice

Input: 30-sec MOV clip, batch mode, 0.5-second interval, PNG output

Output: 60 PNGs at source resolution, zipped for easy upload to a training pipeline

Tips

  • For storyboard work, use batch mode at 1–2 second intervals — it produces a clean visual outline of the whole clip.
  • For ML dataset generation, batch at 0.5 second intervals up to the 200-frame cap, then re-run on later segments.
  • Use PNG when the frames are headed for further editing (background removal, retouching); JPG for quick previews or social posts.
  • For sub-second precision (e.g. catching a single facial expression), enter the timestamp as a decimal like 7.42.
  • Pre-trim very long videos with the Video Trimmer first — extracting from a 5-minute slice is much faster than from a 2-hour file.
  • If batch extraction returns blurry frames on fast-motion clips, the source video may have low FPS — there's no extra detail to recover.

Frequently Asked Questions

Does my video leave my device?
No, processing is 100% local in your browser. Your video is never uploaded to any server.
How many frames can I extract in batch mode?
Up to 200 frames per batch run. For very long videos at short intervals, use a larger interval value to stay within this limit.
What is the difference between PNG and JPG output?
PNG is lossless and gives pixel-perfect frames at the cost of larger files. JPG is lossy but produces smaller files, suitable for previews and thumbnails.
Can I extract a frame at a sub-second timestamp?
Yes, enter the time as a decimal number in seconds, for example 1.5 for one and a half seconds into the video.
Why does batch mode stop at 200 frames?
Keeping all frames in browser memory beyond 200 would risk crashing on lower-spec devices. Use a larger interval value for long videos.
Do I need to install JSZip separately?
No, the tool loads JSZip from a CDN automatically when you click 'Download All as ZIP'.
Why does it require Chrome or Edge?
ffmpeg.wasm uses SharedArrayBuffer for multi-threading, which is only enabled on cross-origin-isolated (COOP/COEP) pages in Chromium-based browsers.
Is there a file size limit?
There is no server-imposed cap. Very large videos (multi-GB) may strain browser memory; up to 1–2 GB usually works on a modern laptop.

Explore the category

Glossary

ffmpeg.wasm
WebAssembly build of FFmpeg used to decode video and write frame images entirely in the browser tab.
SharedArrayBuffer
A shared-memory primitive required by ffmpeg.wasm for multi-threaded decoding. Only available on cross-origin-isolated pages.
Frame rate (FPS)
Frames per second in the source video. Determines how many distinct frames are available to extract; 30 fps means 30 unique frames per second of footage.
Codec
The compression algorithm (H.264, VP9, HEVC) used in the source video. ffmpeg.wasm decodes the codec to recover individual frames.
Container format
The video file wrapper (MP4, WebM, MOV) holding the encoded streams. The extractor reads the container, decodes the video stream and writes frames out as images.
Lossless format
An image format like PNG that stores the exact pixel values with no quality loss — ideal for further editing or ML pipelines.
Keyframe
A self-contained reference frame in a compressed video. Extraction at a non-keyframe time still works because ffmpeg decodes from the previous keyframe.
JSZip
A client-side library that builds ZIP archives in the browser. Loaded on demand to bundle batch frames into a single download.