ytdl-go downloads YouTube videos, audio, and playlists โ fast. Use it from the command line or launch the brand-new Web UI (ytdl-go -web). Parallel downloads, automatic retries, resume support, ID3 tagging, multi-account profiles, playlist management, and an interactive TUI format selector are all built in.
v0.2.0 Beta is out! This release introduces the Web UI with a customizable dashboard, media library with built-in player, real-time download progress, multi-account support, queue & playlist management, and a responsive collapsible sidebar โ all served from a single binary. The CLI works exactly as before.
๐ Full documentation lives on the docs site and the GitHub Wiki โ installation guides, CLI reference, architecture docs, and more.
| Feature | Description |
|---|---|
| ๐ Parallel Downloads | Multiple concurrent downloads with retry & resume |
| ๐ Web UI | Dashboard, download queue, media library & player |
| ๐ฎ Interactive TUI | Browse and pick formats visually with -list-formats |
| ๐ต Audio & Video | Videos, audio-only, playlists, YouTube Music |
| ๐ท๏ธ Metadata | Automatic ID3 tags, JSON sidecars, custom templates |
| ๐ค Multi-Account | Per-account state isolation with profile switching |
| ๐ถ Playlists & Queue | Create playlists, assign songs to multiple lists, reorder queue |
| ๐ฑ Responsive UI | Collapsible sidebar, gallery/list view modes, mobile-friendly layout |
| โ๏ธ Automation | JSON output, quiet mode, custom output paths |
# Install (requires Go 1.24+)
go install github.com/lvcoi/ytdl-go@latest
# Download a video
ytdl-go "https://youtube.com/watch?v=..."
# Download audio only
ytdl-go -audio "https://youtube.com/watch?v=..."
# Launch the Web UI
ytdl-go -webBuild from source (with Web UI)
git clone https://github.com/lvcoi/ytdl-go.git && cd ytdl-go
# Build everything and launch the UI
./build.sh --webThe v0.2.0 Web UI is a SolidJS single-page app served directly by the Go backend โ no separate process needed.
Launch it with:
ytdl-go -webWhat you get:
- Dashboard โ Customizable widget grid with drag-and-drop layout, recent activity, quick download, and system stats.
- Download View โ Paste one or more URLs, pick format & quality, and watch real-time progress over a WebSocket connection.
- Media Library โ Browse all downloaded media with thumbnail gallery or list view, search, filters (Music / Videos / Podcasts), sortable columns, and hover-reveal actions.
- Built-in Player โ Floating audio/video player with queue support (add, remove, reorder, clear) and minimized mode. Queue persists across page refreshes.
- Playlists โ Create custom playlists, assign songs to multiple playlists via checkbox UI, and play or queue entire playlists at once.
- Multi-Account โ Switch between profiles (e.g. Personal / Work) with per-account state isolation and independent localStorage.
- Collapsible Sidebar โ Responsive navigation that auto-collapses on mobile, with hover tooltips in collapsed mode.
- Settings โ Configure concurrency, storage paths, network options (cookie usage, PO Token), with nested sub-navigation.
- Toast Notifications โ Success/error feedback with 3-second auto-dismiss.
Note: Screenshots below show the UI with sample data. Your instance will look similar after downloading content.
| Dashboard | Download | Library |
|---|---|---|
![]() |
![]() |
![]() |
Glassmorphic dark UI with cyan/emerald accents โ sidebar navigation, drag-and-drop dashboard widgets, real-time download progress, and a thumbnail gallery with built-in player.
The command-line interface includes a visual format selector:
ytdl-go -list-formats "https://youtube.com/watch?v=..."| Layer | Technology |
|---|---|
| Backend | Go 1.24 |
| Frontend | SolidJS + Tailwind CSS v4 |
| TUI | Bubble Tea + Lip Gloss |
| Database | SQLite via modernc.org/sqlite (pure Go) |
| Real-time | WebSocket (gorilla/websocket) |
| Media | FFmpeg (muxing & metadata), ID3v2 (audio tags) |
| Icons | Lucide |
| Docs | Zensical (Material Design docs) |
| Build | Vite (frontend), go build (backend) |
Detailed docs are available in two places โ pick whichever you prefer:
| Source | Link |
|---|---|
| ๐ Docs Site | lvcoi.github.io/ytdl-go โ full documentation with search, navigation, and Material Design theme |
| ๐ GitHub Wiki | github.com/lvcoi/ytdl-go/wiki โ same content, accessible directly from the repo |
Both cover:
| Section | What's There |
|---|---|
| User Guide | Installation, quick start, format selection, playlists, output templates, troubleshooting |
| Developer Guide | Architecture, API reference, contributing, best practices |
| CLI Reference | Full list of command-line flags |
Common issues
- 403 Forbidden โ Automatic retries handle most cases. Try
-timeout 10mif persistent. - Restricted content โ Private / age-gated videos are not yet supported.
- Port in use โ
ytdl-go -webauto-falls back to the next available port. - Missing thumbnails โ Re-download to generate sidecar metadata used by the library.
ytdl-go stands on the shoulders of these projects:
- yt-dlp โ The gold standard YouTube downloader. ytdl-go was heavily inspired by yt-dlp's feature set and approach.
- kkdai/youtube โ The original Go YouTube library that ytdl-go forked and extended as ytdl-lib.
- Charm โ Bubble Tea, Bubbles, and Lip Gloss power the interactive terminal UI.
- SolidJS โ The reactive framework behind the Web UI.
- Zensical โ Documentation site generator (Material Design).
- Gorilla WebSocket โ Real-time communication in the Web UI.
Made with โค๏ธ by the ytdl-go team
License ยท Report Issue ยท Docs Site ยท Wiki



