YT Channel Downloader is an intuitive desktop application built to simplify the process of downloading YouTube media content. Leveraging the robustness of yt-dlp and enriched with a modern PyQt 6 GUI, this tool offers a seamless experience to download your favorite content.
- Change Log
- Binaries
- Features
- Installation
- How to Use
- Settings & Troubleshooting
- Contributing
- License
- Authors
- Donation
Latest: 0.8.8
- Fixed partial download progress restoration when refetching a playlist or channel list.
- Added a search bar for filtering fetched items by title.
- Made fetched item titles, URLs, and speed values read-only.
- Fixed YouTube video downloads falling back to low quality too aggressively; improved browser-cookie login validation.
- Improved application logging for YouTube auth and download troubleshooting.
- Fixed playlist loading to use flat extraction and honor playlist limits/progress more reliably.
- Added regression tests and docstring cleanup.
Download the latest binary releases here.
- Fetch & Replace / Fetch & Add: Replace the current list or append newly fetched items to it.
- Search Within Fetched Items: Filter the current list by title with the built-in search field.
- Fetch Video Listings: Input a YouTube video, playlist, or channel URL and get a list of matching items.
- Selective Download: Choose exactly which videos you want to download, or select all at once.
- Quality Control: Specify video/audio quality or opt to download only the associated audio track.
- Download Marking: Keeps track of downloaded files for easier management.
- Size & Time Estimates: Preview total download size and ETA before starting, with cancelable calculations.
- Large-List Handling: Channels can be fetched in batches with
Fetch Next, and playlists use configurable fetch limits to keep fetching responsive. - Thumbnail Previews & Downloads: See thumbnails as soon as items are fetched, and save them with your downloads.
- Playlist Downloads: Download all or some videos from a playlist URL.
- Channel Downloads: Download all or some videos from a channel URL.
- Single Video or Audio Downloads: Paste any supported link (YouTube, Vimeo, Twitch, SoundCloud, Facebook, Instagram, Twitter/X, TikTok, Udemy*, Reddit, and more via yt-dlp) and download it. Bulk channel and playlist fetching remains YouTube-only.
- Runtime Detection: Get guided prompts if an optional JavaScript runtime for yt-dlp is missing.
- Browser-Cookie Login for Restricted YouTube Content: Reuse a signed-in browser profile for private, age-restricted, or premium YouTube content.
*Some providers (for example, Udemy or other premium services) still require valid browser cookies or provider-specific credentials. The in-app browser-cookie login flow is primarily intended for restricted YouTube downloads.
- Download history tracking
- Suggest a feature!
The easiest way to get the desktop app is straight from PyPI. Make sure FFmpeg is installed (see below), then run:
pip install yt-channel-downloaderIf you don't have pip, you can use python -m pip instead.
The package depends on yt-dlp[default], so the Python install will also pull in yt-dlp's recommended companion components such as yt-dlp-ejs. You still need an external JavaScript runtime like Deno or Node.js installed separately on your system for the best YouTube support.
To update the app to the latest version from PyPI:
pip install --upgrade yt-channel-downloader
yt-channel-downloader- Download the latest
.debfrom the releases page (or build one with./scripts/create_binary.shthen./scripts/create_deb.sh). - Install it with
aptso dependencies are resolved:
sudo apt install ./yt-channel-downloader_<version>_<arch>.deb- Launch with:
yt-channel-downloaderffmpeg is needed for the app to work correctly, so make sure you have it on your system. Check in your terminal emulator if ffmpeg is installed:
ffmpeg -version
You can download it from FFmpeg's official site or install it from a repository according to your OS distribution.
On MacOS with Homebew:
brew install ffmpeg
On Debian/Ubuntu:
sudo apt update
sudo apt install ffmpeg
On Fedora:
sudo dnf install ffmpeg
On Arch Linux:
sudo pacman -S ffmpeg
yt-dlp can use a JavaScript runtime to parse YouTube player code; having one installed reduces missing formats and silences runtime warnings. The Python dependency install includes yt-dlp's default extras, but it does not install an external runtime for you. Install any of:
- Node.js via your package manager:
- Debian/Ubuntu:
sudo apt update && sudo apt install nodejs npm - Fedora:
sudo dnf install nodejs npm - Arch Linux:
sudo pacman -S nodejs npm - macOS (Homebrew):
brew install node
- Debian/Ubuntu:
- Deno (alternative runtime): see install instructions at deno.com
git clone https://github.com/hyperfield/yt-channel-downloader.git
cd yt-channel-downloader
python3 -m venv .venv
For bash/zsh:
source .venv/bin/activate
For fish:
source .venv/bin/activate.fish
pip install -e .
yt-channel-downloader
To deactivate the virtual environment after usage, type
deactivate
ffmpeg is needed for the app to work correctly, so make sure you have it on your system. Open the command line (CMD) and type
ffmpeg -version
to check if it's on your system.
-
Download
ffmpeg:- Visit the official FFmpeg download page.
- Alternatively, you can use this direct link: Download FFmpeg for Windows.
-
Extract the files:
- Extract the downloaded archive to a directory, such as
C:\ffmpeg.
- Extract the downloaded archive to a directory, such as
-
Add
ffmpegto your system PATH:- Open the Start menu and search for "Environment Variables".
- Select "Edit the system environment variables".
- In the "System Properties" window, click on the "Environment Variables" button.
- Under "System variables", find the
Pathvariable and select it. Then click "Edit". - Click "New" and add
C:\ffmpeg\binto the list. Click "OK" to close all the windows.
-
Verify the installation:
-
Open Command Prompt (
CMD). -
Run the following command:
ffmpeg -version
-
You should see the version information for
ffmpegif it is correctly installed.
-
yt-dlp can use a JavaScript runtime to parse YouTube player code; having Node.js installed reduces missing formats and silences runtime warnings. The Python package install includes yt-dlp's default extras, but Node.js or Deno must still be installed separately.
- Download and install the LTS version from nodejs.org
- Or with Chocolatey:
choco install nodejs-lts - Or with Scoop:
scoop install nodejs-lts - Alternative runtime: Deno (install instructions on the homepage)
Install or upgrade the app with pip (PowerShell or Command Prompt):
python -m pip install --upgrade yt-channel-downloader
yt-channel-downloader-
Clone the repo and open PowerShell in the project root.
-
Create and activate a virtual environment:
python -m venv .venv .venv\Scripts\activate -
Install the project in editable mode:
pip install -e . -
Launch the app:
yt-channel-downloader
-
Deactivate the environment when finished with
deactivate.
- Open the application and input a YouTube channel, playlist, or video URL.
- Go to
File -> Settingsand set your download preferences, including fetch limits for channels and playlists if needed. - Press Fetch & Replace to replace the current list, or Fetch & Add to append new items to the existing list.
- Review thumbnails, the size/ETA preview, and the title search field; select the items you want to download.
- If you fetched a channel, use Fetch Next to load the next batch.
- Hit the Download button.
- Fetch limits:
File -> Settingslets you control the maximum number of videos fetched per channel and per playlist. - Proxy support: The Settings dialog includes
HTTPS,SOCKS4, andSOCKS5proxy options. - Browser cookies: Use
File -> Use Browser Cookies for Loginto choose a signed-in browser profile for restricted YouTube downloads. Once configured, the menu item changes toClear Login. - Application logs: If something fails and you want to report it, check the app log in the config directory under
logs/application.log. On Linux this is typically~/.config/yt_chan_dl/logs/application.log.
Please see CONTRIBUTING.md for the contribution workflow, commit message conventions, and attribution guidelines. Issues and pull requests are welcome.
This project is licensed under the MIT License. See the LICENSE file for details.
- hyperfield - Initial work and Documentation - hyperfield
See also the list of contributors who participated in this project.
If you like this application and want to support future development, I'll appreciate your donation via Ko-Fi or crypto. :)
Bitcoin: bc1pglp2m26kqatgm6z8vtuhk66jd74ghv948wtyhtgtj6wh30nzz6csjajv00
Ethereum: 0x9CEf6B928BF9fFd894ca83db1B822820917ca89a
Tron: TGq2z17jq8UruCNyyD5GU3weuyJSyM2zBp
Binance Smart Chain: 0x863F8f3fC38b7540110462884809621e2B9EE399



