Warning
Heads up: This is currently in Beta phase. It works, but there might be rough edges and unexpected behavior. Your feedback will help shape the stable release.
ViDownloader is a desktop application built with PyQt5 that simplifies downloading YouTube videos in bulk. While it uses yt-dlp under the hood for the actual downloading, the scraping and interface are completely custom-built.
This happens to be my first substantial open-source project, so please bear with me. it might do some dumb things, but I'm learning as I go. If something breaks or doesn't make sense, let me know and I'll do my best to fix it.
pip install vidownloadergit clone https://github.com/farhaanaliii/vidownloader.git
cd vidownloader
pip install -e .After installation, run:
vidownloaderOr, if you prefer:
python -m vidownloaderPaste almost any YouTube URL and ViDownloader will figure out the rest:
- Channel videos –
https://youtube.com/@channel/videos - Channel shorts –
https://youtube.com/@channel/shorts - Playlist videos –
https://youtube.com/playlist?list=PLAYLIST_ID - Single videos –
https://youtube.com/watch?v=VIDEO_ID - Single shorts –
https://youtube.com/shorts/VIDEO_ID
Just paste one or more links (one per line) and let the app handle the scraping and downloading.
- Paste Links – Add YouTube URLs into the text area
- Scrape Metadata – Click Start to fetch video details using custom scraping logic
- Select Videos – Choose which videos you want from the list
- Download – Hit Download and let yt-dlp do its magic in the background
The interface sits on top of yt-dlp for reliable downloads, but all the scraping, queuing, and progress tracking happens within ViDownloader itself.
Open Settings (top-right corner) to adjust:
| Setting | What It Does |
|---|---|
| Download Location | Where your videos are saved |
| Export Location | Where .viio list files are stored |
| File Naming | Name files by title, video ID, or random string |
| Download Threads | Simultaneous downloads (1–10 threads) |
Working with a large channel? Export your video list as a .viio file, close the app, and import it later to resume right where you left off. No need to re-scrape everything.
- Python 3.10 or newer
- PyQt5 (≥ 5.15.11)
- yt-dlp (latest recommended)
- curl_cffi
- FFmpeg – Required by yt-dlp for video/audio processing (download)
- JavaScript Runtime – yt-dlp needs a JS engine to handle some videos. Install one of:
Python dependencies install automatically via pip. You'll need to install FFmpeg and a JS runtime separately.
Tip
One-click installer coming soon! A standalone installer that bundles all dependencies is in development.
ViDownloader is cross-platform and has been tested on:
- Windows (10, 11)
- Linux (Ubuntu 22.04)
The application is built with Python and PyQt5, making it portable across different operating systems. Both the source installation and pre-built executables work seamlessly on supported platforms.
Want to build a standalone executable? Use the provided build scripts:
Windows:
.\build.batLinux:
./build.shThese scripts will automatically:
- Set up the virtual environment
- Install dependencies
- Compile Qt resources
- Build the executable using Nuitka
Pre-built executables are also available for download:
- Windows (x86/x64)
- Linux (x64)
Check the Releases page for downloads.
This is my first major open-source project, so I'm sure there are plenty of areas to improve. If you find bugs, have feature ideas, or want to contribute code:
- Fork the repository
- Create a feature branch
- Submit a pull request
All contributions are welcome. just try to match the existing code style.
Released under the MIT License. Use it, modify it, share it.
- Format & quality selection – Pick 720p, 1080p, 4K, etc.
- Advanced filtering – Search and filter video lists
- Download history – Track your past downloads
- Improved error handling – Making the app more resilient
TODO: If you're good with design, we could really use a better logo. The current one is... functional, but not pretty. Any takers?
While ViDownloader implements its own scraping logic, it relies on the excellent yt-dlp project for actual video downloading. Big thanks to the yt-dlp maintainers for their incredible work.
Built by Farhan Ali – my first serious dive into open-source desktop apps. Be gentle.
