{"record":{"id":"f93ee8d6d3402940","repo":"ytdl-org/youtube-dl","slug":"unsupported-url-s-f93ee8","errorCode":null,"errorMessage":"Unsupported URL: %s","messagePattern":"Unsupported URL: (.+?)","errorType":"exception","errorClass":"UnsupportedError","httpStatus":null,"severity":"error","filePath":"youtube_dl/extractor/generic.py","lineNumber":3704,"sourceCode":"                if new_url != url:\n                    self.report_following_redirect(new_url)\n                    return {\n                        '_type': 'url',\n                        'url': new_url,\n                    }\n                else:\n                    found = None\n\n        if not found:\n            # twitter:player is a https URL to iframe player that may or may not\n            # be supported by youtube-dl thus this is checked the very last (see\n            # https://dev.twitter.com/cards/types/player#On_twitter.com_via_desktop_browser)\n            embed_url = self._html_search_meta('twitter:player', webpage, default=None)\n            if embed_url and embed_url != url:\n                return self.url_result(embed_url)\n\n        if not found:\n            raise UnsupportedError(url)\n\n        entries = []\n        for video_url in orderedSet(found):\n            video_url = unescapeHTML(video_url)\n            video_url = video_url.replace('\\\\/', '/')\n            video_url = compat_urlparse.urljoin(url, video_url)\n            video_id = compat_urllib_parse_unquote(os.path.basename(video_url))\n\n            # Sometimes, jwplayer extraction will result in a YouTube URL\n            if YoutubeIE.suitable(video_url):\n                entries.append(self.url_result(video_url, 'Youtube'))\n                continue\n\n            # here's a fun little line of code for you:\n            video_id = os.path.splitext(video_id)[0]\n\n            entry_info_dict = {\n                'id': video_id,","sourceCodeStart":3686,"sourceCodeEnd":3722,"githubUrl":"https://github.com/ytdl-org/youtube-dl/blob/956b8c585591b401a543e409accb163eeaaa1193/youtube_dl/extractor/generic.py#L3686-L3722","documentation":"UnsupportedError raised by the generic extractor after every embedded-video detection strategy (HTML5 video, jwplayer, embeds, twitter:player, etc.) failed to find any video on the page. The generic extractor is the last resort; this error means no specialized extractor matched the URL and nothing playable was found in the HTML.","triggerScenarios":"Passing a URL that matches no registered extractor (_VALID_URL of none matches) and whose downloaded HTML contains no recognizable video embeds, media URLs, or a usable twitter:player meta tag.","commonSituations":"Site added a new player framework youtube-dl can't parse, page requires JS rendering to inject the video, consent/anti-bot wall returning empty HTML, typo'd URL hitting a 404-style page, or the site is simply not a video site.","solutions":["Update youtube-dl/yt-dlp — new sites and embed parsers are added constantly","Verify the URL opens a real video page in a browser (not a consent wall or 404)","Find the underlying video URL (devtools Network tab) and pass it directly","If the video is injected by JavaScript, use yt-dlp which handles more JS-driven players, or report the site as a supported-site request"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"from youtube_dl import YoutubeDL\nwith YoutubeDL() as ydl:\n    ies = [ie.IE_NAME for ie in ydl._ies if ie.suitable(url) and ie.IE_NAME != 'generic']\nif not ies:\n    print('No specific extractor matches; generic parsing may fail — fetch the embed URL manually')","typeGuard":"def likely_supported(url, html):\n    markers = ('<video', 'jwplayer', 'oembed', 'twitter:player', '.m3u8', '.mp4')\n    return any(m in html for m in markers)","tryCatchPattern":"from youtube_dl.utils import DownloadError, UnsupportedError\ntry:\n    info = ydl.extract_info(url)\nexcept UnsupportedError:\n    info = fallback_to_direct_stream_url(url)  # e.g. from devtools\nexcept DownloadError:\n    raise","preventionTips":["Update youtube-dl/yt-dlp before assuming a site is unsupported","In automation, catch UnsupportedError separately from other DownloadErrors","Prefer handing youtube-dl the concrete media/embed URL over article pages"],"tags":["generic","unsupported-url","extractor","scraping"],"backgroundTag":null,"analyzedSha":"956b8c585591b401a543e409accb163eeaaa1193","analyzedAt":"2026-08-14T18:59:47.863Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}