You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8ff15ae
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: data/errors.yaml
+13-2Lines changed: 13 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -73,17 +73,28 @@ errors:
73
73
message_detail: "The message continues with the list of transcripts that are available for the video."
74
74
trigger: "None of the language codes passed in `languages` matches a manual or automatic caption track on the video."
75
75
meaning: "The video has captions, just not in the language you asked for. The error text lists what is available."
76
+
common_cause: |
77
+
The language code has to match exactly. A request for `es` does not match a track whose code is `es-ES`, and a request for `en` does not match `en-US`, so a video that plainly has Spanish or English captions can raise this error.
78
+
79
+
Checked on 2026-10-18 with video `8YIZ_2QA1P8`, whose only track is `es-ES`: `YouTubeTranscriptApi().fetch("8YIZ_2QA1P8", languages=["es"])` raises `NoTranscriptFound`, and `languages=["es-ES"]` works. yt-dlp behaves the same way: `--sub-langs es` prints `There are no subtitles for the requested languages` and exits with status 0, while the pattern `--sub-langs "es(-[A-Z0-9]+)?"` downloads the `es-ES` track. Note that yt-dlp exits successfully when it finds nothing, so check that a subtitle file was actually written.
80
+
81
+
Call `list(video_id)` first to see the exact codes, or pass every variant you accept, for example `languages=["es", "es-ES", "es-419"]`.
76
82
repro:
77
83
kind: video
78
84
video_id: "jNQXAC9IVRw"
79
85
code: |
80
86
from youtube_transcript_api import YouTubeTranscriptApi
- "Read the available languages in the error text, or call `list(video_id)` and pick one."
89
+
- "Read the available languages in the error text, or call `list(video_id)` and pick one. Regional codes such as `en-US` and `es-ES` count as different languages from `en` and `es`."
84
90
- "Pass several codes in order of preference, for example `languages=[\"de\", \"en\"]`."
85
91
- "Ask for a translated track with `.translate(code)` if the transcript is translatable."
86
-
other_tools: []
92
+
other_tools:
93
+
- tool: yt-dlp
94
+
text: "`There are no subtitles for the requested languages` (exit status 0) when `--sub-langs es` is asked of a video whose only track is `es-ES`."
Copy file name to clipboardExpand all lines: errors/notranscriptfound.md
+12-2Lines changed: 12 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,6 +16,14 @@ The video has captions, just not in the language you asked for. The error text l
16
16
17
17
None of the language codes passed in `languages` matches a manual or automatic caption track on the video. (read from the library source)
18
18
19
+
## A common cause
20
+
21
+
The language code has to match exactly. A request for `es` does not match a track whose code is `es-ES`, and a request for `en` does not match `en-US`, so a video that plainly has Spanish or English captions can raise this error.
22
+
23
+
Checked on 2026-10-18 with video `8YIZ_2QA1P8`, whose only track is `es-ES`: `YouTubeTranscriptApi().fetch("8YIZ_2QA1P8", languages=["es"])` raises `NoTranscriptFound`, and `languages=["es-ES"]` works. yt-dlp behaves the same way: `--sub-langs es` prints `There are no subtitles for the requested languages` and exits with status 0, while the pattern `--sub-langs "es(-[A-Z0-9]+)?"` downloads the `es-ES` track. Note that yt-dlp exits successfully when it finds nothing, so check that a subtitle file was actually written.
24
+
25
+
Call `list(video_id)` first to see the exact codes, or pass every variant you accept, for example `languages=["es", "es-ES", "es-419"]`.
- Read the available languages in the error text, or call `list(video_id)` and pick one.
38
+
- Read the available languages in the error text, or call `list(video_id)` and pick one. Regional codes such as `en-US` and `es-ES` count as different languages from `en` and `es`.
31
39
- Pass several codes in order of preference, for example `languages=["de", "en"]`.
32
40
- Ask for a translated track with `.translate(code)` if the transcript is translatable.
33
41
34
42
## In other tools
35
43
36
-
Nothing recorded yet. If you know what another tool prints for this situation, please add it with a source.
44
+
| Tool | What it prints | Observed |
45
+
|---|---|---|
46
+
| yt-dlp |`There are no subtitles for the requested languages` (exit status 0) when `--sub-langs es` is asked of a video whose only track is `es-ES`. | 2026-10-18, home network, India |
0 commit comments