ytdl-org/youtube-dl · error · ExtractorError

Unable to extract {0} - Failed to parse JSON

Error message

Unable to extract {0} - Failed to parse JSON

What it means

Error "Unable to extract {0} - Failed to parse JSON" thrown in ytdl-org/youtube-dl.

Source

Thrown at youtube_dl/extractor/common.py:1147

        # force an exception
        kwargs['fatal'] = True

        # self._downloader._format_err(name, self._downloader.Styles.EMPHASIS)
        for _ in range(2):
            try:
                # return self._parse_json(json_string, video_id, ignore_extra=True, **kwargs)
                transform_source = kwargs.pop('transform_source', None)
                if transform_source:
                    json_string = transform_source(json_string)
                return self._parse_json(json_string, video_id, **compat_kwargs(kwargs))
            except ExtractorError as e:
                end = int_or_none(self._search_regex(r'\(char\s+(\d+)', error_to_compat_str(e), 'end', default=None))
                if end is not None:
                    json_string = json_string[:end]
                    continue
                msg = 'Unable to extract {0} - Failed to parse JSON'.format(name)
                if fatal:
                    raise ExtractorError(msg, cause=e.cause, video_id=video_id)
                elif not has_default:
                    self.report_warning(
                        '{0}: {1}'.format(msg, error_to_compat_str(e)), video_id=video_id)
            return default

    def _html_search_regex(self, pattern, string, name, default=NO_DEFAULT, fatal=True, flags=0, group=None):
        """
        Like _search_regex, but strips HTML tags and unescapes entities.
        """
        res = self._search_regex(pattern, string, name, default, fatal, flags, group)
        if isinstance(res, tuple):
            return tuple(map(clean_html, res))
        return clean_html(res)

    def _get_netrc_login_info(self, netrc_machine=None):
        username = None
        password = None

View on GitHub (pinned to 956b8c5855)

Solutions

  1. Update youtube-dl; the JSON structure of the site likely changed.

When it happens

Trigger: Thrown at youtube_dl/extractor/common.py:1147 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of ytdl-org/youtube-dl@956b8c5855 (2026-08-14). Data as JSON: /api/errors/d3fc90c918e16f96. Report an issue: GitHub.