Updated Sep 18, 2026

Utilities

Download video or audio from thousands of sites

One URL or a URL list into a folder of media files.

Agent

overview

What yt-dlp does

You have a watch URL, a playlist, or a file of URLs, and the next node needs the media file, not the caption track. Set --url or --urls-file. The wrapper calls yt-dlp, writes into the output folder, and leaves the files for the next step. -t mp3 extracts audio. -t mp4 remuxes to MP4. -f picks a format when you need a specific height or codec.

A cookies.txt on --cookies is how you pass a logged-in session. --proxy and -r cap egress. --playlist-items and --max-downloads bound a playlist. --write-subs and --sub-langs keep caption files next to the video. The wrapper always passes --remote-components ejs:github so current YouTube formats can resolve.

yt-dlp downloads streams the site already serves. It does not remove DRM or invent access you do not have. Cloud fleet IPs are often blocked. Treat a challenge page or empty folder as a blocked fetch. Use youtube-transcript when you only need the public caption track. Use whisper when you have audio and no captions.

source github.com/yt-dlp/yt-dlp

use cases

Where yt-dlp fits

Extract audio from one watch URL

Set --url and -t mp3. The folder holds an MP3 the next node can transcribe or attach.

Download a list of URLs

Pass --urls-file a text file, one URL per line. Use --max-downloads or --playlist-items to bound a playlist.

Keep subtitles next to the video

Turn on --write-subs and set --sub-langs. Convert with --convert-subs when a later node wants srt.

Retry a site that wants a session

Pass --cookies a Netscape cookies.txt. Set --proxy when the fleet IP is blocked. A block is a failed fetch, not a cracked wall.

reference

yt-dlp inputs and flags

54 inputs
NameTypeFlagDescription
urlSTRING--urlURL of the video/playlist to download. Use this OR urls-file, not both.
urls-fileFILE--urls-fileFile containing URLs (one per line). Use this OR url, not both.
presetSTRING-tQuick preset - mp3 (extract audio as MP3), aac (extract audio as AAC), mp4 (remux to MP4), mkv (remux to MKV), sleep (add delays between downloads). Use this OR set extract-audio/format/remux-video manually, not both.
formatSTRING-fVideo format code (e.g., best, bestvideo+bestaudio, 720p, mp4)
extract-audioBOOLEAN-xExtract audio only (converts video to audio)
cookies-fileFILE--cookiesCookies file for YouTube/site authentication (export from browser)

Showing key inputs. yt-dlp exposes 54 inputs in total.

