Skip to content

yt-dlp-master, yt-dlp-nightly: Add notes and update suggest - #3112

Closed
404NetworkError wants to merge 2 commits into
ScoopInstaller:masterfrom
404NetworkError:yt-dlp
Closed

404NetworkError wants to merge 2 commits into
ScoopInstaller:masterfrom
404NetworkError:yt-dlp

Conversation

@404NetworkError

Copy link
Copy Markdown
  • Use conventional PR title: <manifest-name[@version]|chore>: <general summary of the pull request>
  • I have read the Contributing Guide

Matches latest yt-dlp manifest

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Summary by CodeRabbit

  • Documentation
    • Added setup guidance noting that full yt-dlp functionality requires a JavaScript runtime. Deno is the default choice; users can select another runtime through --js-runtimes or yt-dlp.conf.
    • Listed Deno, Node.js, Node.js LTS, Node.js 22, Bun, and QuickJS as suggested runtime options.

Walkthrough

The yt-dlp master and nightly manifests now describe the JavaScript runtime requirement, Deno as the default, and runtime override options. Both manifests also suggest six JavaScript runtime packages.

Changes

JavaScript runtime guidance

Layer / File(s) Summary
Runtime notes and package suggestions
bucket/yt-dlp-master.json, bucket/yt-dlp-nightly.json
Both manifests add notes about the JavaScript runtime requirement, default runtime, and override options. Both add six packages under js-runtime suggestions.

Priority: ⬇️ Low

Merge Risk: 🔵 Low · up to 39546

Users may select Deno unintentionally or install an unsupported Bun version, but the impact is limited to JavaScript runtime functionality.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly identifies both manifests and summarizes the added notes and updated suggestions. It is concise and related to the main changes.
Description check Passed The description includes the required checklist items and briefly states that the manifests match the latest yt-dlp manifest. It is relevant and sufficiently complete for this small change.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4


ℹ️ Review info
⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e0eb9bc4-1cb5-419d-b214-1242ddb78071
📥 Commits

Reviewing files that changed from the base of the PR and between 13bfedb and 395467b.

📒 Files selected for processing: 2
  • bucket/yt-dlp-master.json
  • bucket/yt-dlp-nightly.json

Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 1 remain after this review.

