Chrome doesn’t show videos on YouTube [Solution]

TL;DR: If your Google Chrome browser fails to load YouTube videos or loads only some of them, try installing HTTPS Everywhere extension. Worked for me.

Half a year back, Google Chrome on one of my machines suddenly refused to show YouTube videos. It opened a video page, I could see the comments, likes/dislikes, mouse hover previews — everything except the video itself. There was a black box and some loading animation instead. All the other video sites had no problems with displaying video. Having all sorts of other interesting things to do, I coped with that for a time, opening YouTube links with Mozilla Firefox.

This morning I opened yet another link without thinking much, stared at a black box for a couple of minutes, realized it won’t load (of course), decided I’d had enough and tried to figure it out. Opened my YouTube link in the Incognito mode. Cleared all my browsing history, cookies and other browsing data. Reinstalled Chrome. Updated all my plugins (namely Adobe Flash, Air and Reader). Disabled all the extensions. Disabled all the plugins. Disabled my antivirus software. Tried Incognito mode again. Nothing worked.

Then I checked the console and saw hundreds of errors! They looked like 404s while trying to open video stream, coming from html5player.js. But there were other errors nearby looking like this: XMLHttpRequest cannot load http://.... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.youtube.com' is therefore not allowed access. The response had HTTP status code 404.. A sudden hunch suggested me replacing http:// to https://. And everything started working immediately.

I don’t have enough experience with Chrome’s internals to debug this problem thoroughly. I suspect that for some content insecure loading over HTTP is restricted, but why only on this machine? Haven’t investigated further anyway. I worked around the issue installing HTTPS Everywhere extension. Now YouTube and thousands of other sites always use HTTPS (it’s something you should do anyway).

Back to the top ↑