Full flag reference (54 inputs)
NameTypeFlagDescription
audio-formatSTRING--audio-formatAudio format when extracting: best, aac, alac, flac, m4a, mp3, opus, vorbis, wav
audio-qualitySTRING--audio-qualityAudio quality 0 (best) to 10 (worst) or specific bitrate like 128K
concurrent-fragmentsSTRING-NNumber of fragments to download concurrently (default 1)
convert-subsSTRING--convert-subsConvert subtitles to format: ass, lrc, srt, vtt
convert-thumbnailsSTRING--convert-thumbnailsConvert thumbnails to format: jpg, png, webp
cookies-fileFILE--cookiesCookies file for YouTube/site authentication (export from browser)
dateSTRING--dateDownload only videos uploaded on date (YYYYMMDD or today-2weeks)
dateafterSTRING--dateafterDownload only videos uploaded on or after date
datebeforeSTRING--datebeforeDownload only videos uploaded on or before date
download-archiveFILE--download-archiveFile to record downloaded video IDs (skip if already in file)
embed-chaptersBOOLEAN--embed-chaptersAdd chapter markers to the video file
embed-metadataBOOLEAN--embed-metadataEmbed metadata and chapters to the video file
embed-subsBOOLEAN--embed-subsEmbed subtitles in the video (mp4, webm, mkv)
embed-thumbnailBOOLEAN--embed-thumbnailEmbed thumbnail in audio/video file as cover art
extra-argsSTRING--extraAdditional yt-dlp arguments (passed directly)
extract-audioBOOLEAN-xExtract audio only (converts video to audio)
extractor-retriesSTRING--extractor-retriesNumber of retries for extractor errors (default 3) or infinite
formatSTRING-fVideo format code (e.g., best, bestvideo+bestaudio, 720p, mp4)
format-sortSTRING-SSort formats by fields (e.g., res,fps,codec:h264)
fragment-retriesSTRING--fragment-retriesNumber of retries for a fragment (default 10) or infinite
ignore-errorsBOOLEAN-iIgnore download and postprocessing errors
impersonateSTRING--impersonateClient to impersonate (e.g., chrome, chrome-110, chrome:windows-10)
js-runtimesSTRING--js-runtimesJavaScript runtime to enable: deno, node, quickjs, bun
live-from-startBOOLEAN--live-from-startDownload livestreams from the start (YouTube, Twitch)
match-filtersSTRING--match-filtersGeneric video filter (e.g., !is_live, like_count>100)
max-downloadsSTRING--max-downloadsAbort after downloading NUMBER files
max-sleep-intervalSTRING--max-sleep-intervalMaximum seconds to sleep (use with sleep-interval)
merge-output-formatSTRING--merge-output-formatContainer for merged formats: mp4, mkv, webm, avi, flv, mov
no-abort-on-errorBOOLEAN--no-abort-on-errorContinue with next video on download errors
no-playlistBOOLEAN--no-playlistDownload only the video, not the playlist
output-templateSTRING-oOutput filename template (default: %(title)s.%(ext)s)
passwordSTRING-pAccount password
playlist-itemsSTRING--playlist-itemsPlaylist items to download (e.g., 1:3,7,-5::2)
presetSTRING-tQuick preset - mp3 (extract audio as MP3), aac (extract audio as AAC), mp4 (remux to MP4), mkv (remux to MKV), sleep (add delays between downloads). Use this OR set extract-audio/format/remux-video manually, not both.
proxySTRING--proxyHTTP/HTTPS/SOCKS proxy URL (e.g., socks5://127.0.0.1:1080)
rate-limitSTRING-rMaximum download rate (e.g., 50K, 4.2M)
recode-videoSTRING--recode-videoRe-encode video to another format
remote-componentsSTRING--remote-componentsRemote components to allow: ejs:npm, ejs:github (needed for some YouTube formats)
remux-videoSTRING--remux-videoRemux video to format: avi, flv, gif, mkv, mov, mp4, webm
retriesSTRING-RNumber of retries (default 10) or infinite
sleep-intervalSTRING--sleep-intervalSeconds to sleep before each download
split-chaptersBOOLEAN--split-chaptersSplit video into multiple files based on chapters
sponsorblock-markSTRING--sponsorblock-markSponsorBlock categories to mark as chapters: sponsor, intro, outro, all
sponsorblock-removeSTRING--sponsorblock-removeSponsorBlock categories to remove: sponsor, intro, outro, all
sub-formatSTRING--sub-formatSubtitle format preference (e.g., srt, ass/srt/best)
sub-langsSTRING--sub-langsSubtitle languages to download (e.g., en, es, all)
usernameSTRING-uAccount username
verboseBOOLEAN-vPrint various debugging information
video-passwordSTRING--video-passwordVideo-specific password
write-auto-subsBOOLEAN--write-auto-subsWrite automatically generated subtitle file
write-subsBOOLEAN--write-subsWrite subtitle file
write-thumbnailBOOLEAN--write-thumbnailWrite thumbnail image to disk
urlSTRING--urlURL of the video/playlist to download. Use this OR urls-file, not both.
urls-fileFILE--urls-fileFile containing URLs (one per line). Use this OR url, not both.

example

Run yt-dlp

yt-dlp · command
# audio from one watch URLyt-dlp --url https://www.youtube.com/watch?v=dQw4w9WgXcQ -t mp3 # video listyt-dlp --urls-file urls.txt -t mp4 --cookies cookies.txt
sample output
[download] Destination: /hive/out/Example Title.mp3[ExtractAudio] Destination: /hive/out/Example Title.mp3Download complete. Output in: /hive/out

guidance

Choosing yt-dlp

Use yt-dlp when the next node needs the media file. Use youtube-transcript when a public caption track is enough. Use whisper when you already have audio and no captions. wget fetches page bytes, not a muxed video.

youtube-transcript

Reads the public caption track and writes transcript.txt. Faster and smaller when you do not need audio or video.

wget

Downloads HTTP files and can mirror a site. It does not mux a YouTube stream into mp4 or mp3.

whisper

Speech-to-text from an audio file. Pair after yt-dlp when you have audio and no captions.

faq

yt-dlp questions

Set --url. Add -t mp3 for audio or -t mp4 to remux video. The node writes the files into the output folder.

Run yt-dlp yourself

A watch URL feeds the yt-dlp node. The folder holds the media file, or an MP3 when -t is mp3. The listing below is illustrative, not a fleet run.

Facts on this page come from the live Trickest tool library.