No upload, 100% local, no account

Extract video frames

Grab still images from your video. Choose how many frames per second and the image format, everything runs in your browser.

How Extract video frames works

Extract still images from any video as PNG or JPG files directly in your browser, with ffmpeg WebAssembly running the fps filter on your device. You can pull every frame, one frame per second, or frames at a custom interval in seconds. You can also restrict extraction to a specific time range within the clip. Each extracted image is offered as its own download link once ffmpeg finishes; there is no bundled archive.

PNG output preserves every pixel exactly as it appears in the video frame, ideal for image analysis, thumbnail generation, or machine learning dataset preparation. JPG output applies lossy compression to reduce individual file size at a slight quality cost, better for visual previews or when you only need a quick reference. Extraction speed depends on the number of frames requested and your device's CPU; pulling a few keyframes from a short clip is near-instant, while extracting every frame from a long 4K recording can take several minutes.

How to use Extract video frames, step by step

  1. Drop or select the video you want to extract frames from.
  2. Choose the extraction interval (every frame, every second, or a custom number of seconds between frames).
  3. Optionally set a start time and end time to limit extraction to a specific range.
  4. Select the output format (PNG for lossless, JPG for smaller files).
  5. Click Extract Frames and download each frame individually when ffmpeg finishes.

Common use cases

  • Pulling frames from a product demonstration video to use as illustration screenshots in documentation.
  • Extracting one frame per second from a time-lapse recording to create a contact sheet of the full sequence.
  • Building an image dataset from a short video clip for a computer vision model training project.
  • Generating thumbnail candidates at regular intervals from a long screencast to find the best preview frame.

Frequently asked questions

Is my video uploaded to a server when frames are extracted?

No. ffmpeg.wasm applies the fps filter inside your browser tab. Your video is read into local memory, frames are sampled and written as PNG or JPG files on your device, then each frame is offered as its own local download link. Nothing is transmitted to Sunasty or any third party.

What is the difference between PNG and JPG output frames?

PNG uses lossless compression, so every pixel in the extracted image is exactly as it appears in the video frame, with no data discarded. JPG applies the JPEG lossy algorithm (-q:v 2 in ffmpeg, which is near-lossless), producing files that are 5-10 times smaller than PNG at a cost of subtle compression artefacts around high-contrast edges and fine detail.

How many frames will I get, and how much disk space will they use?

The number of frames equals the clip duration (in seconds) divided by your chosen interval. At every-frame extraction on a 30 fps, 60-second clip, that is 1800 PNG files. Each full-HD PNG frame is roughly 1-3 MB uncompressed, so check your available disk space before extracting at maximum rate from a long clip.

Can I extract frames from a specific part of the video only?

Yes. Set the start time and end time before clicking Extract. ffmpeg seeks to the start point and stops at the end point, processing only that segment. This is the most effective way to reduce the number of output frames when you only need images from a particular moment.

Which video formats does the frame extractor accept?

ffmpeg.wasm reads MP4, MOV, WebM, MKV, AVI, and most common container formats. The input codec is handled transparently; you only choose the output image format (PNG or JPG). Each downloaded frame uses a .png or .jpg extension accordingly.

Why does extracting every frame from a long video take so long?

The fps filter must fully decode the compressed video stream, frame by frame, to produce raw pixel data for each output image. For a 10-minute 1080p video at 24 fps, that is 14400 frames to decode and encode as image files via WebAssembly without GPU acceleration. Using a lower extraction rate (one frame every 5 seconds instead of every frame) reduces both processing time and the number of files to download dramatically.