Comment thread bucket/yt-dlp-master.json
"homepage": "https://github.com/yt-dlp/yt-dlp-master-builds",
"notes": [
"Requires a JavaScript runtime for full functionality (e.g., deno, node, bun).",
"By default yt-dlp prefers 'deno' — use `--js-runtimes <runtime>` as an argument, or edit `yt-dlp.conf` to override."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🔎 Supported by static analysis

🏁 Script executed:

git diff --no-ext-diff 13bfedb05494a7a77196bfd197931316990048cc 395467b9b9bcfb943b263698beda351712a52954 -- bucket/yt-dlp-master.json
sed -n '1,30p' bucket/yt-dlp-master.json

Repository: ScoopInstaller/Versions

Length of output: 2349


🌐 Web query:

yt-dlp options.py js-runtimes no-js-runtimes default deno runtime priority

💡 Result:

<source_evidence>
<source kind="search">
<title>yt-dlp/yt_dlp/options.py at master · yt-dlp/yt-dlp · GitHub</title>
<location>https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/options.py</location>
<excerpt>citeturn0search1 [wordlim: 200] Crawled: 3 weeks ago; In order to use a lower priority runtime when &quot;deno&quot; is available, &#39; &#39;--no-js-runtimes needs to be passed before enabling other runtimes&#39;)) general.add_option( &#39;--no-js-runtimes&#39;, dest=&#39;js_runtimes&#39;, action=&#39;store_const&#39;, const=[], help=&#39;Clear JavaScript runtimes to enable, including defaults and those provided by previous --js-runtimes&#39;) general.add_option( &#39;--remote-components&#39;, metavar=&#39;COMPONENT&#39;, dest=&#39;remote_components&#39;, action=&#39;callback&#39;, callback=_list_from_options_callback, type=&#39;str&#39;, callback_kwargs={&#39;delim&#39;: None}, default=[], help=( &#39;Remote components to allow yt-dlp to fetch when required. ... &#39; &#39;Supported values: ejs:npm (external JavaScript components from npm), &#39; &#39;ejs:github (external JavaScript components from yt-dlp-ejs GitHub).
</excerpt>
</source>
<source kind="search">
<title>js runtimes always defaults to deno and ignores --js-runtimes flag in nightly · Issue #14867 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 14867 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search0 [wordlim: 200] Published: last year; Crawled: last week;     --no-js-runtimes                Clear JavaScript runtimes to enable, ... Only after I used `yt-dlp -v --js-runtimes quickjs` &quot;quickjs&quot; showed up. ... to join this conversation on GitHub.

# js runtimes always defaults to deno and ignores --js-runtimes flag in nightly #14867

New issue

Copy link

New issue

Copy link

Closed

Closed

js runtimes always defaults to deno and ignores --js-runtimes flag in nightly#14867

Copy link

Labels

ejs/jscRelated to the JS Challenge framework and/or EJS libraryRelated to the JS Challenge framework and/or EJS libraryquestionQuestionQuestion

## Description

santarl

opened on Nov 1, 2025

Issue body actions

### Checklist

  * [Input] I&#39;m reporting a bug unrelated to a specific site
  * [Input] I&#39;ve verified that I have updated yt-dlp to nightly or master (update instructions)
  * [Input] I&#39;ve searched known issues, the FAQ, and the bugtracker for similar issues including closed ones. DO NOT post duplicates
  * [Input] I&#39;ve read the policy against AI/LLM contributions and understand I may be blocked from the repository if it is violated

### Provide a description that is worded well enough to be understood

If deno is installed, the --js-runtimes flag is comepletely ignored and always defaults to deno.

only uninstalling deno/ removing it from path lets me choose between other runtimes.

yt-dlp_log.txt

### Provide verbose output that clearly demonstrates the problem

  * [Input] Run your yt-dlp command with -vU flag added (`yt-dlp -vU &lt;your command line&gt;`)
  * [Input] If using API, add `&#39;verbose&#39;: True` to `YoutubeDL` params instead
  * [Input] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output
    
    &gt; yt-dlp -vU &quot;https://www.youtube.com/watch?v=-DUhb_RkEd4&quot; -F --js-runtimes=bun
    [debug] Command-line config: [&#39;-vU&#39;, &#39;https://www.youtube.com/watch?v=-DUhb_RkEd4&#39;, &#39;-F&#39;, &#39;--js-runtimes=bun&#39;]
    [debug] User config &quot;C:\Users\lain/.config\yt-dlp\config.txt&quot;: [&#39;--mark-watched&#39;, &#39;--write-auto-subs&#39;, &#39;--write-subs&#39;]
## Activity

  1. santarl

added

bugBug that is not site-specificBug that is not site-specific

triageUntriaged issueUntriaged issue

on Nov 1, 2025

  2. santarl

changed the title ~~[-]preferred js runtime flag --js-runtimes is always ignored and defaults to deno even if something else is specified[/-]~~ [+][Bug] js runtime always defaults to deno and ignores --js-runtime flag in nightly[/+] on Nov 1, 2025

  3. santarl

changed the title ~~[-][Bug] js runtime always defaults to deno and ignores --js-runtime flag in nightly[/-]~~ [+][Bug] js runtimes always defaults to deno and ignores --js-runtimes flag in nightly[/+] on Nov 1, 2025

  4. ### Grub4K commented on Nov 1, 2025

Grub4K

on Nov 1, 2025

Member

More actions

you want `--no-js-runtimes --js-runtimes bun`

👍React with 👍3 Reacted by snta, Adifagos and Atsushi2965

  5. Grub4K

added

questionQuestionQuestion

and removed

bugBug that is not site-specificBug that is not site-specific

triageUntriaged issueUntriaged issue

on Nov 1, 2025

  6. ### bashonly commented on Nov 1, 2025

bashonly

on Nov 1, 2025

Member

More actions

To expand on the above solution: Deno always has highest priority, so if it is left enabled, it will be chosen. You need to pass `--no-js-runtimes` first in order to clear the enable list.
    
    `--js-runtimes RUNTIME[:PATH]    Additional JavaScript runtime to enable,
                                    with an optional path to the runtime
                                    location. This option can be used multiple
                                    times to enable multiple runtimes. Supported
                                    runtimes: deno, node, bun, quickjs. By
                                    default, o…[truncated]</excerpt>
</source>
<source kind="search">
<title>GitHub - yt-dlp/yt-dlp at nocodeopensource.io · GitHub</title>
<location>https://github.com/yt-dlp/yt-dlp?ref=nocodeopensource.io</location>
<excerpt>citeturn0search2 [wordlim: 200] Crawled: last week; A JavaScript runtime/engine like deno (recommended), node.js, bun, or QuickJS is also required to run yt-dlp-ejs. ...     --no-js-runtimes                Clear JavaScript runtimes to enable,
</excerpt>
</source>
<source kind="search">
<title>YouTube downloads stuck in infinite 403 loop due to SABR streaming when no JS runtime is available · Issue #15675 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 15675 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search3 [wordlim: 200] Published: 9 months ago; Crawled: 6 days ago;     [ERR] WARNING: [youtube] No supported JavaScript runtime could be found.Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. ... See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
</excerpt>
</source>
<source kind="search">
<title>[YouTube] Intermittent &quot;HTTP Error 403: Forbidden&quot; when downloading videos · Issue #17395 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 17395 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search4 [wordlim: 200] Published: 2 months ago; Crawled: last week;     [debug] System config &quot;/etc/yt-dlp.conf&quot;: [&#39;--no-js-runtimes&#39;, &#39;--js-runtimes&#39;, &#39;node&#39;, &#39;--live-from-start&#39;, &#39;--no-playlist&#39;, &#39;--concurrent-fragments&#39;, &#39;4&#39;, &#39;--output&#39;, &#39;%(channel)s - %(upload_date&gt;%Y-%m-%d)s - %(title)s.%(ext)s&#39;, &#39;--output&#39;, &#39;subtitle:Subtitles/%(id)s.%(ext)s&#39;, &#39;--output&#39;, &#39;thumbnail:Thumbnails/%(id)s.%(ext)s&#39;, &#39;--windows-filenames&#39;, &#39;--force-overwrites&#39;, &#39;--write-thumbnail&#39;, &#39;--write-subs&#39;, &#39;--write-auto-subs&#39;, &#39;--sub-format&#39;, &#39;vtt&#39;, &#39;--sub-langs&#39;, &#39;.*-orig&#39;, &#39;--embed-subs&#39;, &#39;--embed-thumbnail&#39;, &#39;--embed-metadata&#39;, &#39;--embed-chapters&#39;, &#39;--extractor-args&#39;, &#39;youtube:player-client=mweb&#39;, &#39;-t&#39;, &#39;sleep&#39;, &#39;--force-ipv4&#39;, &#39;--verbose&#39;]
</excerpt>
</source>
<omitted_sources count="33">Additional source records were omitted from this bounded result.</omitted_sources>
</source_evidence>

Citations:

- 1: https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/options.py?utm_source=openai

Document the flag sequence for selecting a non-default runtime.

--js-runtimes <runtime> adds a runtime. It does not disable the default deno, which has the highest priority. If Deno is installed, --js-runtimes node can still select Deno. To select another runtime, clear the list first with --no-js-runtimes.

Suggested wording
--- "a/bucket/yt-dlp-master.json"
+++ "b/bucket/yt-dlp-master.json"
@@ -4,7 +4,7 @@
     "homepage": "https://github.com/yt-dlp/yt-dlp-master-builds",
     "notes": [
         "Requires a JavaScript runtime for full functionality (e.g., deno, node, bun).",
-        "By default yt-dlp prefers 'deno' — use `--js-runtimes <runtime>` as an argument, or edit `yt-dlp.conf` to override."
+        "By default yt-dlp prefers 'deno' — use `--no-js-runtimes --js-runtimes <runtime>` to select another runtime, or set the same options in `yt-dlp.conf`."
     ],
     "license": "Freeware",
     "suggest": {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"By default yt-dlp prefers 'deno' — use `--js-runtimes <runtime>` as an argument, or edit `yt-dlp.conf` to override."
"By default yt-dlp prefers 'deno' — use `--no-js-runtimes --js-runtimes <runtime>` to select another runtime, or set the same options in `yt-dlp.conf`."

Comment thread bucket/yt-dlp-master.json
"nodejs",
"nodejs-lts",
"versions/nodejs22",
"bun",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🔎 Supported by static analysis

🏁 Script executed:

git diff --no-ext-diff 13bfedb05494a7a77196bfd197931316990048cc 395467b9b9bcfb943b263698beda351712a52954 -- bucket/yt-dlp-master.json
sed -n '10,22p' bucket/yt-dlp-master.json

Repository: ScoopInstaller/Versions

Length of output: 1426


🌐 Web query:

ScoopInstaller Main bun.json 1.4.3 yt-dlp Bun 1.3.14 unsupported versions/bun1.3

💡 Result:

<source_evidence>
<source kind="open_page">
<title></title>
<location>https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/bun.json</location>
<excerpt>citeturn1view0 [wordlim: 200] Crawled: today; Content type: text/plain; Source: open({&quot;ref_id&quot;:&quot;https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/bun.json&quot;,&quot;lineno&quot;:null}); Total lines: 95
L0: {
L1:     &quot;version&quot;: &quot;1.4.4&quot;,
L2:     &quot;description&quot;: &quot;Incredibly fast JavaScript runtime, bundler, transpiler and package manager - all in one.&quot;,
L3:     &quot;homepage&quot;: &quot;https://bun.sh/&quot;,
L4:     &quot;license&quot;: &quot;MIT&quot;,
L5:     &quot;notes&quot;: &quot;For the last release built on the original Zig codebase, use `versions/bun1.3`.&quot;,
L6:     &quot;suggest&quot;: {
L7:         &quot;vcredist&quot;: &quot;extras/vcredist2022&quot;
L8:     },
L9:     &quot;architecture&quot;: {
L10:         &quot;64bit&quot;: {
L11:             &quot;url&quot;: [
L12:                 &quot;https://github.com/oven-sh/bun/releases/download/bun-v1.4.4/bun-windows-x64.zip&quot;,
L13:                 &quot;https://github.com/oven-sh/bun/releases/download/bun-v1.4.4/bun-windows-x64-baseline.zip&quot;
L14:             ],
L15:             &quot;hash&quot;: [
L16:                 &quot;cd2c0fccc78f3ede1f50ca827a15f063eda13d4d150a3d0674f4f6e323d864a5&quot;,
L17:                 &quot;0f20ce6674d4f2dbcc8c5d59fdf99f7ba45f8c3b367e0f5781cbfa30a1c78d99&quot;
L18:             ]
L19:         },
L20:         &quot;arm64&quot;: {
L21:             &quot;url&quot;: &quot;https://github.com/oven-sh/bun/releases/download/bun-v1.4.4/bun-windows-aarch64.zip&quot;,
L22:             &quot;hash&quot;: &quot;2d57a0eec0cb44d95c918c3f9734f60455a1306ae5085d76fc68f44e3ee30d09&quot;
L23:         }
L24:     },
L25:     &quot;pre_install&quot;: [
L26:         &quot;# Migrate legacy Bun data if it exists and the new persist directory doesn&#39;t exist&quot;,
L27:         &quot;$legacy_bun = Join-Path -Path $env:USERPROFILE -ChildPath &#39;.bun&#39;&quot;,
L28:         &quot;if ((Test-Path $legacy_bun) -and -not (Test-Path $persist_dir)) {&quot;,
L29:         &quot;    Write-Host \&quot;Migrating legacy Bun data from &#39;$legacy_bun&#39; to &#39;$persist_dir&#39;.\&quot; -ForegroundColor Yellow&quot;,
L30:         &quot;    Move-Item $legacy_bun $persist_dir -Force&quot;,
L31:         &quot;} elseif ((Test-Path $legacy_bun) -and (Test-Path $persist_dir)) {&quot;,
L32:         &quot;    Write-Host \&quot;Found both &#39;$legacy_bun&#39; and &#39;$persist_dir&#39;. Skipping auto-migration; please migrate manually if needed.\&quot; -ForegroundColor Yellow&quot;,
L33:         &quot;}&quot;,
L34:         &quot;&quot;,
L35:         &quot;# Extract the appropriate binary based on architecture and CPU features&quot;,
L36:         &quot;if ($architecture -eq &#39;arm64&#39;) {&quot;,
L37:         &quot;    $target = &#39;bun-windows-aarch64&#39;&quot;,
L38:         &quot;} else {&quot;,
L39:         &quot;    $avx2 = Start-Job -ScriptBlock {&quot;,
L40:         &quot;        Add-Type -MemberDefinition &#39;[DllImport(\&quot;kernel32.dll\&quot;)] public static extern bool IsProcessorFeaturePresent(int ProcessorFeature);&#39; -Name Kernel32 -Namespace Win32&quot;,
L41:         &quot;        return [Win32.Kernel32]::IsProcessorFeaturePresent(40)&quot;,
L42:         &quot;    } | Receive-Job -Wait -AutoRemoveJob&quot;,
L43:         &quot;    $target = &#39;bun-windows-x64&#39;&quot;,
L44:         &quot;    if (-not $avx2) {&quot;,
L45:         &quot;        $target += &#39;-baseline&#39;&quot;,
L46:         &quot;    }&quot;,
L47:         &quot;}&quot;,
L48:         &quot;Move-Item \&quot;$dir\\$target\\bun.exe\&quot; \&quot;$dir\\bun.exe\&quot;&quot;,
L49:         &quot;Remove-Item \&quot;$dir\\bun-windows-*\&quot; -Recurse&quot;
L50:     ],
L51:     &quot;installer&quot;: {
L52:         &quot;script&quot;: &quot;Add-Path -Path \&quot;$persist_dir\\bin\&quot; -Global:$global -Force&quot;
L53:     },
L54:     &quot;env_set&quot;: {
L55:         &quot;BUN_INSTALL&quot;: …[truncated]</excerpt>
</source>
<source kind="open_page">
<title></title>
<location>https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/yt-dlp.json</location>
<excerpt>citeturn1view1 [wordlim: 200] Crawled: today; Content type: text/plain; Source: open({&quot;ref_id&quot;:&quot;https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/yt-dlp.json&quot;,&quot;lineno&quot;:null}); Total lines: 61
L0: {
L1:     &quot;version&quot;: &quot;2026.10.21&quot;,
L2:     &quot;description&quot;: &quot;A youtube-dl fork with additional features and fixes.&quot;,
L3:     &quot;homepage&quot;: &quot;https://discord.gg/H5MNcFW63r&quot;,
L4:     &quot;notes&quot;: [
L5:         &quot;Requires a JavaScript runtime for full functionality (e.g., deno, node, bun).&quot;,
L6:         &quot;By default yt-dlp prefers &#39;deno&#39; — use `--js-runtimes &lt;runtime&gt;` as an argument, or edit `yt-dlp.conf` to override.&quot;
L7:     ],
L8:     &quot;license&quot;: &quot;Unlicense&quot;,
L9:     &quot;suggest&quot;: {
L10:         &quot;js-runtime&quot;: [
L11:             &quot;deno&quot;,
L12:             &quot;nodejs&quot;,
L13:             &quot;nodejs-lts&quot;,
L14:             &quot;versions/nodejs22&quot;,
L15:             &quot;bun&quot;,
L16:             &quot;quickjs&quot;
L17:         ],
L18:         &quot;ffmpeg&quot;: &quot;ffmpeg&quot;
L19:     },
L20:     &quot;architecture&quot;: {
L21:         &quot;64bit&quot;: {
L22:             &quot;url&quot;: &quot;https://github.com/yt-dlp/yt-dlp/releases/download/2026.10.21/yt-dlp.exe&quot;,
L23:             &quot;hash&quot;: &quot;33121d192d706e62f684a06f80918e3f3a8ba52ac3a65213b6951c39c7d9f555&quot;
L24:         },
L25:         &quot;32bit&quot;: {
L26:             &quot;url&quot;: &quot;https://github.com/yt-dlp/yt-dlp/releases/download/2026.10.21/yt-dlp_x86.exe#/yt-dlp.exe&quot;,
L27:             &quot;hash&quot;: &quot;7ce38c77db13db50c64e656b1056a0448e6c38ec0f0ccf28e30dd5271c008850&quot;
L28:         },
L29:         &quot;arm64&quot;: {
L30:             &quot;url&quot;: &quot;https://github.com/yt-dlp/yt-dlp/releases/download/2026.10.21/yt-dlp_arm64.exe#/yt-dlp.exe&quot;,
L31:             &quot;hash&quot;: &quot;1380a9f105302764e6a5d383c2f07238ae242f0f4fbf3414aea00e56619a79b3&quot;
L32:         }
L33:     },
L34:     &quot;bin&quot;: &quot;yt-dlp.exe&quot;,
L35:     &quot;pre_install&quot;: &quot;if (-not (Test-Path \&quot;$persist_dir\\yt-dlp.conf\&quot;)) { New-Item \&quot;$dir\\yt-dlp.conf\&quot; -ItemType file | Out-Null }&quot;,
L36:     &quot;persist&quot;: [
L37:         &quot;yt-dlp.conf&quot;,
L38:         &quot;ytdlp_plugins&quot;,
L39:         &quot;yt-dlp-plugins&quot;
L40:     ],
L41:     &quot;checkver&quot;: {
L42:         &quot;github&quot;: &quot;https://github.com/yt-dlp/yt-dlp&quot;
L43:     },
L44:     &quot;autoupdate&quot;: {
L45:         &quot;architecture&quot;: {
L46:             &quot;64bit&quot;: {
L47:                 &quot;url&quot;: &quot;https://github.com/yt-dlp/yt-dlp/releases/download/$version/yt-dlp.exe&quot;
L48:             },
L49:             &quot;32bit&quot;: {
L50:                 &quot;url&quot;: &quot;https://github.com/yt-dlp/yt-dlp/releases/download/$version/yt-dlp_x86.exe#/yt-dlp.exe&quot;
L51:             },
L52:             &quot;arm64&quot;: {
L53:                 &quot;url&quot;: &quot;https://github.com/yt-dlp/yt-dlp/releases/download/$version/yt-dlp_arm64.exe#/yt-dlp.exe&quot;
L54:             }
L55:         },
L56:         &quot;hash&quot;: {
L57:             &quot;url&quot;: &quot;$baseurl/SHA2-256SUMS&quot;
L58:         }
L59:     }
L60: }
</excerpt>
</source>
<source kind="search">
<title>[Announcement] Bun support is now limited and deprecated · Issue #16766 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 16766 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search0 [wordlim: 200] Published: 5 months ago; Crawled: last month; As of the next yt-dlp and/or ejs release, only Bun versions `1.2.11` through `1.3.14` will be supported.

# [Announcement] Bun support is now limited and deprecated #16766

New issue

Copy link

New issue

Copy link

Closed

#16786

Closed

[Announcement] Bun support is now limited and deprecated#16766

#16786

Copy link

Labels

discussion/announcementejs/jscRelated to the JS Challenge framework and/or EJS libraryRelated to the JS Challenge framework and/or EJS library

## Description

bashonly

opened on May 20, 2026

Issue body actions

Due to foreseeable compatibility and security issues, yt-dlp&#39;s support for Bun as an `ejs`-compatible JavaScript runtime is being both limited and deprecated.

As of the next yt-dlp and/or ejs release, only Bun versions `1.2.11` through `1.3.14` will be supported. The rationale for this change is twofold:

  1. The minimum required version is being raised from `1.0.31` to `1.2.11` because building the `ejs` package with a version earlier than `1.2.0` results in the ejs lockfile being ignored, which is a significant security concern for users when considering all of the recent npm supply chain attacks. Additionally, the support floor is being bumped to `1.2.11` instead of `1.2.0` because the `ejs` test suite cannot be run with versions of Bun earlier than `1.2.11`.

  2. Bun was recently rewritten in Rust using Claude, and its development seems to have taken a turn towards being fully vibe-coded. This is alarming and disappointing for a number of reasons, and frankly it seems like a future headache that we&#39;d prefer to avoid. We are adding a support ceiling of version `1.3.14`, as that is the last release built from the original zig codebase.

Bun support will also be deprecated. This means that while yt-dlp will continue to support this narrower range of Bun versions for as long as they&#39;re able to meet the needs of yt-dlp and ejs, we reserve the right to completely drop support for Bun should it at any point become too burdensome to maintain.

* * *

See the EJS wiki article for more information about supported JavaScript runtimes.

Pinned by bashonly

Pinned comment options

bashonlyon May 24, 2026

Support for `bun&gt;1.3.14` has now been dropped. yt-dlp will allow the user to bring a newer version of bun, but doing so will trigger a warning that informs the user their version is unsupported and directs them not to open a bug report. Any such bug reports will be ignored and closed. If you believe you&#39;ve encountered an actual yt-dlp/ejs bug that should be brought to our attention, then reproduce the issue using a supported JS runtime/version.

This announcement thread was created solely to communicate with users of yt-dlp&#39;s bun integration: to communicate the upcoming changes to them, and so they could communicate feedback to us. (Note that this issue was created inbetween the similar node …</excerpt>
</source>
<source kind="search">
<title>GitHub - ScoopInstaller/Main: 📦 The default bucket for Scoop. · GitHub</title>
<location>https://github.com/ScoopInstaller/Main</location>
<excerpt>citeturn0search1 [wordlim: 200] Crawled: today; # Scoop MainCore manifests for Scoop, the Windows command-line installer.

# Scoop Main

Core manifests for Scoop, the Windows command-line installer. For manifests that fit the Main criteria.

## How do I install these manifests?

Just do `scoop install &lt;manifest&gt;`. This is the default bucket for Scoop and is added by default.

## How do I contribute new manifests?

To make a new manifest contribution, please read the Contributing Guide.</excerpt>
</source>
<source kind="search">
<title>yt-dlp/yt_dlp/extractor/youtube/jsc/_builtin/bun.py at master · yt-dlp/yt-dlp · GitHub</title>
<location>https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/youtube/jsc/_builtin/bun.py</location>
<excerpt>citeturn0search2 [wordlim: 200] Crawled: 2 months ago;   4. /youtube ... _BUN_MAX_SUPPORTED_VERSION = (1, 3, 14)_BUN_DEPRECATION_URL = &#39;GitHub issue 16766 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)&#39;

from yt_dlp.extractor.youtube.pot.provider import provider_bug_report_message

from yt_dlp.utils import Popen

from yt_dlp.utils.networking import HTTPHeaderDict, clean_proxies

# KNOWN ISSUES:

# - If node_modules is present and includes a requested lib, the version we request is ignored

# and whatever installed in node_modules is used.

# - No way to ignore existing node_modules, lock files, etc.

# - No sandboxing options available

# - Cannot detect if npm packages are cached without potentially downloading them.

# `--no-install` appears to disable the cache.

# - npm auto-install may fail with an integrity error when using HTTP proxies

# - npm auto-install HTTP proxy support may be limited on older Bun versions

# - Cannot disable the transpiler / specify lang for stdin

@register_provider

class BunJCP(EJSBaseJCP, BuiltinIEContentProvider):

PROVIDER_NAME = &#39;bun&#39;

JS_RUNTIME_NAME = &#39;bun&#39;

BUN_NPM_LIB_FILENAME = &#39;yt.solver.bun.lib.js&#39;

SUPPORTED_PROXY_SCHEMES = [&#39;http&#39;, &#39;https&#39;]

_BUN_MAX_SUPPORTED_VERSION = (1, 3, 14)

_BUN_DEPRECATION_URL = &#39;GitHub issue 16766 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)&#39;

def _iter_script_sources(self):

yield from super()._iter_script_sources()

yield ScriptSource.BUILTIN, self._bun_npm_source

def _bun_npm_source(self, script_type: ScriptType, /):

if script_type != ScriptType.LIB:

return None

if &#39;ejs:npm&#39; not in self.ie.get_param(&#39;remote_components&#39;, []):

return self._skip_component(&#39;ejs:npm&#39;)

# Check to see if the environment proxies are compatible with Bun npm source

if unsupported_scheme := self._check_env_proxies(self._get_env_options()):

self.logger.warning(

f&#39;Bun NPM package downloads only support HTTP/HTTPS proxies; skipping remote NPM package downloads. &#39;

f&#39;Provide another distribution of the challenge solver script or use &#39;

f&#39;another JS runtime that supports &quot;{unsupported_scheme}&quot; proxies. &#39;

f&#39;For more information and alternatives, refer to {_EJS_WIKI_URL}&#39;)

return None

# Bun-specific lib scripts that uses Bun autoimport

# https://bun.com/docs/runtime/autoimport

error_hook = lambda e: self.logger.warning(

val = request_proxies.get(key)

if val is not None:

options[env] = val

if self.ie.get_param(&#39;nocheckcertificate&#39;):

options[&#39;NODE_TLS_REJECT_UNAUTHORIZED&#39;] = &#39;0&#39;

# Disable Bun transpiler cache

options[&#39;BUN_RUNTIME_TRANSPILER_CACHE_PATH&#39;] = &#39;0&#39;

# Prevent segfault: GitHub issue 22901 in oven-sh/bun (link omitted to avoid creating a cross-reference)

options.pop(&#39;JSC_useJIT&#39;, None)

if self.ejs_setting(&#39;jitless&#39;, [&#39;false&#39;]) != [&#39;false&#39;]:

options[&#39;BUN_JSC_useJIT&#39;] = &#39;0&#39;

return options

def _run_js_runtime(self, stdin: str, /) -&gt; str:

is_unsupported_version = self.runtime_info.version_tuple &gt; self._BUN_MAX_SUPPORTED_VERSION

if is_unsupported_version:

self.logger.warning(

f&#39;bun version {&quot;.&quot;.join(map(str, self.runtime_info.version_tuple))} is not supported! &#39;

f&#39;{&quot;.&quot;.join(map(str, self._BUN_MAX_SUPPORTED_VERSION))} is the last supported bun version. &#39;

f&#39;{self.ie._downloader._format_err(&quot;DO NOT&quot;, self.ie._downloader.Styles.ERROR)} &#39;

f&#39;open a bug report even if you encounter any errors!&#39;,

once=True)

else:

self.logger.info(

f&#39;bun support has been deprecated. See {self._BUN_DEPRECATION_URL} for details&#39;,

once=True)

# https://bun.com/docs/cli/run

options = [&#39;--no-addons&#39;, &#39;--prefer-offline&#39;]

if self._lib_script.variant == ScriptVariant.BUN_NPM:

# Enable auto-install even if node_modules is p…[truncated]</excerpt>
</source>
<omitted_sources count="28">Additional source records were omitted from this bounded result.</omitted_sources>
</source_evidence>

Citations:

- 1: https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/bun.json
- 2: GitHub issue 16766 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)
- 3: https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/yt-dlp.json

🏁 Script executed:

set -eu
printf '%s\n' '--- reviewed manifest ---'
nl -ba bucket/yt-dlp-master.json | sed -n '10,22p'
printf '%s\n' '--- bun1.3 paths ---'
git ls-tree -r --name-only 395467b9b9bcfb943b263698beda351712a52954 -- '*bun1.3*' '*bun-1.3*' || true
printf '%s\n' '--- bun1.3 manifest ---'
if git cat-file -e 395467b9b9bcfb943b263698beda351712a52954:bucket/versions/bun1.3.json 2>/dev/null; then
  git show 395467b9b9bcfb943b263698beda351712a52954:bucket/versions/bun1.3.json | nl -ba
else
  printf '%s\n' 'bucket/versions/bun1.3.json not present at reviewed head'
fi

Repository: ScoopInstaller/Versions

Length of output: 715


Remove the unsupported Bun suggestion.

The unversioned bun manifest installs Bun 1.4.4, while yt-dlp supports Bun only through 1.3.14. The suggested versions/bun1.3 manifest is not present at the reviewed head, so remove bun instead.

Suggested fix
--- "a/bucket/yt-dlp-master.json"
+++ "b/bucket/yt-dlp-master.json"
@@ -13,7 +13,6 @@
             "nodejs",
             "nodejs-lts",
             "versions/nodejs22",
-            "bun",
             "quickjs"
         ],
         "ffmpeg": [
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"bun",

"homepage": "https://github.com/yt-dlp/yt-dlp-nightly-builds",
"notes": [
"Requires a JavaScript runtime for full functionality (e.g., deno, node, bun).",
"By default yt-dlp prefers 'deno' — use `--js-runtimes <runtime>` as an argument, or edit `yt-dlp.conf` to override."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🔎 Supported by static analysis

🏁 Script executed:

git diff --no-ext-diff 13bfedb05494a7a77196bfd197931316990048cc 395467b9b9bcfb943b263698beda351712a52954 -- bucket/yt-dlp-nightly.json
sed -n '1,30p' bucket/yt-dlp-nightly.json

Repository: ScoopInstaller/Versions

Length of output: 2359


🌐 Web query:

yt-dlp options.py js-runtimes no-js-runtimes default deno runtime priority

💡 Result:

<source_evidence>
<source kind="search">
<title>yt-dlp/yt_dlp/options.py at master · yt-dlp/yt-dlp · GitHub</title>
<location>https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/options.py</location>
<excerpt>citeturn0search0 [wordlim: 200] Crawled: 3 weeks ago; In order to use a lower priority runtime when &quot;deno&quot; is available, &#39; &#39;--no-js-runtimes needs to be passed before enabling other runtimes&#39;)) general.add_option( &#39;--no-js-runtimes&#39;, dest=&#39;js_runtimes&#39;, action=&#39;store_const&#39;, const=[], help=&#39;Clear JavaScript runtimes to enable, including defaults and those provided by previous --js-runtimes&#39;) general.add_option( &#39;--remote-components&#39;, metavar=&#39;COMPONENT&#39;, dest=&#39;remote_components&#39;, action=&#39;callback&#39;, callback=_list_from_options_callback, type=&#39;str&#39;, callback_kwargs={&#39;delim&#39;: None}, default=[], help=( &#39;Remote components to allow yt-dlp to fetch when required. ... &#39; &#39;Supported values: ejs:npm (external JavaScript components from npm), &#39; &#39;ejs:github (external JavaScript components from yt-dlp-ejs GitHub).
 &#39; &#39;This option can be used multiple times to enable multiple runtimes. &#39; &#39;Supported runtimes are (in order of priority, from highest to lowest): deno, node, quickjs, bun. &#39; &#39;Only &quot;deno&quot; is enabled by default. The highest priority runtime that is both enabled and &#39; &#39;available will be used. In order to use a lower priority runtime when &quot;deno&quot; is available, &#39; &#39;--no-js-runtimes needs to be passed before enabling other runtimes&#39;)) general.add_option( &#39;--no-js-runtimes&#39;, dest=&#39;js_runtimes&#39;, action=&#39;store_const&#39;, const=[], help=&#39;Clear JavaScript runtimes to enable, including defaults and those provided by previous --js-runtimes&#39;) general.add_option( &#39;--remote-components&#39;, metavar=&#39;COMPONENT&#39;, dest=&#39;remote_components&#39;, action=&#39;callback&#39;, callback=_list_from_options_callback, type=&#39;str&#39;, callback_kwargs={&#39;delim&#39;: None}, default=[], help=( &#39;Remote components to allow yt-dlp to fetch when required. &#39; &#39;This option is currently not needed if you are using an official executable &#39; &#39;or have the requisite version of the yt-dlp-ejs package installed. general.add_option(

&#39;--no-plugin-dirs&#39;,

dest=&#39;plugin_dirs&#39;, action=&#39;store_const&#39;, const=[],

help=&#39;Clear plugin directories to search, including defaults and those provided by previous --plugin-dirs&#39;)

general.add_option(

&#39;--js-runtimes&#39;,

metavar=&#39;RUNTIME[:PATH]&#39;,

dest=&#39;js_runtimes&#39;,

action=&#39;callback&#39;,

callback=_list_from_options_callback,

type=&#39;str&#39;,

callback_kwargs={&#39;delim&#39;: None},

default=[&#39;deno&#39;],

help=(

&#39;Additional JavaScript runtime to enable, with an optional location for the runtime &#39;

&#39;(either the path to the binary or its containing directory). &#39;

&#39;This option can be used multiple times to enable multiple runtimes. &#39;

&#39;Supported runtimes are (in order of priority, from highest to lowest): deno, node, quickjs, bun. &#39;

&#39;Only &quot;deno&quot; is enabled by default. The highest priority runtime that is both enabled and &#39;

&#39;available will be used. In order to use a lower priority runtime when &quot;deno&quot; is available, &#39;

&#39;--no-js-runtimes needs to be passed before enabling other runtimes&#39;))

general.add_option(

&#39;--no-js-runtimes&#39;,

dest=&#39;js_runtimes&#39;, action=&#39;store_const&#39;, const=[],

help=&#39;Clear JavaScript runtimes to enable, including defaults and those provided by previous --js-runtimes&#39;)

general.add_option(

&#39;--remote-components&#39;,

metavar=&#39;COMPONENT&#39;,

dest=&#39;remote_components&#39;,

action=&#39;callback&#39;,

callback=_list_from_options_callback,

type=&#39;str&#39;,

callback_kwargs={&#39;delim&#39;: None},

default=[],

help=(

&#39;Remote components to allow yt-dlp to fetch when required. &#39;

&#39;This option is currently not needed if you are using an official executable &#39;
…[truncated]</excerpt>
</source>
<source kind="search">
<title>js runtimes always defaults to deno and ignores --js-runtimes flag in nightly · Issue #14867 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 14867 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search1 [wordlim: 200] Published: last year; Crawled: last week;     &gt; yt-dlp -vU &quot;https://www.youtube.com/watch? ...     --no-js-runtimes                Clear JavaScript runtimes to enable, ... Also `yt-dlp -v` doesn&#39;t list all available runtimes by default, only deno. ... Hypothetically, any character can be found in a path, so nothing would work as a delimiter between runtimes if we tried to have the option accept a list of runtimes. ... to join this conversation on GitHub.
## Activity

  1. santarl

added

bugBug that is not site-specificBug that is not site-specific

triageUntriaged issueUntriaged issue

on Nov 1, 2025

  2. santarl

changed the title ~~[-]preferred js runtime flag --js-runtimes is always ignored and defaults to deno even if something else is specified[/-]~~ [+][Bug] js runtime always defaults to deno and ignores --js-runtime flag in nightly[/+] on Nov 1, 2025

  3. santarl

changed the title ~~[-][Bug] js runtime always defaults to deno and ignores --js-runtime flag in nightly[/-]~~ [+][Bug] js runtimes always defaults to deno and ignores --js-runtimes flag in nightly[/+] on Nov 1, 2025

  4. ### Grub4K commented on Nov 1, 2025

Grub4K

on Nov 1, 2025

Member

More actions

you want `--no-js-runtimes --js-runtimes bun`

👍React with 👍3 Reacted by snta, Adifagos and Atsushi2965

  5. Grub4K

added

questionQuestionQuestion

and removed

bugBug that is not site-specificBug that is not site-specific

triageUntriaged issueUntriaged issue

on Nov 1, 2025

  6. ### bashonly commented on Nov 1, 2025

bashonly

on Nov 1, 2025

Member

More actions

To expand on the above solution: Deno always has highest priority, so if it is left enabled, it will be chosen. You need to pass `--no-js-runtimes` first in order to clear the enable list.
    
    `--js-runtimes RUNTIME[:PATH]    Additional JavaScript runtime to enable,
                                    with an optional path to the runtime
                                    location. This option can be used multiple
                                    times to enable multiple runtimes. Supported
                                    runtimes: deno, node, bun, quickjs. By
                                    default, only &quot;deno&quot; runtime is enabled.
    --no-js-runtimes                Clear JavaScript runtimes to enable,
                                    including defaults and those provided by
                                    previous --js-runtimes
    `

                                    with an optional location for the runtime
                                    (either the path to the binary or its
                                    containing directory). This option can be
                                    used multiple times to enable multiple
                                    runtimes. Supported runtimes are (in order
                                    of priority, from highest to lowest): deno,
                                    node, quickjs, bun. Only &quot;deno&quot; is enabled
                                    by default. The highest priority runtime
                                    that is both enabled and available will be
                                    used. In order to use a lower priority
                                    runtime when &quot;deno&quot; is available, --no-js-
                                    runtimes needs to be passed before enabling
                                    other runtimes
    --no-js-runtimes                Clear JavaScript runtimes to enable,
                                    including defaults and those provided by
                                    previous --js-runtimes
    `

  15. bashonly

added

ejs/jscRelated to the JS Challenge framework and/or EJS libraryRelated to the JS Challenge framework and/or EJS library

on Apr 1, 2026

to join this conversation on GitHub. Already have an account? Sign in to comment

</excerpt>
</source>
<source kind="search">
<title>How do I tell yt-dlp which js-runtimes to use from within python? · Issue #15466 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 15466 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search2 [wordlim: 200] Published: 9 months ago; Crawled: 5 days ago; See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one ...     [debug] params: {&#39;format&#39;: &#39;bestaudio/best&#39;, &#39;default_search&#39;: &#39;auto&#39;, &#39;playliststart&#39;: 0, &#39;limit_rate&#39;: &#39;250K&#39;, &#39;rm_cache_dir&#39;: True, &#39;extract_flat&#39;: False, &#39;playlistend&#39;: 50, &#39;nocheckcertificate&#39;: True, &#39;ignore_no_formats_error&#39;: True, &#39;cookies&#39;: &#39;./cookies.txt&#39;, &#39;http_headers&#39;: {&#39;User-Agent&#39;: &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36&#39;, &#39;Accept&#39;: &#39;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#39;, &#39;Accept-Language&#39;: &#39;en-US,en;q=0.9&#39;, &#39;Sec-Fetch-Mode&#39;: &#39;navigate&#39;}, &#39;verbose&#39;: True, &#39;js_runtimes&#39;: {&#39;deno&#39;: {}}, &#39;remote_components&#39;: set(), &#39;compat_opts&#39;: set()}
### Provide verbose output that clearly demonstrates the problem

  * [Input] Run your yt-dlp command with -vU flag added (`yt-dlp -vU &lt;your command line&gt;`)
  * [Input] If using API, add `&#39;verbose&#39;: True` to `YoutubeDL` params instead
  * [Input] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output
    
    WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
    WARNING: [youtube] 9aTg2tT4axc: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See  https://github.com/yt-dlp/yt-dlp/issues/12482  for more details
    WARNING: [youtube] 9aTg2tT4axc: Some web client https formats have been skipped as they are missing a url. Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
    [debug] [youtube] Forcing &quot;main&quot; player JS variant for player 50cc0679
            original url = /s/player/50cc0679/player_es6.vflset/en_US/base.js
    [youtube] 9aTg2tT4axc: Downloading android sdkless player API JSON
    [youtube] 9aTg2tT4axc: Downloading web safari player API JSON
    [debug] [youtube] 9aTg2tT4axc: Detected a 15s ad skippable after 5s for web_safari
    WARNING: [youtube] 9aTg2tT4axc: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See  https://github.com/yt-dlp/yt-dlp/issues/12482  for more details
    [youtube] 9aTg2tT4axc: Downloading m3u8 information
    [debug] [youtube] 9aTg2tT4axc: Detected experiment to bind GVS PO Token to video id.
    WARNING: [youtube] 9aTg2tT4axc: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See  https://github.com/yt-dlp/yt-dlp/issues/12482  for more details
    Starting Player Process for Guild random stuff
    [debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec, channels, acodec, lang, proto
    [debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec, channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id


</excerpt>
</source>
<source kind="search">
<title>n challenge solving failed: Some formats may be missing. · Issue #16694 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 16694 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search3 [wordlim: 200] Published: 5 months ago; Crawled: last week; WARNING: [youtube] No supported JavaScript runtime could be found.Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. ... See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one
  2. ### rdamas commented on May 11, 2026

rdamas

on May 11, 2026

Contributor

More actions

Try again with `deno` or any other supported JS runtime installed, as suggested by the WARNING yt-dlp printed out:

WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one

`yt-dlp` needs the JS runtime to solve the challenge.

👍React with 👍2 Reacted by nicolaasjan and mzso

  3. bashonly

added

questionQuestionQuestion

and removed

site-bugIssue with a specific websiteIssue with a specific website

triageUntriaged issueUntriaged issue

on May 12, 2026

  4. bashonly

closed this as completedon May 12, 2026

to join this conversation on GitHub. Already have an account? Sign in to comment</excerpt>
</source>
<source kind="search">
<title>yt-dlp can&#39;t find my Node installation no matter what I do · Issue #16305 · yt-dlp/yt-dlp · GitHub</title>
<location>GitHub issue 16305 in yt-dlp/yt-dlp (link omitted to avoid creating a cross-reference)</location>
<excerpt>citeturn0search4 [wordlim: 200] Published: 7 months ago; Crawled: last week; It acts like yt-dlp is ignoring its own command line option. ... Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. ... See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one.
</excerpt>
</source>
<omitted_sources count="31">Additional source records were omitted from this bounded result.</omitted_sources>
</source_evidence>

Citations:

- 1: https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/options.py?utm_source=openai

Document the flag sequence that selects a non-default runtime.

--js-runtimes <runtime> adds a runtime. It does not remove the default deno, which has higher priority when available. Use --no-js-runtimes --js-runtimes <runtime> to select only the requested runtime.

Suggested fix
--- "a/bucket/yt-dlp-nightly.json"
+++ "b/bucket/yt-dlp-nightly.json"
@@ -4,7 +4,7 @@
     "homepage": "https://github.com/yt-dlp/yt-dlp-nightly-builds",
     "notes": [
         "Requires a JavaScript runtime for full functionality (e.g., deno, node, bun).",
-        "By default yt-dlp prefers 'deno' — use `--js-runtimes <runtime>` as an argument, or edit `yt-dlp.conf` to override."
+        "By default yt-dlp enables and prefers 'deno'. To select another runtime, use `--no-js-runtimes --js-runtimes <runtime>` as an argument, or set these options in `yt-dlp.conf`."
     ],
     "license": "Freeware",
     "suggest": {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"By default yt-dlp prefers 'deno' — use `--js-runtimes <runtime>` as an argument, or edit `yt-dlp.conf` to override."
"By default yt-dlp enables and prefers 'deno'. To select another runtime, use `--no-js-runtimes --js-runtimes <runtime>` as an argument, or set these options in `yt-dlp.conf`."

"nodejs",
"nodejs-lts",
"versions/nodejs22",
"bun",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Remove the unsupported Bun suggestion.

The unversioned bun package can install a Bun release newer than yt-dlp’s supported maximum of 1.3.14. The reviewed tree has no versions/bun1.3 manifest, so remove this entry.

Suggested fix
--- "a/bucket/yt-dlp-nightly.json"
+++ "b/bucket/yt-dlp-nightly.json"
@@ -13,7 +13,6 @@
             "nodejs",
             "nodejs-lts",
             "versions/nodejs22",
-            "bun",
             "quickjs"
         ],
         "ffmpeg": [
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"bun",

@404NetworkError
404NetworkError deleted the yt-dlp branch October 22, 2026 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant