TL;DR: Open WebUI fetches YouTube transcripts from your server's own address, using the youtube-transcript-api library. On a VPS or cloud host, YouTube often refuses that address. Read the exact error below first, because three of the five have nothing to do with blocking. If you are blocked, you can set a residential proxy under Admin Settings, Web Search, Youtube Proxy URL, or connect a transcript MCP server so your server stops fetching from YouTube at all.
We installed Open WebUI 0.13.0, which ships youtube-transcript-api 1.2.4, and ran its own YouTube loader against real videos. We ran it from a home connection, so YouTube did not block us. The blocked message below comes from Open WebUI's source code, and everything else on this page is what we saw.
What each error means
| The error says | What it means | What to do |
|---|---|---|
YouTube blocked the transcript request for VIDEO from this server | YouTube refused your server's address | Use a proxy or an MCP server, below |
No transcript found for the YouTube video VIDEO in these languages: en. | The video has captions, just not in the languages you asked for | Change Youtube Language |
Transcripts are disabled for the YouTube video VIDEO. | The video has no captions at all | Nothing to fix in Open WebUI: it needs speech to text |
The YouTube video VIDEO is unavailable. | Wrong ID, or a private or removed video | Check the link |
Could not retrieve a transcript for the YouTube video VIDEO. | Anything else, including a broken proxy | Test the proxy, below |
Older versions were less clear. Issue #28361 reports a blocked transcript surfacing as [ERROR: Error querying knowledge base], and the server log said YouTube is blocking requests from your IP. That issue was closed in August 2026, so if you see the knowledge base message, update first and read the new error.
Check whether your server is blocked
Run the library directly inside the container. The name open-webui is the one the install docs use, so change it if yours differs.
docker exec open-webui python -c "from youtube_transcript_api import YouTubeTranscriptApi as Y; print([t.language_code for t in Y().list('dQw4w9WgXcQ')])"On an unblocked connection this printed a list that started ['en', 'de-DE', 'ja', 'pt-BR', 'es-419']. If it raises RequestBlocked or IpBlocked instead, the address is the problem. Our RequestBlocked guide covers that exception in more depth.
Fix the language error
Open WebUI asks only for the languages in Admin Settings, Web Search, Youtube Language, and it always adds English to the list. It does not fall back to whatever the video has.
We tested a video whose only track is automatic Korean captions. With the default en it failed with No transcript found. With ko it returned the transcript. The setting takes a comma separated list, such as ko,en, and YOUTUBE_LOADER_LANGUAGE is the environment variable.
Fix the block with a proxy
The setting is Admin Settings, Web Search, Youtube Proxy URL, or YOUTUBE_LOADER_PROXY_URL in the environment. It takes a URL like http://user:password@host:port. Three things can catch you out.
HTTP_PROXY and HTTPS_PROXY silently win. This one is not in the docs. We pointed Youtube Proxy URL at a local proxy that logs every connection, then ran the loader:
| Container environment | Connections our proxy saw | Result |
|---|---|---|
HTTPS_PROXY set | 0 | Worked, through the other proxy |
HTTPS_PROXY set, plus NO_PROXY=www.youtube.com | 1 | Used the YouTube proxy |
| No proxy variables | 1 | Used the YouTube proxy |
If your container sits behind a corporate or general proxy, your Youtube Proxy URL may never be used, and nothing tells you. Add NO_PROXY=www.youtube.com. The Trust Proxy Environment switch on the same page does not help, because the YouTube loader never reads it.
A broken proxy gives a vague error. When our test proxy refused the connection, the message was the generic Could not retrieve a transcript, with no mention of the proxy. If that appears right after you add a proxy, suspect the proxy.
A datacenter proxy rarely helps. The address has to look like a person's connection, so you need a residential one, and those vary. In our test of 800 residential exits, one provider had 20.5% of its addresses blocked and the other 4.5%. The yt-dlp bot check guide has the full numbers. Residential proxies are also billed by the gigabyte, and you own the upkeep.
Fix the block with an MCP tool server
There is another way out: stop fetching from your server. Open WebUI has connected to remote MCP servers natively since v0.6.31, over Streamable HTTP. With a transcript MCP server, the model calls a tool and the fetch happens from that server's network, so your address no longer matters.
TranscriptFetch runs one, which is our product, so weigh this section with that in mind. We tested this part on 0.13.0 too:
- Go to Admin Settings, Integrations, External Tool Servers, and add a connection.
- Set the type to MCP (Streamable HTTP).
- For a test with no account, use the URL
https://transcriptfetch.com/mcp/trywith Auth set to None. - Save, then enable the tools for your chat.
Open WebUI's connection check returned the tools on our install, including get_transcript and search_videos, and a direct call to get_transcript on that URL returned the transcript. We did not run a full chat with a model, and the model you use has to support tool calls.
The trial URL gives you 10 calls a day and captions only. For regular use, connect https://transcriptfetch.com/mcp with Auth set to Bearer and an API key in the Key field. That adds channels and playlists, and AI transcription for videos with no captions, which also answers the Transcripts are disabled error. You start with 50 free credits with no card, a caption transcript costs 1 credit, and failed requests are free. The MCP docs list every tool.
Two notes from Open WebUI's docs: only admins can add these servers, and selecting Bearer with an empty key sends a blank header that many servers reject.
FAQ
YouTube refused the request because of the address your server sends from. Cloud and datacenter addresses are the usual case. The same video often works from a home connection. Open WebUI is reporting the block, not causing it.
In Admin Settings, Web Search, under Youtube Proxy URL. The environment variable is YOUTUBE_LOADER_PROXY_URL.
If HTTP_PROXY or HTTPS_PROXY is set in the container, the loader's requests use that proxy and never touch the Youtube Proxy URL. In our test on 0.13.0, adding NO_PROXY=www.youtube.com made it use the YouTube proxy.
Open WebUI only asks for the languages in Youtube Language, plus English. A video with only Korean captions fails until you add ko to that setting.
Yes. Since v0.6.31 it can connect to remote MCP servers over Streamable HTTP. A transcript MCP server fetches from its own network, so your server's address no longer matters.
