Skip to main content

Concurrent Downloads

-N, --concurrent-fragments
number
default:"1"
Number of fragments of a dash/hlsnative video that should be downloaded concurrentlyExample:
yt-dlp -N 4 URL

Rate Limiting

-r, --limit-rate
string
Maximum download rate in bytes per secondExample:
yt-dlp -r 50K URL
yt-dlp -r 4.2M URL
--throttled-rate
string
Minimum download rate in bytes per second below which throttling is assumed and the video data is re-extractedExample:
yt-dlp --throttled-rate 100K URL

Retry Configuration

-R, --retries
string
default:"10"
Number of retries, or “infinite”Example:
yt-dlp -R 20 URL
yt-dlp -R infinite URL
--file-access-retries
string
default:"3"
Number of times to retry on file access error, or “infinite”
--fragment-retries
string
default:"10"
Number of retries for a fragment, or “infinite” (DASH, hlsnative and ISM)
--retry-sleep
string
Time to sleep between retries in seconds (optionally) prefixed by the type of retryFormat: [TYPE:]EXPRTypes: http (default), fragment, file_access, extractorEXPR can be:
  • A number
  • linear=START[:END[:STEP=1]]
  • exp=START[:END[:BASE=2]]
This option can be used multiple times to set the sleep for different retry types.Example:
yt-dlp --retry-sleep linear=1::2 --retry-sleep fragment:exp=1:20 URL

Fragment Handling

--skip-unavailable-fragments
flag
default:"true"
Skip unavailable fragments for DASH, hlsnative and ISM downloadsAlias: --no-abort-on-unavailable-fragments
--abort-on-unavailable-fragments
flag
Abort download if a fragment is unavailableAlias: --no-skip-unavailable-fragments
--keep-fragments
flag
Keep downloaded fragments on disk after downloading is finished
--no-keep-fragments
flag
default:"true"
Delete downloaded fragments after downloading is finished

Buffer Configuration

--buffer-size
string
default:"1024"
Size of download bufferExample:
yt-dlp --buffer-size 1024 URL
yt-dlp --buffer-size 16K URL
--resize-buffer
flag
default:"true"
The buffer size is automatically resized from an initial value of --buffer-size
--no-resize-buffer
flag
Do not automatically adjust the buffer size
--http-chunk-size
string
Size of a chunk for chunk-based HTTP downloadingMay be useful for bypassing bandwidth throttling imposed by a webserver (experimental)Default is disabled.Example:
yt-dlp --http-chunk-size 10485760 URL
yt-dlp --http-chunk-size 10M URL

Playlist Options

--playlist-random
flag
Download playlist videos in random order
--lazy-playlist
flag
Process entries in the playlist as they are receivedThis disables n_entries, --playlist-random and --playlist-reverse
--no-lazy-playlist
flag
default:"true"
Process videos in the playlist only after the entire playlist is parsed

HLS Options

--hls-use-mpegts
flag
Use the mpegts container for HLS videosAllows some players to play the video while downloading, and reduces the chance of file corruption if download is interrupted.This is enabled by default for live streams.
--no-hls-use-mpegts
flag
Do not use the mpegts container for HLS videosThis is default when not downloading live streams.

Download Sections

--download-sections
string
Download only chapters that match the regular expression
  • A ”*” prefix denotes time-range instead of chapter
  • Negative timestamps are calculated from the end
  • “*from-url” can be used to download between the “start_time” and “end_time” extracted from the URL
Needs ffmpeg. This option can be used multiple times to download multiple sections.Example:
yt-dlp --download-sections "*10:15-inf" --download-sections "intro" URL

External Downloader

--downloader
string
Name or path of the external downloader to use (optionally) prefixed by the protocols to use it forFormat: [PROTO:]NAMEProtocols: http, ftp, m3u8, dash, rstp, rtmp, mmsSupported downloaders: native, aria2c, axel, curl, ffmpeg, httpie, wgetYou can use this option multiple times to set different downloaders for different protocols.Alias: --external-downloaderExample:
yt-dlp --downloader aria2c URL
yt-dlp --downloader "dash,m3u8:native" URL
# Uses aria2c for http/ftp, native for dash/m3u8
--downloader-args
string
Give these arguments to the external downloaderFormat: NAME:ARGSSpecify the downloader name and the arguments separated by a colon ”:”. For ffmpeg, arguments can be passed to different positions using the same syntax as --postprocessor-args.You can use this option multiple times to give different arguments to different downloaders.Alias: --external-downloader-argsExample:
yt-dlp --downloader aria2c --downloader-args "aria2c:-x 16 -k 1M" URL

Build docs developers (and LLMs) love