Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

YT Grab

A minimal, self-hosted web UI for downloading YouTube videos as MP4 or extracting audio as MP3 — powered by yt-dlp and Flask.

dark UI with a URL input and format selector


Features

  • 🎬 Best-quality MP4 — merges the highest-res video + audio streams via ffmpeg
  • 🎵 Best-quality MP3 — pulls the best audio stream and encodes at VBR 0 (highest)
  • 🗑️ No storage bloat — each file is deleted from the server a few seconds after it's sent
  • 🖤 Zero dependencies on the front end — plain HTML/CSS/JS, no frameworks

Requirements

Dependency Notes
Python 3.9+
ffmpeg Must be on your system PATH
pip packages Listed in requirements.txt

Install ffmpeg

# macOS
brew install ffmpeg

# Ubuntu / Debian
sudo apt install ffmpeg

# Windows
# Download from https://ffmpeg.org and add the bin/ folder to your PATH

Setup

git clone https://github.com/your-username/yt-grab.git
cd yt-grab

# (Recommended) create a virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

pip install -r requirements.txt

Run

python app.py

Open http://localhost:5000 in your browser, paste a YouTube URL, choose a format, and click Download.


How it works

  1. The browser POSTs { url, fmt } to /download.
  2. The server spawns a yt-dlp job in an isolated temp directory.
  3. The finished file is streamed back to the browser as an attachment.
  4. A background thread deletes the temp directory 5 seconds later.

Keeping yt-dlp up to date

YouTube changes its site frequently. If downloads start failing, update yt-dlp:

pip install -U yt-dlp

Project structure

yt-grab/
├── app.py           # Flask app + embedded UI
├── requirements.txt
└── README.md

License

MIT

About

YouTube video downloader that uses yt-dlp

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages