YTSDownloader - A powerful desktop tool for downloading short-form videos from YouTube, Instagram, Facebook, and TikTok with automatic watermarking support. Built with PyQt6 and designed for content creators who need bulk downloads with brand protection.
- YouTube: Download Shorts, videos, and entire channel content
- Instagram: Extract Reels, posts, and profile videos
- Facebook: Download videos from pages and posts
- TikTok: Download videos from profiles and individual posts
- Bulk Download: Extract and download multiple videos in one operation
- Custom Watermark: Add your unique PNG watermark to all downloaded videos
- Automatic Processing: Watermark is automatically applied during download
- Content Protection: Protect your content with branded watermarks
- Position Control: Watermark positioning and sizing options
- Authentication Support: Browser cookies or cookie file authentication
- JavaScript Runtime: Node.js runtime support for enhanced extraction
- Progress Tracking: Real-time progress bars for downloads and processing
- Metadata Caching: Smart caching system for faster repeated downloads
- Format Selection: Choose between WebM and MP4 output formats
- Theme Support: Customizable dark themes via
themes/directory
- Modern GUI: Clean PyQt6 interface with custom title bar
- Tab-Based Interface: Separate tabs for each platform
- Logging System: Detailed logs for troubleshooting
- Error Handling: Graceful error handling with informative messages
- Original Names Tracking: Saves original video titles for reference
- Python 3.8+ (for development)
- FFmpeg installed and available in PATH
- PyQt6 and dependencies
-
Clone Repository
git clone https://github.com/VoxHash/YTSDownloader.git cd YTSDownloader -
Create Virtual Environment
python -m venv .venv # On Windows .venv\Scripts\activate # On macOS/Linux source .venv/bin/activate
-
Install Dependencies
pip install -r requirements.txt
-
Install FFmpeg
- Windows: Download from FFmpeg.org and add to PATH
- macOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg(Debian/Ubuntu) orsudo dnf install ffmpeg(Fedora)
-
Configure Settings
- Copy
config.iniand update settings:THEME: Choose theme fromthemes/directoryCOOKIES_FROM_BROWSER: Browser name (e.g.,chrome,firefox) for authenticationCOOKIES_FILE: Path to cookies file (alternative to browser cookies)JS_RUNTIME: JavaScript runtime (e.g.,node)JS_RUNTIME_PATH: Path to JavaScript runtime executable
- Copy
-
Run YTSDownloader
python main.py
-
Launch Application
python main.py
-
Select Platform Tab
- Choose the appropriate tab: YouTube, Instagram, Facebook, or TikTok
-
Configure Settings
- Output Folder: Click "Browse" to select where videos will be saved
- Platform URL: Enter channel/profile URL or individual video URL
- Watermark (Optional): Browse and select PNG watermark image
- Output Format: Choose WebM or MP4
-
Start Download
- Click "Start Download" button
- Monitor progress via progress bar
- Check logs tab for detailed information
- Channel URL:
https://www.youtube.com/@channelnameorhttps://www.youtube.com/c/channelname - Video URL:
https://www.youtube.com/watch?v=VIDEO_ID - Shorts URL:
https://www.youtube.com/shorts/VIDEO_ID - Downloads from both
/videosand/shortstabs automatically
- Profile URL:
https://www.instagram.com/username/ - Post URL:
https://www.instagram.com/p/POST_ID/ - Reel URL:
https://www.instagram.com/reel/REEL_ID/
- Page URL:
https://www.facebook.com/pagename - Post URL:
https://www.facebook.com/pagename/posts/POST_ID - Video URL:
https://www.facebook.com/watch/?v=VIDEO_ID
- Profile URL:
https://www.tiktok.com/@username - Video URL:
https://www.tiktok.com/@username/video/VIDEO_ID
- Open
config.ini - Set
COOKIES_FROM_BROWSERto your browser:Supported:COOKIES_FROM_BROWSER = chromechrome,firefox,edge,opera,brave
- Export cookies from your browser (use browser extension)
- Save as
cookies.txtorcookies.json - Set
COOKIES_FILEinconfig.ini:COOKIES_FILE = /path/to/cookies.txt
- Install Node.js
- Set
JS_RUNTIMEandJS_RUNTIME_PATHinconfig.ini:JS_RUNTIME = node JS_RUNTIME_PATH = /path/to/node
-
Prepare Watermark
- Use PNG format with transparency
- Recommended size: 200-400px width
- Keep file size reasonable (< 500KB)
-
Apply Watermark
- Click "Browse" next to "Watermark (PNG)"
- Select your watermark image
- Watermark will be automatically applied to all downloaded videos
| Setting | Description | Default | Example |
|---|---|---|---|
THEME |
Theme directory name | DarkFreeze |
DarkFreeze |
COUNT_TIMER_ONGOING |
Timer count for ongoing operations | 2 |
2 |
COOKIES_FROM_BROWSER |
Browser name for cookie extraction | (empty) | chrome |
COOKIES_FILE |
Path to cookies file | (empty) | /path/to/cookies.txt |
JS_RUNTIME |
JavaScript runtime name | node |
node |
JS_RUNTIME_PATH |
Path to JavaScript runtime | (empty) | /usr/bin/node |
-
Create Theme Directory
mkdir themes/MyTheme
-
Add Style File
- Copy
themes/DarkFreeze/style.qssas reference - Customize colors, fonts, and styles
- Update
config.inito use your theme
- Copy
-
Add Theme Assets
- Place images in
themes/MyTheme/images/ - Update paths in
style.qssif needed
- Place images in
- YouTube: All formats supported by yt-dlp
- Instagram: Reels, posts, IGTV videos
- Facebook: Page videos, post videos
- TikTok: Profile videos, individual videos
- WebM: Web-optimized format (default)
- MP4: Universal compatibility format
-
Clone Repository
git clone https://github.com/VoxHash/YTSDownloader.git cd YTSDownloader -
Setup Development Environment
python -m venv .venv source .venv/bin/activate # or .venv\Scripts\activate on Windows pip install -r requirements.txt
-
Run Development Version
python main.py
YTSDownloader/
βββ main.py # Main application (670 lines)
βββ requirements.txt # Python dependencies
βββ config.ini # Configuration file
βββ LICENSE # MIT License
βββ README.md # Project overview
βββ CHANGELOG.md # Version history
βββ CONTRIBUTING.md # Contribution guidelines
βββ ROADMAP.md # Development roadmap
βββ DEVELOPMENT_GOALS.md # Development goals
βββ GITHUB_TOPICS.md # GitHub topics
βββ themes/ # Theme directory
β βββ DarkFreeze/ # Default theme
β βββ style.qss # Stylesheet
β βββ images/ # Theme assets
βββ docs/ # Documentation
βββ index.md # Documentation index
βββ getting-started.md # Getting started guide
βββ configuration.md # Configuration guide
βββ usage.md # Usage guide
βββ troubleshooting.md # Troubleshooting guide
"Sign in to confirm you're not a bot" error:
- Set up authentication via
COOKIES_FROM_BROWSERorCOOKIES_FILEinconfig.ini - Ensure cookies are valid and not expired
- Try using JavaScript runtime (
JS_RUNTIME)
"No supported JavaScript runtime" warning:
- Install Node.js and set
JS_RUNTIME_PATHinconfig.ini - Or ignore if downloads work without it (some formats may be missing)
FFmpeg not found:
- Install FFmpeg and ensure it's in your system PATH
- Verify installation:
ffmpeg -version
Watermark not appearing:
- Ensure watermark is PNG format with transparency
- Check file path is correct
- Verify watermark file is readable
Downloads failing:
- Check internet connection
- Verify URL format is correct
- Check authentication settings
- Review logs tab for detailed error messages
Theme not loading:
- Verify theme directory exists in
themes/ - Check
style.qssfile exists in theme directory - Ensure
THEMEsetting inconfig.inimatches directory name
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: See
docs/folder for detailed guides - Creator: VoxHash LLC
See CHANGELOG.md for detailed version history and upcoming features.
We welcome contributions! Please see our Contributing Guide for details.
- Changelog - Version history and upcoming features
- Contributing Guide - How to contribute to YTSDownloader
- Roadmap - Development roadmap and future plans
- Development Goals - Detailed development objectives
- GitHub Topics - Repository topics and tags
- Getting Started - Detailed getting started guide
- Configuration - Configuration options
- Usage Guide - Detailed usage instructions
- Troubleshooting - Common issues and solutions
This project is licensed under the MIT License - see the LICENSE file for details.
- yt-dlp - Powerful video downloader backend
- PyQt6 - Cross-platform GUI framework
- moviepy - Video processing and watermarking
- FFmpeg - Media processing backend
- Community - Feedback and contributions
Made with β€οΈ by VoxHash LLC
YTSDownloader - Download and protect your content with ease! π¬β¨