🎬 YTGet — Cross-Platform YouTube Downloader
🌐 Website: erfannamira.github.io/ytget-gui
YTGet GUI is a modern, lightweight, and user-friendly desktop application built with Python and PySide6.
Powered by yt-dlp, it makes downloading YouTube videos, playlists, and music simple and efficient.
- 🖥️ Cross-Platform: Runs seamlessly on Windows, macOS, and Linux.
- 📦 Standalone: Each release comes with all dependencies bundled, so it works right out of the box.
- ⚡ Optimized & Stable: Designed for smooth performance with smart resource handling, and built-in update management.
- 🎵 Versatile: Supports full videos, playlists, and music downloads in multiple formats.
Whether you’re grabbing a single clip or archiving an entire channel, YTGet delivers a polished and seamless experience on every operating system.
🖼 Screenshots
📊 Repository Stats
🌟 Community
🐛 Issues & 🔀 Pull Requests
📥 Downloads
💻 Codebase
⏱️ Activity
☄️ How to Install
⚠️ Some formats are still limited or temporarily unavailable on YouTube itself. These cannot be fixed by the app alone. If a specific format continues to fail, we may need to wait for an yt-dlp update to adapt to changes on YouTube.
🪟 Windows
Installer (recommended)
- Download the latest
YTGet-<version>-windows-setup.exefrom the releases page. - Run it. It installs for the current user only, so no administrator prompt appears.
- Optionally tick the desktop shortcut and Start YTGet when I sign in during setup.
- Launch YTGet from the Start menu. Uninstall from Settings → Apps like any other program.
Portable archive
- Download the latest
YTGet-Windows.ziprelease. - Extract the contents.
- Run
YTGet.exe.
🐧 Linux
- Install required dependencies:
sudo apt-get update && sudo apt-get install -y ffmpeg python3-mutagen libxcb-cursor0 libxcb-xinerama0 libxcb-xinput0 libxcb-xfixes0 libxcb-shape0 libxcb-render-util0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxcb-xkb1
- Download the latest
YTGet-Linux.tar.gzrelease. - Extract the contents.
tar -xzf YTGet-Linux.tar.gz
- Make it executable and launch:
chmod +x YTGet
./YTGet
🍎 macOS
- Download the latest release:
- Open Terminal and run:
cd Downloads
- Extract the contents.
tar -xzf YTGet-macOS-arm64.tar
or
tar -xzf YTGet-macOS-x86_64.tar
This will produce a YTGet.app bundle in your current directory.
- Remove Quarantine Flag If you see “cannot be opened because Apple cannot check it for malicious software,” you need to strip the quarantine attribute:
xattr -d com.apple.quarantine YTGet.app
This lets macOS trust your app without popping security dialogs every launch.
- Set Executable Permission
chmod +x YTGet.app/Contents/MacOS/YTGet
- Move to Applications (Optional)
For a cleaner setup, drag YTGet.app into your /Applications folder or run:
mv YTGet.app /Applications/
- Launch YTGet
Choose one:
- From Finder: double-click /Applications/YTGet
- From Terminal:
open /Applications/YTGet.app
- Download yt-dlp via Menu Bar → Help → Check yt-dlp Update.
🐍 PyPI Installation
YTGet GUI depends on FFmpeg to process and convert media. Follow these steps to get everything up and running:
1️⃣ Install YTGet GUI
pip install ytget-gui
2️⃣ Set Up FFmpeg
Choose one of the two methods below:
2.1 Add FFmpeg to Your PATH (Recommended)
-
Download the latest FFmpeg build for your platform from this Link.
-
Extract the archive.
-
Add the bin/ directory to your system PATH:
On Windows: update Environment Variables → Path.
On macOS/Linux: edit ~/.bashrc or ~/.zshrc with
export PATH="/path/to/ffmpeg/bin:$PATH" -
Verify installation:
ffmpeg -version
2.2 Copy Binaries into the YTGet Folder (Alternative)
-
Download the static FFmpeg binaries for your OS.
-
Copy ffmpeg (or ffmpeg.exe) and ffprobe (or ffprobe.exe) into the same directory where the ytget-gui executable lives.
🔄 How to Update (PyPI version)
To upgrade your PyPI installation to the latest release:
pip install --upgrade ytget-gui
This command fetches and installs the newest version, replacing your current one automatically.
✨ Extra Tips You Might Find Useful
- On macOS, you can also use Homebrew:
brew install ffmpeg
- On Debian/Ubuntu:
sudo apt update && sudo apt install ffmpeg
✨ Features
🖥️ Interface
- 🎯 Clean Qt GUI — Intuitive layout with dark-friendly visuals.
- 🛑 Cancel Anytime — Gracefully stop downloads at any moment.
- 🔒 Offline Capable — No Python installation required.
📥 Download Options
- 📹 Multiple Formats — Download videos from 480p up to 8K.
- 🔁 Same Link, Several Formats — Queue one video as 1080p and MP3; each format is its own row.
- 📏 Size Estimates — Every queued item shows its approximate download size (video + audio).
- 🎵 MP3/FLAC Mode — High-quality audio extraction with embedded thumbnails & metadata.
- 📄 Subtitles — Auto-fetch subtitles (multi-language).
- 📂 Playlist Support — Download entire playlists in audio/video mode.
🔧 Advanced Features
- ⚙️ Persistent Settings — All settings saved to
config.json. - 🚀 Improved Playlist Support — Reverse order, select items, archive tracking.
- ✂️ Clip Extraction — Download video portions by start/end time, applied only to the item you are adding.
- ⏭️ SponsorBlock — Skip sponsored content, intros, and outros.
- 🧩 Chapters Handling — Embed or split videos by chapters.
- 🎼 YouTube Music Metadata — Accurate music info and album data.
🛠 Functionality
- 🌐 Proxy Support — Configure proxies for downloads.
- 📅 Date Filter — Download videos uploaded after a specified date.
- 🧪 Custom FFmpeg Args — Add advanced arguments for power users.
- 🔊 Audio Normalization — Uniform volume for all downloads.
- 🗃 Channel Organization — Auto-sort videos into uploader folders.
- ⚡ Performance Enhancements — Smart rate limiting, retry logic, a fast cold start, background queue saves, and a queue that stays smooth with hundreds of items.
- 🛑 Instant Stop & Quit — Stopping, skipping or closing interrupts every helper process (yt-dlp, ffmpeg, metadata and thumbnail lookups) right away.
- 🌐 Unlisted Site Policy — Links from sites outside your watcher list can be queued automatically, confirmed first, or ignored.
🧰 How to Use
- ▶️ Launch
YTGet. - 🔗 Paste a YouTube URL.
- 🎚️ Select format (e.g., 1080p MKV or MP3).
- ⚙️ Optional: open ADVANCED to set a clip range or playlist selection. It applies only to the items you add next, and the button shows a dot while it is armed.
- ⬇️ Click ➕ Add to Queue. To grab the same link in another format, pick a different format and add it again — you get a second row.
- ⬇️ Click ▶️ Start Queue.
📁 Output
- ✅ Clean filenames:
%(title)s.extby default - 🏷️ Per-site naming (Preferences → Output): choose a separate filename
style for YouTube, YouTube Music and Other sites, each split
into Video and Audio — e.g.
Artist - Track # Titlefor music andUploader - Titlefor videos. Every slot starts on Use general setting, so nothing changes until you pick something. - 🩺 Logs and crash reports are kept in the data folder under
logs(ytget.log,crash.log); open them with Help → Open Logs Folder and attach them to bug reports. - 🎵 Audio downloads include:
- Embedded album art
- Metadata tags (artist, title, etc.)
- 🔀 Two different uploads with the same title (for example a single and the
album version on a YouTube Music "Topic" channel) are both kept: the second
one is saved as
Title [video-id].ext. You may see a one-line note about this in the log — it is expected, and the existing file is left untouched.
🧩 Format Options
| Format | Description |
|---|---|
| 🎞️ 480p–8K | MKV, MP4, WebM video with merged best audio |
| 🎵 FLAC Audio | High-quality audio with tags & thumbnails |
| 🎵 MP3 Audio | High-quality audio with tags & thumbnails |
| 📃 Playlist MP3 | Batch audio extraction from playlists |
🔒 Cookies Support
For age-restricted or private content:
- Export cookies using Get cookies.txt extension.
- Place the file in
_internal/cookies.txt.
⚙️ Requirements
- ✅ No installation needed — unzip and run, or use the Windows installer.
- 🪟 Windows 10+ (64-bit).
🔧 Development Setup
Prerequisites
- Python 3.13+
- FFmpeg (Add to PATH or project folder)
Setup
# Clone the repo
git clone https://github.com/ErfanNamira/ytget-gui.git
# Navigate to project
cd ytget-gui
# Create & activate virtual environment
python -m venv venv
# Linux/Mac
source venv/bin/activate
# Windows
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run app
python -m ytget_gui
🤝 Contribution Guide
-
Fork & clone the repo
-
Create a feature branch: git checkout -b my-feature
-
Commit & push: git commit -m "msg" && git push origin my-feature
-
Open a Pull Request
📄 License
This project is licensed under the MIT License. See the LICENSE file for full details.
📦 Download
Metadata
Release files for ytget-gui 2.8.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ytget_gui-2.8.4.0.tar.gz | 291.7 kB | Without provenance | Details for ytget_gui-2.8.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ytget_gui-2.8.4.0-py3-none-any.whl | Python 3 | none | any | Details for ytget_gui-2.8.4.0-py3-none-any.whl |
Total release size: 575.4 kB
Release files / ytget_gui-2.8.4.0.tar.gz
| Download URL | ytget_gui-2.8.4.0.tar.gz |
|---|---|
| Size | 291.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e08ad8a19fade29e0ebb95d245a761a89910023fc9d8cb7181f50aa481d08b98
|
|
BLAKE2b-256 checksum How to use checksums |
96a6d8111ca3ae6832aa985565b4ecaf5f4654e61d6557aabe6e57bbce803d68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.15.1
|
Release files / ytget_gui-2.8.4.0-py3-none-any.whl
| Download URL | ytget_gui-2.8.4.0-py3-none-any.whl |
|---|---|
| Size | 283.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ef376a3d5bc3bebc88a888beb67446daaca7d905659b8b94aa54bc1245775994
|
|
BLAKE2b-256 checksum How to use checksums |
7c414babe0cfcfd403dd9687bc6f0d83d42bc9a313ba0f39ae837206501ce333
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.15.1
|
Security for ytget-gui 2.8.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.