
Lux
A command-line tool and Go library for downloading videos from many websites.
- Stars
- 31.8k
- Forks
- 3.3k
- Licence
- MIT
- Language
- Go
- Last update
- 7 months ago
- Type
- CLI
What it is
Lux is a video downloader you run from the terminal. You give it a web page address, and it finds the video streams on that page and saves them to your computer. It can also be used as a Go library by other programs. The README describes it as fast and simple, and it lists quality choices, playlist support, and resume after interruption.
- Download a YouTube video at a chosen quality with lux -f followed by a stream ID
- List all available qualities for a video with lux -i before downloading
- Download a bilibili playlist or a range of episodes using -start, -end, or -items
- Save a list of URLs from a file using the -F option
- Resume an interrupted download by running the same command again
Great for
- People who want to save videos from supported sites to a local file from the command line
- Users who want to pick a specific video quality before downloading
- Go developers who want to reuse video extraction logic in their own programs
- People downloading playlists or batches of links from a text file
Not ideal for
- People who prefer a graphical app, since the README describes only command-line usage
- Anyone needing a site not on the supported list, since the README says unsupported URLs are only attempted as direct file downloads
- Users who need merged audio and video output without installing FFmpeg, since the README lists FFmpeg as a required separate dependency for merging
How to get it
- 1
Install with a package manager
You'll need: Go (for go install) · FFmpeg
Install via go install
go install github.com/iawia002/lux@latestInstall on macOS with Homebrew
brew install lux - 2
Run it
- Install FFmpeg and Lux using one of the methods above
- Run lux -i with a video URL to list available qualities
- Run lux -f with the chosen stream ID and the same URL to download it
- 3
Get the most out of it
- Use -i to preview all streams and sizes before downloading
- Use -items or -start and -end to limit which playlist entries are downloaded
- Use -F to feed many URLs from a text file in one run
- Use -c to provide cookies when a site requires login, as described in the README
- Use -retry to change the number of automatic retries (default 100)
Downloads
Strengths
- Simple command-line interface with clear quality listing
- Supports resuming interrupted downloads and automatic retries
- Available through several package managers and as a Go library
Trade-offs
- Requires FFmpeg installed separately for final file merging
- Some site support is noted as known issues in the README, such as certain Youku and Xigua/Toutiao videos
- Site support depends on the project keeping up with changes on each website, which the README does not detail
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| lux (this) | 31.8k | CLI | beginner | 7 months ago | People who want to save videos from supported sites to a local file from the command line |
| YoutubeDownloader | 16.6k | App | beginner | 4 days ago | People who want to keep a local copy of YouTube videos or playlists |
| webrtc | 16.9k | Library | advanced | 5 days ago | Go developers who need to add WebRTC connections to a server or application |
| social-auto-upload | 16k | CLI | intermediate | 14 days ago | Content creators posting the same video to several platforms |
| newspaper | 15.2k | Library | intermediate | 11 days ago | Python developers building news aggregation or article collection scripts |
| owncast | 11.6k | App | intermediate | 10 days ago | Streamers who want control over their content, interface and moderation |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.