This is a follow-up to #14404, which announced that yt-dlp would soon An external JavaScript runtime (such as Deno) is required to fully support downloading from YouTube.
With the release of yt-dlp version 2025.11.12External JavaScript runtime support has arrived.
All users who wish to use yt-dlp with YouTube are strongly encouraged to install one of the supported JS runtimes.
The following JavaScript runtimes are currently supported (In order of recommendation, from strongest to weakest,
Deno
node
- https://nodejs.org/
- Minimum node versions supported by yt-dlp:
20.0.0- If using Node, the latest version (25+) is strongly recommended for security reasons
quickjs
- https://bellard.org/quickjs/
- Minimum QuickJS versions supported by yt-dlp:
2023-12-9- If using QuickJS, version
2025-4-26or later is strongly recommended for performance reasons
- If using QuickJS, version
quickjs-ng
become
- https://bun.com/
- Minimum bun versions supported by yt-dlp:
1.0.31- If using bun, the latest version is strongly recommended
just pay attention deno Is enabled by default; All others are disabled by default for security reasons. See the EJS wiki page for more information.
except for The JavaScript runtime, yt-dlp, also requires the yt-dlp-ejs component to operate the JS runtime.
Comment: this component Already included in all official yt-dlp executables,
Similarly, if you have installed and upgraded the yt-dlp Python package default Excessive (yt-dlp[default], So you already have yt-dlp-ejs component,
If you installed yt-dlp in another way, please see section 2 of the EJS wiki page for more details.
Support for YouTube without JavaScript runtime is now considered “deprecated”. This still works to some extent; However, format availability will be limited, and in some cases severely limited (e.g. for logged-in users). Format availability without a JS runtime is expected to deteriorate over time, and would not be considered a “bug” but an inevitability for which there is no workaround. It is also expected that eventually, support for YouTube will not be possible at all without the JS runtime.
If you have any questions, please see the EJS wiki page, the previous announcement’s FAQ, and the readme before commenting or opening a new issue:
Notes for package maintainers
If you are maintaining a package downstream of yt-dlp, we provide the following guidance:
yt-dlpThe repository, source tarball, PyPI source distribution, and built distribution (wheel) are still licensed under The Unlicensed (public domain); However, Whenyt-dlp-ejsThe package has been created, it bundles code licensed under ISC and MIT. this is the primary reasonyt-dlp-ejsWas split into a separate repository and PyPI packageIf
yt-dlpPackaged as a Python package in your repository,yt-dlp-ejsideally will be packed separatelyyt-dlp-ejstechnically a optional Python dependency of yt-dlp, but YouTube support is declined without iteach edition of
yt-dlpwill be pinned to a specific version ofyt-dlp-ejsand yt-dlp will reject any otheryt-dlp-ejsversion. Refer to yt-dlppyproject.tomlFor pinned versionIf your repository is a package
yt-dlpZipimport binary as instead of Python packageyou can usemake yt-dlp-extraTo make zip executableyt-dlp-ejsInvolved. (will find makefileyt-dlp-ejswheel inbuildsubdirectories, or extracted build distributionsyt_dlp_ejssubdirectory)deno,nodejs,quickjsand/orbunshould be optional dependency ofyt-dlpBut still, without YouTube support it has been rejected One of themWhereas
yt-dlp-ejsAnd external JavaScript runtimes are currently only used with YouTube, their use of yt-dlp may be expanded in the future (and necessarily so).
If this guidance is insufficient, or if you are a developer integrating yt-dlp into your software and you have further questions, please open a new GitHub issue.
![[Announcement] External JavaScript runtime now required for full YouTube support · Issue #15012 · yt-dlp/yt-dlp · GitHub 1 15012](https://cnznews.com/wp-content/uploads/2025/11/15012.png)