NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1043 most downloaded on PyPI
A feature-rich command-line audio/video downloader
Last release 7 days ago
27 Sep 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
6 versions withdrawn
withdrawn after publishing
6 years old
640 releases · first in 2021
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
  by seproDev_VALID_URL (#7692) by TravisDupessecretstorage an optional dependency (#8585) by bashonly</details>
Nothing published for this version
Security: [CVE-2023-46121] Patch Generic Extractor MITM Vulnerability via Arbitrary Proxy Injection
http_headers; extractors now only use specific headers<details><summary><h3>Changelog</h3></summary>
--compat-option manifest-filesize-approx (#8356) by bashonly--load-info-json (#8521) by bashonlyhttp_headers by coletdjnzxml.etree.ElementTree.Element (#8582) by bashonly_VALID_URL (#8368) by peci1POST request to streams API endpoint (#8413) by bartbroere_VALID_URL (#8426) by bashonly--file-allocation=none (#8332) by CrendKing--live-from-start (#8339) by bashonlyRequest Handler: requests: Add handler for requests HTTP library (#3668) by bashonly, coletdjnz, Grub4K (With fixes in 4e38e2a)
Adds support for HTTPS proxies and persistent connections (keep-alive)
</details>
Nothing published for this version
Nothing published for this version
  by awalgarg, Grub4Kwrite_xattr: Use os.setxattr if available (#8205) by bashonly, Grub4Kdownloader_options by bashonly--extractor-retries inf (#8328) by Grub4K</details>
  by xofeuploader_id (#8244) by drzraf</details>
Security: [CVE-2023-40581] Prevent RCE when using `--exec` with `%q` on Windows
--exec with %q on Windows
"" instead of \".utils.Popen has been patched to properly quote commands.<details><summary><h3>Changelog</h3></summary>
--check-formats by pukkandan--exec with %q (CVE-2023-40581) by Grub4KFFmpegFixupM3u8PP may need to run with ffmpeg by pukkandantypes.NoneType by pukkandan (With fixes in 25b6e8f)sqlite3.version (#8167) by bashonlyplaylist_index by pukkandanparse_duration by bashonlyclean_podcast_url: Handle more trackers (#7556) by bashonly, mabdelfattahjs_to_json: Handle Array objects by Grub4K, std-move--load-pages by pukkandan_search_nuxt_data more lenient by std-move_VALID_URL (#8153) by kylegustavo_VALID_URL (#7649) by simon300000_VALID_URL (#7683) by AmirAflak_VALID_URL by bashonlyPBSKidsIE (#7602) by snixon/content URL (#7592) by FinnRGm4v (#7583) by Neurognostic--legacy-server-connect (#7645) by bashonlymake_changelog: Fix changelog grouping and add networking group (#8124) by Grub4K</details>
Security: [CVE-2023-35934] Fix Cookie leak
--add-header Cookie: is deprecated and auto-scoped to input URL domainscookies field to info.json and deprecate http_headers.Cookie<details><summary><h3>Changelog</h3></summary>
Cookie headers are handled by Grub4KCookie leaks on HTTP redirect by coletdjnzplaylist_index etc even when with internal formatting by pukkandan_VALID_URL (#7439) by AmanSal1, rdamas_VALID_URL by bashonlyformats by pukkandanis_favorited (#7390) by bbilly1post_live over 2 hours by pukkandan--no-conf by pukkandan</details>
  by nixxoios to default clients used by pukkandan
</details>
Deprecate internal `Youtubedl-no-compression` header (#6876) by coletdjnz
<details><summary><h3>Changelog</h3></summary>
--compat-option playlist-match-filter by pukkandan--no-quiet by pukkandan--color (#6904) by Grub4K--netrc-cmd (#6682) by NDagestad, pukkandan--xff by pukkandan-f- (#7101) by ivanskodje, pukkandanYoutubedl-no-compression header (#6876) by coletdjnz--print-to-file by pukkandan--print by pukkandan (With fixes in 17ba434)filepath being copied to underlying format dict by pukkandanfilename and urls fields at all stages of --print by pukkandan (With fixes in b5f61b6)__bool__ by pukkandanFormatSorter: Improve size and br by pukkandan, u-spec-pngjs_to_json: Implement template strings (#6623) by Grub4Klocked_file: Fix for virtiofs (#6840) by brandon-dacribstrftime_or_none: Handle negative timestamps by dirkf, pukkandantraverse_obj
write_string: Fix noconsole behavior by Grub4Kurl_result by pukkandanCharter_Direct MSO as Spectrum (#6824) by bashonlyParamountPressExpress extractor (#6604) by bashonly_VALID_URL (#7076) by HobbyistDevfragment_query, variant_query (#6600) by bashonly (With fixes in 9bfe0d1)hls_key, variant_query (#6567) by bashonly/shows/ URLs (#7225) by bashonly_extract_embed_urls (#6383) by carusocrWinSports and embed extraction (#6426) by bashonlyNBCStations direct mp4 formats (#6637) by bashonlybeta.nebula.tv (#6516) by unbeatable-101NhkRadiru extractor (#6819) by garret1317NhkRadiruLive: Add extractor (#7332) by garret1317MujRozhlas: Add extractor (#7129) by stanoarnstream_key header to downloader (#7224) by bashonly_VALID_URL (#6522) by hatienl0i261299release_timestamp (#7186) by CeruleanSkyformat_note when -v (#6254) by Lesmiscore, pukkandaninclude_duplicate_formats by pukkandan-f17 by pukkandanchannel_is_verified (#7213) by coletdjnzheatmap data (#7100) by tntmod54321comment_count (#6523) by nick-cdhttps by pukkandan--progress-template by pukkandanmake_changelog: Various improvements by Grub4K</details>
  by Ferdi265make_changelog: Stop at Release ... commit by pukkandanA new release type has been added!
nightly builds will be made after each push, containing the latest fixes (but also possibly bugs).--update/-U, a release binary will only update to its current channel (either stable or nightly).--update-to option has been added allowing the user more control over program upgrades (or downgrades).--update-to can change the release channel (stable, nightly) and also upgrade or downgrade to specific tags.--update-to CHANNEL, --update-to TAG, --update-to CHANNEL@TAG<details><summary><h3>Changelog</h3></summary>
--break-match-filters by pukkandan--break-on-existing with --lazy-playlist by pukkandanLenientJSONDecoder: Parse unclosed objects by pukkandanPopen: Shim undocumented text_mode property by Grub4KChangelog by pukkandanMerge youtube-dl: Upto commit/2dd6c6e
<details><summary><h3>Changelog</summary> <p>
--concat-playlist--no-progress when --printtitle completely non-fatal__bool__ and propertyCryptodome imports_search_nuxt_data by LowSuggestion912if statementstraverse_obj: Various improvements by Grub4Ktraverse_obj: Fix more bugstraverse_obj: Fix several behavioral problems by Grub4Ktime_seconds to use the provided TZ by Grub4K, Lesmiscoremake_dir by aionescupassthrough_moduleEnhancedModulepyinstaller hooksCryptodomeuploader_id extraction by bashonlyconsent.youtube/live/ URLrmc prefix by carusocrwav by qulazNBC and NBCStations extractors by bashonlyNFLPlus extractors by bashonlyOnDemandChinaEpisodeIE by HobbyistDev, pukkandanstream.tvp.pl by selfisekai--no-playlist and add media view_count when using GraphQL by Grub4KplayerConfig extraction by LeoniePhiline, bashonlyViuOTTIndonesiaIE extractor by HobbyistDevVLiveWebArchiveIE by seproDev_VALID_URL by carusocr</p> </details>
Fix config locations by Grub4k, coletdjnz, pukkandan
<details open><summary><h3>Changelog</summary> <p>
mimetype2ext: weba is not standardwindows_enable_vt_mode: Better error handlingpyproject.toml/media to VALID_URL by HobbyistDevvideo_data by HobbyistDevlanguage to entries by Chrissi2812channel_id by gschizasTikTokLive extractor by JC-Chung</p> </details>
This allows devs to change defaults and make other potentially breaking changes more easily. If you need everything to work exactly as-is, put Use --c…
<details open><summary><h3>Changelog</summary> <p>
--compat-options 2021,2022
--compat 2022 in your config to guard against future compat changes.video--parse/replace-in-metadata run at any post-processing stage--enable-file-urls by coletdjnzaspect_ratioac4 to known codecsweba to known extensionsgif to --recode-video--match-filter stricter--cookies-from-browser CLI parsingoriginal_url in playlistsPlaylistEntries_sort_formats_extract_format functions obey --ignore-no-formatsfragment_query extractor arg for DASH and HLS by bashonly, pukkandanAccept-Encoding: identity for initial request by coletdjnzmov to vextclassproperty: Add cache supportget_exe_version: Detect broken executables by dirkf, pukkandanjs_to_json: Fix bug in f55523c by ChillingPepper, pukkandanExtractorError mutableFileDownloader.parse_bytes into utilsutilswindows_enable_vt_mode: Proper implementation by Grub4Krandom.choices by freezboltzAmazonReviews extractor by bashonlyNetverseSearch extractor by HobbyistDevVimeoProIE by bashonly, pukkandanpiped.video by Bnyroytuser:undalbum_artist by stelcodes--no-playlist for anthology_VALID_URL by skbehBrightcoveNewBaseIE and fix embed extraction_VALID_URL by muddi900Iq JS regex by bashonly--wait-for-video_VALID_URL for NaverNowIE by bashonlyDouyinIE, improve _VALID_URL by bashonly_VALID_URL, add api_hostname arg by bashonly--no-playlist for multi-video tweets by Grub4K, bashonlyReferer to m3u8 by nixxo</p> </details>
Merge youtube-dl: Upto commit/de39d12
<details open><summary><h3>Changelog</summary> <p>
--flat-playlist--list options not implying -s in some cases by Grub4K, bashonlyformats=Nonetype field, obey --retry-sleep extractor, relax duration check for large segmentschapter category by ajayyy, pukkandanLenientSimpleCookie by Grub4Kfatal=False for _search_nuxt_data_generic_titlejson_ld type checks by Grub4Kjs_to_json: Improve escape handling by Grub4Kstrftime_or_none: Workaround Python bug on Windowstraverse_obj: Always return list when branching, allow re.Match objects by Grub4Kpy2exe: Migrate to freeze API by SG5, pukkandanarmv7l and aarch64 releases by MrOctopus, pukkandanconda by mlampeset-output with GITHUB_OUTPUT by Lesmiscore100 for update errorsshutils.move in restricted ACL mode on BSD by ClosedPort22, pukkandanpyinst's argument passthrough by jahway603extract_flat in download tests by coletdjnz, pukkandanconcurrent_view_count for livestreams by coletdjnzduration for premieres by nosooplive_status by coletdjnz, pukkandanapproximate_date return timestampBitChuteChannelIE by flashdagger, pukkandanFoxNewsVideo extractorMLBArticle extractor by HobbyistDev_VALID_URL by bashonlydata-movie-playlist extraction by Lesmiscore_VALID_URL by DoubleCouponDay_VALID_URLrelease_timestamp_VALID_URL by freezboltz_VALID_URL by m4tu4g</p> </details>
There are some small changes coming to format selection syntax and defaults in a release or two. Most people should NOT be affected negatively by this
There are some small changes coming to format selection syntax and defaults in a release or two. Most people should NOT be affected negatively by this, but it is recommended to go through the list of changes to make sure
<details open><summary><h3>Changelog</summary> <p>
set to be passed as download_archive by pukkandan, bashonly--download-sections--config-location -webpage_url--ffmpeg-locationlibc_ver not be available on Windows Store version of Python%s work in strfformat for all systems_get_mac_keyring_password fail gracefullyfatal=False in RetryManager_search_json able to parse lists% in representation_id of m3u8base_url: URL paths can contain & by elyse0js_to_json: ImprovePopen.run: Fix default return in binary modetraverse_obj: Rewrite, document and add tests by Grub4Kmake_lazy_extractors: Fix for Docker by josanabrpost_live videos from start by Lesmiscore, pukkandanlazy-load-for-videos embedsreporthistory pageuploader_url_VALID_URL by coletdjnz_VALID_URL_VALID_URL by 0xGodspeed_VALID_URL by LiviaMedeirosjw_config regex by julien-hadleyjack_EMBED_REGEX by coletdjnz--flat-playlist by SuperSonicHub1_YT_INITIAL_PLAYER_RESPONSE_RE_VALID_URL by Grub4K_VALID_URL by m4tu4g</p> </details>
[utils] Add deprecation_warning
<details open><summary><h3>Changelog</summary> <p>
--use-extractors--break-per-url --max-downloads--alias--cookies-from-browser by bashonly, coletdjnz, pukkandanaext for --prefer-free-formatsdeprecation_warningorderedSet_from_optionsPopen: Restore LD_LIBRARY_PATH when using PyInstaller by Lesmiscoremake tar should not follow DESTDIR by satan1sttest_youtube_signature--compat-option no-youtube-prefer-utc-upload-date by coletdjnzflac with premium account by jackyyf--video-password by shreyasminocha_VALID_URL by dirkf_VALID_URL</p> </details>
[jsinterp] Fix for new youtube players and related improvements by dirkf, pukkandan
<details open><summary><h3>Changelog</summary> <p>
--download-archive--rm-cache after update for this to work</p> </details>
Merge youtube-dl: Upto commit/d231b56
<details open><summary><h3>Changelog</summary> <p>
channels--prefer-avconvlibatomicparsley.sofixup_webpget_compatible_exte.g. by Lesmiscore_VALID_URLswf domain by aldoridhoni_VALID_URL by masta79</p> </details>
Determine merge container better by pukkandan, selfisekai
<details open><summary><h3>Changelog</summary> <p>
--compat-option no-live-chat should disable danmaku--match-filter by pukkandan-J--merge-output-formataudio_channelsffmpeg_location in a contextvarNone when the field didn't matchutils and refactorbest*live_status=post_live by lazypete365_VALID_URL by HobbyistDev_VALID_URL</p> </details>
Support for Python version 3.6 has been deprecated. See https://github.com/yt-dlp/yt-dlp/issues/3764 for more details. You will no longer receive upda…
Support for Python version 3.6 has been deprecated. See https://github.com/yt-dlp/yt-dlp/issues/3764 for more details. You will no longer receive updates on this version! Please update to Python 3.7 or above
<details open><summary><h3>Changelog</summary> <p>
Nonecertifi is used--no-progress for --wait-for-videoh for HTML escapingerrnote=False to parsers--config-locationget_domainsetup.py_update_spec when up to datedownload_ranges by FirefoxMetzger_VALID_URL_VALID_URL by IONECarter, dirkf</p> </details>
Nothing published for this version
Support for Python version 3.6 has been deprecated. See https://github.com/yt-dlp/yt-dlp/issues/3764 for more details. You will receive only one more…
Support for Python version 3.6 has been deprecated. See https://github.com/yt-dlp/yt-dlp/issues/3764 for more details. You will receive only one more update on Py3.6! Please update to Python 3.7 or above
<details open><summary><h3>Changelog</summary> <p>
--downloader nativesection_end of clipschapters_create_request when headers is NoneBaseURL in MPDparse_known_args for --compat.WINDOWS_VT_MODE_downloader_VALID_URL_VALID_URL</p> </details>
Deprecate support for Python 3.6
<details open><summary><h3>Changelog</summary> <p>
--download-sections to download video partially
--download-sections *1:10-2:20)--alias--lazy-playlist to process entries as they are received--retry-sleep--playlist-items
-I as alias for --playlist-index--playlist-start, --playlist-end, --playlist-reverse, --no-playlist-reverse redundant--config-location - to provide options interactively--no-updatestderr with -q--simulate --max-downloads--live-from-start by flashdagger_search_json by coletdjnz, pukkandandefault parameter to _search_json by coletdjnz, pukkandan--load-pagesjson_ld with multiple @types_ALL_CLASSES lazilysrc attribute from HTML5 media elements by Lesmiscorefunctools.cacheExtractorError: Fix exc_infoISO3166Utils: Add EU and APPopen: Refactor to use contextmanagerlocked_file: Fix for PyPy on Windows.git folder to distinguish source/unknownfunctools.cached_propertyFakeYDL signatures by coletdjnzreport_progress_download_... methodsextractors.py to _extractors.pyformat_fieldYoutubeDL.parse_outtmplinnertube_host and innertube_key extractor args by coletdjnz_extract_chapters_from_descriptioncomment_count from webpage:ytnotifications extractor by coletdjnzvideoRenderer in _post_thread_continuation_entriesauth_token from cookie by mnnmountComponentWatchESPN extractor by ischmidt20, pukkandandata-video-jw-id_VALID_URLnavernow extractor by pinguploader_id field by Lesmiscoresouthpark.lat extractor by darkxexSIGI_STATE by dirkf, pukkandan, sulyi</p> </details>
Your coding agent can read these notes before it upgrades. Set up the MCP server →