yt-downloader-gui is a powerful, open‑source desktop application built with PyQt6 and yt-dlp that lets you download single videos, playlists, channels (videos & shorts), or just MP3 audio—seamlessly and reliably.
- Professional UI Redesign
- Complete visual overhaul with a new professional dark theme.
- Consistent styling across all widgets using a dedicated QSS stylesheet.
- Improved layout with a larger default window size for a better user experience.
- Enhanced Download Progress
- Added a visual progress bar to the "Activity" page for real-time download feedback.
- The progress bar is updated dynamically by parsing
yt-dlp
's output.
- Code Refinements
- Removed all inline styling in favor of the new stylesheet.
- Added object names to widgets for more specific styling.
- Updated version number to 2.4.0 in the "About" dialog.
- Automatic yt‑dlp Updater
Checks GitHub for new yt-dlp releases and replaces your local binary automatically. - Multiple Download Modes
- Single Video / MP3
- Playlist Video / Playlist MP3
- Channel Videos / Channel MP3
- Channel Shorts / Shorts MP3
- Cookie‑Based Login
Import YouTube cookies via “Get cookies.txt Locally” extension for authenticated downloads. - Modern PyQt6 GUI
Intuitive sidebar, real‑time status, and scrolling activity log. - Flexible Quality Options
Choose best‑available or specific resolutions (8K, 4K, 1080p, etc.); MP3 defaults to 320 kbps. - Lightweight & Cross‑Platform
Single‑file app plus assets; runs on Windows, macOS, and Linux (ffmpeg required).
yt-downloader-gui/
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── requirements.txt
├── screenshots/
│ └── screenshot.png
└── src/
├── build.bat
├── favicon.ico
├── main.py
├── assets/
│ ├── activity.png
│ ├── download.png
│ └── video-favicon.png
├── bin/
│ ├── ffmpeg.exe
│ └── yt-dlp.exe
└── app/
├── __init__.py
├── download_manager.py
├── login_manager.py
├── main_window.py
├── ui_manager.py
└── updater.py
- Python 3.8+
- PyQt6
- ffmpeg (bundled on Windows in
bin/ffmpeg.exe
; install separately on macOS/Linux) - yt-dlp (managed by the updater)
pip install -r requirements.txt
-
Clone the repo:
git clone https://github.com/ukr-projects/yt-downloader-gui.git cd yt-downloader-gui
-
(Optional) Create & activate a virtual environment:
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Verify executables: Ensure
bin/ffmpeg.exe
andbin/yt-dlp.exe
exist. The app will updateyt-dlp.exe
on first run.
-
Run the app:
python src/main.py
-
Login with Cookies (for age‑restricted or region‑locked content):
- Go to File → Login, select your browser.
- If you haven’t installed the “Get cookies.txt Locally” extension, the app will prompt you to do so.
- Export your cookies, select the
.txt
file, then complete browser login.
-
Download Workflow:
- Switch to Download page.
- Paste a YouTube URL (video/playlist/channel/short).
- Choose save location, download mode, and quality.
- Click Download to queue.
-
Monitor Progress:
- Switch to Activity page for real‑time logs and status.
We welcome contributions!
- Fork the repository
- Create a feature branch:
git checkout -b feature/awesome-thing
- Commit your changes with clear messages
- Push to your fork and open a Pull Request
For major changes, please open an issue first to discuss.
- yt-dlp for the robust download backend
- PyQt6 for the modern GUI framework
- ffmpeg for audio/video processing
- GitHub API for seamless updater integration
If you find this project useful, please consider giving it a star on GitHub! Your support helps us continue improving and maintaining this tool.
- GitHub Issues: Report bugs or request features
- Discussions: Community discussions and Q&A
- Email: [email protected]
Made with ❤️ by the Ujjwal Nova