video-download Download video and audio from URLs using yt-dlp directly. No wrapper scripts needed. Prerequisites yt-dlp : brew install yt-dlp or pip install yt-dlp ffmpeg : brew install ffmpeg or apt install ffmpeg (required for merging video+audio streams) Update yt-dlp periodically to keep up with site changes: yt-dlp -U or pip install -U yt-dlp . Commands Download best quality yt-dlp "URL" -o "%(title)s.%(ext)s" --merge-output-format mp4 Download specific resolution
720p
yt-dlp "URL" -f "bestvideo[height<=720]+bestaudio/best[height<=720]" --merge-output-format mp4
1080p
yt-dlp "URL" -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" --merge-output-format mp4 Audio only yt-dlp "URL" -x --audio-format mp3 --audio-quality 0 Download subtitles
Download video with English subtitles
yt-dlp "URL" --write-subs --sub-langs en --merge-output-format mp4
Download video with multiple subtitle languages
yt-dlp "URL" --write-subs --sub-langs "en,es,fr" --merge-output-format mp4
Download only subtitles (no video)
- yt-dlp
- "URL"
- --write-subs --sub-langs en --skip-download
- Get metadata (no download)
- yt-dlp
- "URL"
- --dump-json --no-download
- List available formats
- yt-dlp
- "URL"
- -F
- Specify output directory
- yt-dlp
- "URL"
- -o
- "./downloads/%(title)s.%(ext)s"
- --merge-output-format mp4
- Quality Presets
- Quality
- Format flag
- Best
- -f "bestvideo+bestaudio/best"
- (default)
- 1080p
- -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]"
- 720p
- -f "bestvideo[height<=720]+bestaudio/best[height<=720]"
- 480p
- -f "bestvideo[height<=480]+bestaudio/best[height<=480]"
- Worst
- -f "worstvideo+worstaudio/worst"
- Output Template Variables
- Common variables for
- -o
- templates:
- Variable
- Description
- %(title)s
- Video title
- %(ext)s
- File extension
- %(id)s
- Video ID
- %(uploader)s
- Channel/uploader name
- %(upload_date)s
- Upload date (YYYYMMDD)
- %(duration)s
- Duration in seconds
- %(resolution)s
- Video resolution
- Tips
- Always use
- --merge-output-format mp4
- to avoid ending up with
- .webm
- or
- .mkv
- files.
- Use
- --no-download
- with
- --dump-json
- for metadata-only queries -- no files written to disk.
- If a download fails with HTTP errors, update yt-dlp first (
- yt-dlp -U
- ).
- Use
- -f "bestvideo[height<=720]+bestaudio"
- to save bandwidth when full resolution is not needed.
- yt-dlp automatically handles rate limiting and retries.
- The
- --dump-json
- output includes
- title
- ,
- duration
- ,
- uploader
- ,
- view_count
- ,
- description
- ,
- formats
- ,
- subtitles
- , and much more.
- Troubleshooting
- "yt-dlp: command not found"
-
- Install it (
- pip install yt-dlp
- ) and ensure your PATH includes pip's bin directory.
- "ffmpeg: command not found"
-
- Install ffmpeg. Without it, downloads fail when video and audio are separate streams (common on YouTube for HD).
- Downloads fail or return errors
- Run yt-dlp -U to update. Sites change frequently and yt-dlp ships fixes regularly.