A modern YouTube downloader with a clean PySide6 interface.
Download videos in any quality, extract audio, fetch subtitles, and more.
Installation β’ Features β’ Usage β’ Screenshots β’ Troubleshooting β’ Contributing
YTSage is designed for users who want a simple yet powerful YouTube downloader. Unlike other tools, it offers:
- A clean, modern PySide6 interface
- One-click downloads for video, audio, and subtitles
- Advanced features like SponsorBlock, subtitle merging, and playlist selection
- Cross-platform support and easy installation
Core Features | Advanced Features | Extra Features |
---|---|---|
π₯ Format Table | π« SponsorBlock Integration | πΎ Save Download Path |
π΅ Audio Extraction | π Multi-Subtitle Select & Merge | π Auto-Update yt-dlp |
β¨ Simple UI | πΎ Save Description | π οΈ FFmpeg/yt-dlp Detection |
π Playlist Support | πΌοΈ Save thumbnail | βοΈ Custom Commands |
πΌοΈ Playlist Selector | π Speed Limiter | πͺ Login with Cookies |
π Embed Chapters | βοΈ Trim Video Sections |
Install YTSage from PyPI:
pip install ytsage
Then launch the app:
ytsage
- πͺ Windows:
YTSage-v<version>.exe
/YTSage-v<version>-ffmpeg.exe
(with FFmpeg) - π§ Linux:
YTSage-v<version>-amd64.deb
/YTSage-v<version>-x86_64.AppImage
- π macOS:
YTSage-v<version>-macOS.zip
/YTSage-v<version>.dmg
π οΈ Manual Installation from Source
git clone https://github.com/oop7/YTSage.git
cd YTSage
uv pip install -r requirements.txt
pip install -r requirements.txt
python main.py
π― Basic Usage
- Launch YTSage
- Paste YouTube URL (or use "Paste URL" button)
- Click "Analyze"
- Select Format:
Video
for video downloadsAudio Only
for audio extraction
- Choose Options:
- Enable subtitles & select language
- Enable subtitle merge
- Save thumbnail
- Remove sponsor segments
- Save description
- Embed chapters
- Select Output Directory
- Click "Download"
π Playlist Download
- Paste Playlist URL
- Click "Analyze"
- Select videos from the playlist selector (optional, defaults to all)
- Choose desired format/quality
- Click "Download"
π‘ The application automatically handles the download queue
π§° Advanced Options
- Quality Selection: Choose the highest resolution for best quality
- Subtitle Options: Filter languages and embed into video
- Custom Commands: Access advanced yt-dlp features
- Save Description: Save the description of the video
- Save Thumbnail: Save the thumbnail of the video
- Embed Chapters: Embed chapter markers as metadata in the downloaded video file for compatible video players
- Remove Sponsor Segments: Remove sponsor segments from the video
- Speed Limiter: Limit the download speed
- Login with Cookies: Login to YouTube using cookies to access private content
How to use it:- Extract cookies from your browser using an extension like cookie-editor
- Copy the cookies in Netscape format
- Create a file named
cookies.txt
and paste the cookies into it - Select the
cookies.txt
file in the app
- Save Download Path: Save the download path
- Update yt-dlp: Update yt-dlp
- FFmpeg/yt-dlp Detection: Automatically detect FFmpeg/yt-dlp
- Trim Video: Download only specific parts of a video by specifying time ranges (HH:MM:SS format)
Click to view common issues and solutions
- Format table not displaying: Update yt-dlp to the latest version.
- Download fails: Check your internet connection and ensure the video is available.
- Separate video and audio files after download: This happens when FFmpeg is missing or not detected. YTSage requires FFmpeg to merge high-quality video and audio streams.
- Solution: Ensure FFmpeg is installed and accessible in your system's PATH. For Windows users, the easiest option is to download the
YTSage-v<version>-ffmpeg.exe
file, which comes bundled with FFmpeg.
- Solution: Ensure FFmpeg is installed and accessible in your system's PATH. For Windows users, the easiest option is to download the
Some antivirus software may flag the .exe
files as false positives. This is a known limitation of PyInstaller-packaged applications.
Why this happens:
- PyInstaller bundles Python runtime and libraries together
- Antivirus heuristics can misidentify packed executables as suspicious
- This affects many legitimate Python applications built with PyInstaller
Safe alternatives:
- β
Use pip installation:
pip install ytsage
(recommended) - β Build from source
- β Whitelist the application in your antivirus software
π Related Issues: #33 - This is a known PyInstaller limitation, not a security issue with YTSage itself.
If you see this error on macOS Sonoma or newer, you need to remove the quarantine attribute.
- Open Terminal (you can find it using Spotlight).
- Type the following command but do not press Enter yet. Make sure to include the space at the end:
xattr -d com.apple.quarantine
- Drag the
YTSage.app
file from your Finder window and drop it directly into the Terminal window. This will automatically paste the correct file path. - Press Enter to run the command.
- Try opening YTSage.app again. It should now launch correctly.
- Windows:
%LOCALAPPDATA%\YTSage
- macOS:
~/Library/Application Support/YTSage
- Linux:
~/.local/share/YTSage
We welcome contributions! Here's how you can help:
- π΄ Fork the repository
- πΏ Create your feature branch:
git checkout -b feature/AmazingFeature
- πΎ Commit your changes:
git commit -m 'Add some AmazingFeature'
- π€ Push to the branch:
git push origin feature/AmazingFeature
- π Open a Pull Request
π Project Structure
This document describes the organized folder structure of YTSage.
YTSage-main/
βββ π assets/ # Static assets and resources
β βββ π Icon/ # Application icons
β β βββ icon.png
β βββ π sound/ # Audio files
β βββ notification.mp3
β
βββ π src/ # Source code
β βββ π core/ # Core business logic
β β βββ __init__.py # Core package init
β β βββ ytsage_downloader.py # Download functionality
β β βββ ytsage_ffmpeg.py # FFmpeg integration
β β βββ ytsage_style.py # UI styling
β β βββ ytsage_utils.py # Utility functions
β β βββ ytsage_yt_dlp.py # yt-dlp integration
β β
β βββ π gui/ # User interface components
β β βββ π dialogs/ # Dialog classes
β β β βββ __init__.py # Dialogs package init (re-exports all)
β β β βββ ytsage_dialogs_base.py # Basic dialogs (Log, About)
β β β βββ ytsage_dialogs_custom.py # Custom functionality dialogs
β β β βββ ytsage_dialogs_ffmpeg.py # FFmpeg-related dialogs
β β β βββ ytsage_dialogs_selection.py # Selection dialogs
β β β βββ ytsage_dialogs_settings.py # Settings dialogs
β β β βββ ytsage_dialogs_update.py # Update dialogs
β β β
β β βββ __init__.py # GUI package init
β β βββ ytsage_gui_dialogs.py # Dialog aggregator (backward compatibility)
β β βββ ytsage_gui_format_table.py # Format table functionality
β β βββ ytsage_gui_main.py # Main application window
β β βββ ytsage_gui_video_info.py # Video information display
β β
β βββ __init__.py # Main package init
β
βββ π main.py # Application entry point
βββ π requirements.txt # Python dependencies
βββ π README.md # Project documentation
βββ π LICENSE # License file
βββ π .gitignore # Git ignore rules
This project is licensed under the MIT License - see the LICENSE file for details.
Show Acknowledgments
A heartfelt thank you to everyone who has contributed to this project by opening an issue to suggest an improvement or report a bug.
Core Components | |
---|---|
yt-dlp | Download Engine |
FFmpeg | Media Processing |
Libraries & Frameworks | |
PySide6 | GUI Framework |
Pillow | Image Processing |
requests | HTTP Requests |
packaging | Version & Package Handling |
markdown | Markdown Rendering |
pygame | Audio Playback |
loguru | Logging |
Assets & Contributors | |
New Notification 09 by Universfield | Notification Sound |
viru185 | Code Contributor |
This tool is for personal use only. Please respect YouTube's terms of service and content creators' rights.
Made with β€οΈ by oop7