Yt-dlp now requires an external JavaScript runtime for full support when downloading from YouTube, formalizing a change its maintainers had previously announced. Operation without that runtime remains partly possible, but the project classifies that path as deprecated and expects available media formats to become increasingly limited.

Deno is the preferred runtime and the only option activated by default. Yt-dlp also supports Node.js, QuickJS and Bun, but leaves those disabled initially for security reasons. Users selecting an alternative must explicitly configure it. The project directs readers to its external-JavaScript documentation for setup and security details.

A second component, yt-dlp-ejs, connects yt-dlp to the chosen runtime. Official yt-dlp executables already contain it. Python users who install or update with the standard optional dependency set, written as yt-dlp[default], also receive the component. Other installation methods may require a separate package, so behavior depends on how the downloader was obtained.

Without JavaScript execution, YouTube downloads can still succeed in some circumstances. Format selection may be sharply reduced, particularly for signed-in users. Maintainers said future losses in availability would be treated as an expected consequence rather than a software defect, and they anticipated that YouTube might eventually become unusable through yt-dlp without a runtime.

The packaging change has licensing consequences for downstream distributors. The main yt-dlp repository, source archive and Python distributions remain under The Unlicense. Built versions of yt-dlp-ejs include code covered by ISC and MIT terms, which is why that component lives in a distinct repository and Python package. Distributions packaging yt-dlp as Python software are encouraged to package yt-dlp-ejs separately.

Compatibility is deliberately strict. Each yt-dlp release identifies one specific yt-dlp-ejs version and rejects others. Maintainers advise package builders to consult pyproject.toml for that pairing. Projects that ship the zipimport binary can use the make target named yt-dlp-extra to create an executable containing the required component, provided the build can find the relevant package files.

Runtime packages should remain optional dependencies at the distribution level, even though YouTube operation is deprecated without one. The JavaScript machinery initially applies only to YouTube, but maintainers said its use could expand to additional sites.

For users of official binaries, much of the transition is already bundled, leaving installation of Deno as the main external step. Integrators and Linux distribution maintainers face more choices because they must preserve version matching, licensing separation and secure runtime defaults while avoiding a misleading impression that the old runtime-free YouTube path offers complete support.

That distinction is especially important for automated deployments and reproducible package builds.