A quick PSA for everyone who uses yt-dlp to save YouTube videos to their hard drive. It’s also for developers building alternative YouTube clients, though they’ll have the situation on their radar anyway. With the release of yt-dlp 2025.11.12, the program now needs a JavaScript runtime such as Deno. The reason behind this change is Google’s ever-growing enshittification of YouTube.
Background: YouTube and enshittification
YouTube rippers like yt-dlp and independent YouTube clients like NewPipe are supposed to be blocked more aggressively in the future. The same goes for clones like PipePipe, which use yt-dlp under the hood. The reason is simple: free clients don’t show ads, and they often integrate features like SponsorBlock right out of the box.
Technically, the yt-dlp block works through a JavaScript challenge that will require a browser or a client with a full-fledged JavaScript engine. The rudimentary JavaScript interpreter built into yt-dlp so far is no longer enough. The current version, yt-dlp 2025.11.12, can now work with Deno and other JS runtimes. For users, this doesn’t mean much extra effort:
### Without Deno, yt-dlp prints a warning...
$ <strong>yt-dlp https://www.youtube.com/watch?v=dQw4w9WgXcQ</strong>
[...]
WARNING: [youtube] No supported JavaScript runtime could be found. 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. To silence this warning, you can use --extractor-args "youtube:player_client=default"
[...]
WARNING: [youtube] dQw4w9WgXcQ: 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] dQw4w9WgXcQ: Downloading m3u8 information
WARNING: [youtube] dQw4w9WgXcQ: 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
[info] dQw4w9WgXcQ: Downloading 1 format(s): 401+251
[...]
### Installing Deno through the package manager...
$ <strong>sudo pacman -S deno</strong>
### Deno solves the JS challenge...
$ <strong>yt-dlp https://www.youtube.com/watch?v=dQw4w9WgXcQ</strong>
[youtube] Extracting URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
[...]
[youtube] [jsc:deno] Solving JS challenges using deno
[...]
[download] Destination: Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) [dQw4w9WgXcQ].f251.webm
[download] 100% of 3.27MiB in 00:00:00 at 9.59MiB/s
[Merger] Merging formats into "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) [dQw4w9WgXcQ].webm"
Deleting original file Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) [dQw4w9WgXcQ].f251.webm (pass -k to keep)
Deleting original file Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster) [dQw4w9WgXcQ].f401.mp4 (pass -k to keep)
Current Situation and Outlook
In the future, package maintainers will most likely install Deno automatically as a dependency of yt-dlp. On Arch Linux that’s not the case yet, so you still have to add the package manually. Pacman makes that quick: a pacman -S deno is all it takes. It only costs you about 100 MB of disk space. On Ubuntu, though, Deno doesn’t seem to be in the repositories yet.
Right now, many downloads still work without Deno or another full-fledged JavaScript engine, but Google will certainly keep tightening the screws. The stricter the technical hurdles get, the less reliable the existing workarounds will become, until they stop working altogether. In the medium term, you should assume that downloading YouTube videos with yt-dlp won’t be possible without Deno anymore.

PS: If you wonder how you can play videos and view images in a terminal window, take a look at mplayer with libcaca and the image viewer jp2a. Both tools are in the Arch repositories and surely in those of other distributions as well. They are definitely among the little joys of everyday Linux life. But what would the Linux world be without a bit of nerdy stuff?
$ <strong>mplayer -really-quiet -vo caca video.webm</strong>
$ <strong>jp2a --colors bild.png</strong>





Leave a Reply