DEV Community

Cover image for I Built a Browser-Based YouTube Frame Extractor (No FFmpeg Required)
H3l!0s_T3k
H3l!0s_T3k

Posted on

I Built a Browser-Based YouTube Frame Extractor (No FFmpeg Required)

If you've ever wanted to extract frames from a YouTube video, you've probably downloaded the video first and used FFmpeg. It works—but it's not always the fastest or simplest solution.
I wanted a tool that works entirely in the browser, with no downloads, no CLI, and no servers.
So I built YTFR: YT Fr4m3 R1pp3r, a Tampermonkey userscript that captures frames directly from the YouTube player in real time.

How it works

Instead of downloading the video again, the script captures frames that the browser is already rendering.

YouTube Video

Capture Frames

Store as Blobs

Generate ZIP

Download
Everything runs locally on your machine.

Features

  • Automatic frame capture at custom intervals
  • Manual frame capture
  • ZIP export with:
  • Extracted frames
  • Contact sheets
  • JSON reports
  • CSV frame metadata
  • Draggable UI
  • Automatic fallback for browsers without requestVideoFrameCallback()
  • Configurable memory limit to prevent crashes

Challenges

The biggest challenges were:

  • Handling YouTube's Single Page Application (SPA) navigation.
  • Supporting browsers without requestVideoFrameCallback().
  • Managing memory while capturing hundreds of images.
  • Building a movable interface that remembers its position.

What's next?

I'm planning to add:

  • Timestamp-based extraction
  • Frame comparison
  • Playlist batch processing

If you have ideas or feedback, feel free to open an issue or contribute.

GitHub

Top comments (0)