Skip to content

lvcoi/ytdl-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

615 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ytdl-gopher

ytdl-go

A powerful, blazing-fast YouTube downloader written in Go โ€” now with a full Web UI.

v0.2.0-beta Go Version License Docs


TL;DR

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.


โœจ Features

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

๐Ÿš€ Quick Start

# 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 -web
Build 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 --web

๐ŸŒ Web UI

The 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 -web

What 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.

Screenshots

Note: Screenshots below show the UI with sample data. Your instance will look similar after downloading content.

Dashboard Download Library
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.

Interactive CLI (TUI)

The command-line interface includes a visual format selector:

ytdl-go -list-formats "https://youtube.com/watch?v=..."

Interactive Format Selector


๐Ÿ› ๏ธ Tech Stack

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)

๐Ÿ“– Documentation

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

๐Ÿ”ง Troubleshooting

Common issues
  • 403 Forbidden โ€” Automatic retries handle most cases. Try -timeout 10m if persistent.
  • Restricted content โ€” Private / age-gated videos are not yet supported.
  • Port in use โ€” ytdl-go -web auto-falls back to the next available port.
  • Missing thumbnails โ€” Re-download to generate sidecar metadata used by the library.

๐Ÿ™ Acknowledgments

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

About

A powerful, fast, and feature-rich YouTube and YouTube Music downloader CLI written in Go.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages