Yt-dlp: External JavaScript runtime now required for full YouTube support

Nov 12, 2025 - 13:01
 0  0
Yt-dlp: External JavaScript runtime now required for full YouTube support

This is a follow-up to #14404, which announced that yt-dlp will soon require an external JavaScript runtime (e.g. Deno) in order to fully support downloading from YouTube.

With the release of yt-dlp version 2025.11.12, external JavaScript runtime support has arrived.

All users who intend 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):

  1. Deno

  2. Node

    • https://nodejs.org/
    • minimum Node version supported by yt-dlp: 20.0.0
      • if using Node, the latest version (25+) is strongly recommended for security reasons
  3. QuickJS

    • https://bellard.org/quickjs/
    • minimum QuickJS version supported by yt-dlp: 2023-12-9
      • if using QuickJS, version 2025-4-26 or later is strongly recommended for performance reasons
  4. QuickJS-ng

  5. Bun

    • https://bun.com/
    • minimum Bun version supported by yt-dlp: 1.0.31
      • if using Bun, the latest version is strongly recommended

Note that only deno is enabled by default; all others are disabled by default for security reasons. See the EJS wiki page for more details.


In addition to the JavaScript runtime, yt-dlp also requires the yt-dlp-ejs component in order to operate the JS runtime.

NOTE: This component is already included in all of the official yt-dlp executables.

Similarly, if you've installed & upgraded the yt-dlp Python package with the default extra (yt-dlp[default]), then you already have the yt-dlp-ejs component.

If you've installed yt-dlp another way, then please refer to section 2 of the EJS wiki page for more details.


Support for YouTube without a JavaScript runtime is now considered "deprecated." It does still work somewhat; however, format availability will be limited, and severely so in some cases (e.g. for logged-in users). Format availability without a JS runtime is expected to worsen as time goes on, and this will not be considered a "bug" but rather an inevitability for which there is no solution. It's also expected that, eventually, support for YouTube will not be possible at all without a JS runtime.


If you have questions, please refer to the EJS wiki page, the previous announcement's FAQ, and the README before commenting or opening a new issue:


Notes to package maintainers

If you are maintaining a downstream package of yt-dlp, we offer the following guidance:

  • The yt-dlp repository, source tarball, PyPI source distribution and built distribution (wheel) are still licensed under The Unlicense (public domain); however, when the yt-dlp-ejs package is built, it bundles code licensed under ISC and MIT. This is the primary reason why yt-dlp-ejs was split off into a separate repository and PyPI package

  • If yt-dlp is packaged as a Python package in your repository, yt-dlp-ejs would ideally be packaged separately

  • yt-dlp-ejs is technically an optional Python dependency of yt-dlp, but YouTube support is deprecated without it

  • Each version of yt-dlp will be pinned to a specific version of yt-dlp-ejs and yt-dlp will reject any other yt-dlp-ejs version. Refer to yt-dlp's pyproject.toml for the pinned version

  • If your repository packages yt-dlp as the zipimport binary instead of as a Python package, you can use make yt-dlp-extra to build the zip executable with yt-dlp-ejs included. (The Makefile will look for the yt-dlp-ejs wheel in the build subdirectory, or the extracted built distribution in the yt_dlp_ejs subdirectory)

  • deno, nodejs, quickjs and/or bun should be optional dependencies of yt-dlp. But again, YouTube support is deprecated without one of them

  • While yt-dlp-ejs and the external JavaScript runtimes are currently only used with YouTube, yt-dlp's usage of these 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.

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Angry Angry 0
Sad Sad 0
Wow Wow 0