A complete YouTube downloading toolkit with CLI, desktop app, web UI (Docker), and browser extension. Powered by yt-dlp.
- Single video or full playlist/collection download
- Format selection (mp4, webm, mkv, etc.)
- Quality selection (720p, 1080p, 2160p, etc.)
- Time-range clipping for downloading specific segments
- Automatic subtitle download (English and Chinese by default)
- Download tracking with JSON or CSV logs
- Subtitle-to-video mapping file generation
- Interactive TUI with live progress bars
- Playlist resume capability - continue interrupted downloads
- Cross-platform GUI (macOS, Linux, Windows)
- Built with Tauri v2 + Next.js + React 19
- Single, Batch, and Smart download modes
- Batch mode — paste multiple URLs or import from
.txtfile - Smart mode — batch download with automatic playlist detection
- Download queue with configurable concurrency (1-5 simultaneous downloads)
- Real-time download logs and progress tracking
- Download status persistence in SQLite database
- Retry failed downloads with one click
- Settings and configuration persistence
- AI-powered video summarization
- Multiple language support (English, 中文, 日本語)
- Cross-platform Python launcher script
- Deploy as a web application via Docker Compose
- Same features as the desktop app, accessible from any browser
- Ideal for NAS, Raspberry Pi, and headless servers
- Real-time updates via WebSocket
- Persistent SQLite database and download storage
- Extract video URLs from YouTube channel and playlist pages
- Filter by count, include/exclude keywords
- Export selected URLs to text file
- Batch download support
- Go 1.24+ - For the CLI
- Node.js 18+ and pnpm - For the desktop app
- Rust - For the Tauri desktop backend
- yt-dlp - Required by CLI and Desktop
- Python 3.6+ - For cross-platform launcher and batch scripts
- Docker & Docker Compose - For the web UI (optional)
cd vYtDL
go build -o vYtDL .cd vYtDL-desktop
pnpm install# Start the web server
docker-compose up -d
# Access at http://localhost:3000- Open Chrome, navigate to
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select the
url-extractor/directory
# Download a single video
./vYtDL download --no-tui "https://www.youtube.com/watch?v=VIDEO_ID"
# Download a playlist
./vYtDL download --no-tui --playlist --output ./downloads "PLAYLIST_URL"cd vYtDL-desktop
# Check dependencies
python3 scripts/build-desktop.py check
# Development mode
python3 scripts/build-desktop.py dev
# Build production app
python3 scripts/build-desktop.py build
# Build + create distributable package
python3 scripts/build-desktop.py bundle# Deploy
docker-compose up -d
# View logs
docker-compose logs -f vytdl-web
# Stop
docker-compose downSee USAGE.md for detailed CLI usage and docs/ for full project documentation.
├── vYtDL/ # Go CLI application
├── vYtDL-desktop/ # Desktop app (Tauri + Next.js monorepo)
│ ├── apps/desktop/ # Desktop application
│ ├── packages/ui/ # Shared UI components
│ ├── packages/utils/ # Shared utilities
│ ├── scripts/ # Startup scripts
│ └── web-server/ # Docker web API server
├── url-extractor/ # Chrome extension
├── docker-compose.yml # Docker Compose for web UI
├── docs/ # Documentation
└── tasks/ # Task definitions (PRDs)
MIT