Skip to content

How to avoid Youtube's new "Super Resolution" AI-upscaled formats #15325

@Kazuhiko-Gushiken

Description

@Kazuhiko-Gushiken

Checklist

  • I'm requesting a site-specific feature
  • I've verified that I have updated yt-dlp to nightly or master (update instructions)
  • I've checked that all provided URLs are playable in a browser with the same IP and same login details
  • I've searched the bugtracker for similar requests including closed ones. DO NOT post duplicates
  • I've read the policy against AI/LLM contributions and understand I may be blocked from the repository if it is violated
  • I've read about sharing account credentials and I'm willing to share it if required

Region

United States of America

Example URLs

https://youtu.be/TMO4NH8HAHQ

Provide a description that is worded well enough to be understood

Recently, Youtube has been using AI to upscale older, lower resolution videos. Despite our ability to choose not to watch the upscaled version when watching within Youtube, downloading the video using yt-dlp will automatically choose the highest resolution, upscaled or not. If I want the non-upscaled, manual modification of each command must be done after checking the video.

I'm suggesting a new config tag to choose highest resolution that is not AI upscaled, as for some videos, the lower resolution is partially what makes the video special.

Provide verbose output that clearly demonstrates the problem

  • Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • If using API, add 'verbose': True to YoutubeDL params instead
  • Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

[debug] Command-line config: ['-vU', 'https://youtu.be/TMO4NH8HAHQ?si=sA02LOfVsF4Ylhkf']
[debug] User config "C:\Users\[REDACTED]\AppData\Roaming\yt-dlp\config.txt": ['--merge-output-format', 'mp4', '--no-mtime', '--print-to-file', '{\r\n  "title": "%(title)s",\r\n  "uploader": "%(uploader)s",\r\n  "upload_date": "%(upload_date>%Y-%m-%d)s",\r\n  "url": "%(webpage_url)s",\r\n  "id": "%(id)s"\r\n}', '%(title)s [%(id)s].metadata.json', '--parse-metadata', '%(uploader|)s:%(meta_artist)s', '--parse-metadata', '%(upload_date>%Y-%m-%d)s -> %(webpage_url)s:%(meta_comment)s', '--embed-metadata', '--add-metadata', '--write-description', '--write-subs', '--write-auto-subs', '--sub-langs', 'en,en-US', '--sub-langs', 'ja', '--sub-format', 'vtt/best', '-P', 'E:\\[REDACTED]\\instagram downloads\\downloads\\deep', '-i']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2025.12.08 from yt-dlp/yt-dlp [7a52ff29d] (win_exe)
[debug] Python 3.10.11 (CPython AMD64 64bit) - Windows-10-10.0.26200-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg N-110065-g30cea1d39b-20230323 (setts), ffprobe N-110065-g30cea1d39b-20230323
[debug] Optional libraries: Cryptodome-3.23.0, brotli-1.2.0, certifi-2025.11.12, curl_cffi-0.13.0, mutagen-1.47.0, requests-2.32.5, sqlite3-3.40.1, urllib3-2.6.0, websockets-15.0.1, yt_dlp_ejs-0.3.2
[debug] JS runtimes: none
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets, curl_cffi
[debug] Plugin directories: none
[debug] Loaded 1854 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: stable@2025.12.08 from yt-dlp/yt-dlp
yt-dlp is up to date (stable@2025.12.08 from yt-dlp/yt-dlp)
[debug] [youtube] [pot] PO Token Providers: none
[debug] [youtube] [pot] PO Token Cache Providers: memory
[debug] [youtube] [pot] PO Token Cache Spec Providers: webpo
[debug] [youtube] [jsc] JS Challenge Providers: bun (unavailable), deno (unavailable), node (unavailable), quickjs (unavailable)
[youtube] Extracting URL: https://youtu.be/TMO4NH8HAHQ?si=sA02LOfVsF4Ylhkf
[youtube] TMO4NH8HAHQ: Downloading webpage
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
[youtube] TMO4NH8HAHQ: Downloading android sdkless player API JSON
[youtube] TMO4NH8HAHQ: Downloading web safari player API JSON
WARNING: [youtube] TMO4NH8HAHQ: 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] TMO4NH8HAHQ: Downloading m3u8 information
[debug] [youtube] TMO4NH8HAHQ: Detected experiment to bind GVS PO Token to video id.
WARNING: [youtube] TMO4NH8HAHQ: 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] TMO4NH8HAHQ: Downloading subtitles: en, ja
[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
[debug] Searching for '(?P<meta_artist>.+)' in '%(uploader|)s'
[MetadataParser] Parsed meta_artist from '%(uploader|)s': 'dick butt'
[debug] Searching for '(?P<meta_comment>.+)' in '%(upload_date>%Y-%m-%d)s -> %(webpage_url)s'
[MetadataParser] Parsed meta_comment from '%(upload_date>%Y-%m-%d)s -> %(webpage_url)s': '2016-07-30 -> https://www.youtube.com/watch?v=TMO4NH8HAHQ'
[debug] Default format spec: bestvideo*+bestaudio/best
[info] TMO4NH8HAHQ: Downloading 1 format(s): 399-sr+251
[info] Writing '{\r\n  "title": "%(title)s",\r\n  "uploader": "%(uploader)s",\r\n  "upload_date": "%(upload_date>%Y-%m-%d)s",\r\n  "url": "%(webpage_url)s",\r\n  "id": "%(id)s"\r\n}' to: E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].metadata.json
[info] Writing video description to: E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].description
[info] Writing video subtitles to: E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].en.vtt
[debug] Invoking http downloader on "https://www.youtube.com/api/timedtext?v=TMO4NH8HAHQ&ei=Oj0_aZ65Kb-UsfIPnIeK6A0&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1765777322&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=8F65178A208FF26326BB7AC77AF7214FCA1A1343.D25236BFB3AA8D8881F2737DE59435F41E352854&key=yt8&kind=asr&lang=ja&fmt=vtt&tlang=en"
WARNING: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests
Deleting existing file E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].ja.vtt
[info] Writing video subtitles to: E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].ja.vtt
[debug] Invoking http downloader on "https://www.youtube.com/api/timedtext?v=TMO4NH8HAHQ&ei=Oj0_aZ65Kb-UsfIPnIeK6A0&caps=asr&opi=112496729&xoaf=5&xowf=1&hl=en&ip=0.0.0.0&ipbits=0&expire=1765777322&sparams=ip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cxoaf&signature=8F65178A208FF26326BB7AC77AF7214FCA1A1343.D25236BFB3AA8D8881F2737DE59435F41E352854&key=yt8&kind=asr&lang=ja&fmt=vtt"
[debug] File locking is not supported. Proceeding without locking
[download] Destination: E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].ja.vtt
[download] 100% of   50.41KiB in 00:00:00 at 338.63KiB/s
[download] E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].mp4 has already been downloaded
[Metadata] Adding metadata to "E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i "file:E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].mp4" -map 0 -dn -ignore_unknown -c copy -write_id3v1 1 -metadata "title=poor japanese idol breaks down crying (ishizuka akari)" -metadata "date=20160730" -metadata "purl=https://www.youtube.com/watch?v=TMO4NH8HAHQ" -metadata "comment=2016-07-30 -> https://www.youtube.com/watch?v=TMO4NH8HAHQ" -metadata "artist=dick butt" -metadata "genre=People & Blogs" -metadata:s:1 "language=jpn" -movflags +faststart "file:E:\[REDACTED]\instagram downloads\downloads\deep\poor japanese idol breaks down crying (ishizuka akari) [TMO4NH8HAHQ].temp.mp4"

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions