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 | ๐ Proxy Support |
Install YTSage from PyPI:
pip install ytsageThen launch the app:
ytsage| Format | Description |
|---|---|
| Standard installer | |
| With FFmpeg bundled | |
| Portable version, no installation required | |
| Portable with FFmpeg, zipped |
| Format | Description |
|---|---|
| Debian package | |
| AppImage, portable | |
| RPM package |
| Format | Description |
|---|---|
| Zipped application for ARM64 | |
| Disk image installer for ARM64 | |
| Zipped application for x64 | |
| Disk image installer for x64 |
๐ ๏ธ Manual Installation from Source
git clone https://github.com/oop7/YTSage.git
cd YTSageuv pip install -r requirements.txtpip install -r requirements.txtpython main.py๐ฏ Basic Usage
- Launch YTSage
- Paste YouTube URL (or use "Paste URL" button)
- Click "Analyze"
- Select Format:
Videofor video downloadsAudio Onlyfor 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:- Recommended: Use the built-in "Extract cookies from browser" option in the app. Select your browser (Chrome, Firefox, etc.) and then select Profile (optional).
- Alternatively, extract cookies manually:
a. Extract cookies from your browser using an extension like cookie-editor
b. Copy the cookies in Netscape format
c. Create a file named
cookies.txtand paste the cookies into it d. Select thecookies.txtfile 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)
- Proxy Support: Use a proxy server for downloads (e.g.,
http://<proxy-server>:<port>)
๐ Localization
YTSage supports 14 languages for worldwide accessibility. Select your preferred language from Custom Options โ Language.
| Language | Code | Language | Code |
|---|---|---|---|
| ๐บ๐ธ English | en |
๐ช๐ธ Spanish | es |
| ๐ธ๐ฆ Arabic | ar |
๐ซ๐ท French | fr |
| ๐ฉ๐ช German | de |
๐ฎ๐ณ Hindi | hi |
| ๐ฎ๐ฉ Indonesian | id |
๐ฎ๐น Italian | it |
| ๐ฏ๐ต Japanese | ja |
๐ต๐ฑ Polish | pl |
| ๐ง๐ท Portuguese | pt |
๐ท๐บ Russian | ru |
| ๐น๐ท Turkish | tr |
๐จ๐ณ Chinese | zh |
๐ก Want to contribute a translation? Check out the Contributing section to help us add more languages!
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.
- Specific download errors:
- Private videos: Use cookie authentication to access private content.
- Age-restricted content: Login to YouTube account to view age-restricted videos.
- Geo-blocked videos: Consider using a VPN to bypass regional restrictions.
- Removed/deleted videos: Video is no longer available on YouTube.
- Live streams: Live streams cannot be downloaded; wait for the stream to end.
- Network errors: Check your internet connection and try again.
- Invalid URLs: Ensure the URL is correct and from a supported platform.
- Premium content: Requires YouTube Premium membership.
- Copyright blocks: Content is blocked due to copyright restrictions.
- 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.exefile, 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 packaged applications.
Why this happens:
- Antivirus heuristics can misidentify packed executables as suspicious
Safe alternatives:
- โ
Use pip installation:
pip install ytsage(recommended) - โ Build from source: by following this guide
- โ Whitelist the application in your antivirus software
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.appfile 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/
โโโ ๐ .github/ # GitHub configuration
โ โโโ ๐ CI_CD_README.md # CI/CD documentation
โ โโโ ๐ ISSUE_TEMPLATE/ # Issue templates
โ โ โโโ ๐-bug-report.md # Bug report template
โ โโโ ๐ workflows/ # GitHub Actions workflows
โ โโโ build-linux.yml # Linux build workflow
โ โโโ build-macos.yml # macOS build workflow
โ โโโ build-windows.yml # Windows build workflow
โโโ .gitignore # Git ignore rules
โโโ ๐ assets/ # Static assets and resources
โ โโโ ๐ branding/ # Branding assets
โ โ โโโ ๐ icons/ # Application icons
โ โ โ โโโ icon.icns # macOS icon
โ โ โ โโโ icon.png # PNG icon
โ โ โ โโโ YTSage.ico # Windows icon
โ โ โโโ ๐ screenshots/ # Screenshots for documentation
โ โ โโโ audio_format.png
โ โ โโโ main.png
โ โ โโโ playlist.png
โ โ โโโ subtitle_options.png
โ โ โโโ ๐ svg/ # SVG assets
โ โ โโโ ytsage-wordmark.svg
โ โโโ ๐ Icon/ # Legacy icon directory
โ โ โโโ icon.png
โ โโโ ๐ sound/ # Audio files
โ โโโ notification.mp3
โโโ ๐ languages/ # Localization files
โ โโโ ๐ ar.json # Arabic translation
โ โโโ ๐ de.json # German translation
โ โโโ ๐ en.json # English translation
โ โโโ ๐ es.json # Spanish translation
โ โโโ ๐ fr.json # French translation
โ โโโ ๐ hi.json # Hindi translation
โ โโโ ๐ id.json # Indonesian translation
โ โโโ ๐ it.json # Italian translation
โ โโโ ๐ ja.json # Japanese translation
โ โโโ ๐ pl.json # Polish translation
โ โโโ ๐ pt.json # Portuguese translation
โ โโโ ๐ ru.json # Russian translation
โ โโโ ๐ tr.json # Turkish translation
โ โโโ ๐ zh.json # Chinese translation
โโโ ๐ LICENSE # License file
โโโ ๐ main.py # Application entry point
โโโ ๐ README.md # Project documentation
โโโ ๐ requirements.txt # Python dependencies
โโโ ๐ src/ # Source code
โโโ ๐ __init__.py # Main package init
โโโ ๐ 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
โ โโโ ๐ __init__.py # GUI package init
โ โโโ ๐ ytsage_gui_format_table.py # Format table functionality
โ โโโ ๐ ytsage_gui_main.py # Main application window
โ โโโ ๐ ytsage_gui_video_info.py # Video information display
โ โโโ ๐ ytsage_gui_dialogs/ # Dialog classes
โ โโโ ๐ __init__.py # Dialogs package init
โ โโโ ๐ ytsage_dialogs_base.py # Basic dialogs
โ โโโ ๐ 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
โโโ ๐ utils/ # Utility modules
โโโ ๐ __init__.py # Utils package init
โโโ ๐ ytsage_config_manager.py # Configuration management
โโโ ๐ ytsage_constants.py # Application constants
โโโ ๐ ytsage_localization.py # Localization utilities
โโโ ๐ ytsage_logger.py # Logging utilities
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 |
| pyglet | 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