A professional 1000+ site support YouTube downloader consisting of a Chrome Extension frontend and
a Python GUI & CLI backend powered by yt-dlp and ffmpeg. pyFlow is designed for simplicity, speed, and reliability with a sleek modern UI.
- 1000+ site support โ detects video/audio on every yt-dlp-supported site
- Biopunk Neural HUD โ animated particle canvas, bioluminescent UI, 2035-style design
- Arrow dial selectors โ quality and format browsed with โ โถ without dropdowns
- Universal URL detection โ og:video, HTML5
<video>,<audio>og:image fallbacks - Animated server status โ pulsing dot with auto-refresh every 8 seconds
- Modern Dark UI with glassmorphism design
- Smart URL Detection - Automatically detects YouTube videos and playlists
- Real-time Server Status - Shows if Python CLI is running
- Video Preview - Shows thumbnail and title before downloading
- Flexible Options:
- Download single video or entire playlist
- Video or audio-only downloads
- Multiple quality options (4K, 1080p, 720p, 480p, 360p)
- Multiple format options (MP4, MKV, WebM, MP3, M4A, OPUS, FLAC)
- In-page Download Button - Injected directly into YouTube's interface
- Cross-origin Communication - Seamless messaging between extension and Python GUI & CLI server
- Error Handling - User-friendly error messages for common issues
- yt-dlp Integration - The powerful YouTube downloader engine
- FFmpeg Processing - Automatic format conversion and audio extraction with FFmpeg
- Async Queue System - Non-blocking downloads with concurrent processing
- Real-time UI - Beautiful terminal dashboard using Rich library
- Smart Processing - ffmpeg conversion runs in parallel with downloads
- Cross-platform - Works on Windows, macOS, and Linux
- RESTful API - FastAPI server for extension communication
- Progress Tracking - Real-time download speed, progress, and ETA
- Automatic Updates - Background yt-dlp updates on startup
- Configurable Settings - Set default quality, format, and download type
- Robust Error Handling - Graceful handling of download failures and retries
| ๐ฑ Main Controller (Popup) | โ๏ธ Advanced Settings |
|---|---|
- Google Chrome or Chromium-based browser (Edge, Brave, etc.)
- Chrome 88+ (Manifest V3 support)
- Python 3.10 or higher
- ffmpeg installed and in PATH
- pip (Python package manager)
Navigate to the Python CLI directory:
cd pyflow_serverInstall Python dependencies
pip install -r requirements.txt- Install ffmpeg (if not already installed):
Windows:
- Download from ffmpeg.org
- Extract and add to PATH
macOS:
brew install ffmpegLinux:
sudo apt install ffmpeg # Ubuntu/Debian
sudo dnf install ffmpeg # Fedora-
Open Chrome and navigate to
chrome://extensions/ -
Enable "Developer mode" (toggle in top-right corner)
-
Click "Load unpacked"
-
Select the
chrome-extensionfolder -
The PyFlow extension should now appear in your extensions list
- Download the latest PyFlow installer from the releases page
- Unzip and run the installer
- PyFlow will be installed and added to your PATH automatically
- You can start the server by running
pyflowin your terminal - The installer also includes an option to create a desktop shortcut for easy access
- Extension installation is still required for browser integration, but the installer will guide you through the process
- Navigate to the Python CLI directory:
cd pyflow_server- Run the application:
python main.py
python main.py
python main.py --cliwindows exe installer users can simply run:
pyflow
pyflow --cli- You should see:
๐ PyFlow - YouTube Downloader CLI
==================================================
โ
Server started on http://localhost:8000
๐ฆ Download directory: /Users/YourName/Downloads/PyFlow
๐ก Open your browser and use the PyFlow extension!
==================================================
4.Help for server info
pyflow/server> pyflow -h
usage: pyflow [-h] [--hidden | --show | --stop | --status] [--path DIR] [--port PORT] [--host HOST] [--no-update] [--version]
[--check]
PyFlow โ YouTube Downloader Server
options:
-h, --help show this help message and exit
--hidden Run server in background. Terminal can be closed safely.
--show Run server with full live UI dashboard (default when no mode given).
--stop Stop a running background server and exit.
--status Check whether a PyFlow server is currently running.
--path DIR, -p DIR Set download directory. Saved for future runs.
--port PORT HTTP port (default: 8000)
--host HOST Bind address (default: 127.0.0.1)
--no-update Skip background yt-dlp auto-update on startup.
--version, -v show program's version number and exit
--check Check dependencies and exit.
PyFlow โ- YouTube Downloader Server
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Method 1: Extension Popup
- Navigate to any YouTube video
- Click the PyFlow extension icon in your toolbar
- Configure quality, format, and download type
- Click "Download"
Method 2: In-page Button
- Navigate to any YouTube video
- Look for the "PyFlow" button next to Like/Share buttons
- Click it to open download options
- Configure and download
- Navigate to a YouTube video that's part of a playlist
- Open the PyFlow extension
- You'll see a "Download Mode" toggle
- Choose "Whole Playlist" to download all videos
- Configure quality and format
- Click "Download"
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ Server Online โ
โ YT-DLP Bridge โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [Thumbnail] Video Title โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Type: [Video โผ] โ
โ Quality: [1080p โผ] โ
โ Format: [MP4 โผ] โ
โ โ
โ [ Download ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ PyFlow Status โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ PyFlow YouTube Downloader โ
โ Queued: 0 | Active: 0 | Done: 0 | yt-dlp: v2026.02.21 | 17:30:39 โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โฌ Active Downloads
โญโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโฎ
โ ID โ Title โ Type โ Quality โ Status โ Progress โ Speed โ ETA โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโผโโโโโโโโโโโค
โ - โ No active downloads โ - โ - โ - โ - โ - โ - โ
โฐโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโฏ
โ Recently Completed
โญโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโฎ
โ ID โ Title โ Type โ Status โ File โ
โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโค
โ - โ No completed downloads yet โ - โ - โ - โ
โฐโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโฏ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ๐ C:\Users\Mohammod Mizan\Downloads\PyFlowPro_Downloads | Press Ctrl+C to stop | pyflow --help for CLI options โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Settings are automatically saved:
- Default quality preference
- Default format preference
- Default download type
Edit these variables in download_manager.py:
max_concurrent_downloads: Number of simultaneous downloads (default: 2)- Download directory is automatically set to
~/Downloads/PyFlow
- Make sure the Python CLI is running (
pyflow) - Check that it's running on port 8000
- Verify firewall isn't blocking localhost connections
- Check that ffmpeg is installed:
ffmpeg -version - Verify yt-dlp is installed:
yt-dlp --version - Check Python CLI terminal for error messages
- Refresh the YouTube page
- Check that the extension is enabled
- Try disabling and re-enabling the extension
- Not all videos have all quality/format combinations
- yt-dlp will automatically select the best available option
- Check the terminal output for details
Check server status
{
"status": "online",
"queue_size": 2,
"active_downloads": 1
}Add download to queue
{
"url": "https://youtube.com/watch?v=...",
"download_type": "video",
"is_playlist": false,
"quality": "1080p",
"format": "mp4",
"title": "Video Title"
}Get queue status and active downloads
Cancel a specific download
Contributions are welcome! Please feel free to submit a Pull Request.
This project is for educational purposes. Please respect YouTube's Terms of Service and copyright laws.
This tool is for personal use only. The developers are not responsible for any misuse of this software. Always respect content creators' rights and YouTube's Terms of Service.
- yt-dlp - The amazing YouTube downloader
- FFmpeg - Media processing
- FastAPI - Modern Python web framework
- Rich - Beautiful terminal formatting
Made with โค๏ธ by PyFlow Team