VLC - YouTube videos won't play anymore

I assume you entered the URL correctly (no https but http, and only the v=... part, like http://www.youtube.com/watch?v=-wxawmjnRWY)?

Open the Extras menu and click on Messages. Now click play again and see what message's there.

My guess is it's

lua error: Couldn't extract youtube video URL, please check for updates to this script

VLC parses YouTube's HTML source code to look for the video, but sometimes, YouTube changes its way it outputs the HTML, so VLC is unable to find the video URL.

Possible workarounds

  • Go to https://www.youtube.com/html5 and enable html5 there to play the video in your browser without flash
  • Install minitube and try to play the video there
  • Wait for an update of VLC (or update the lua script yourself - not so easy, see Updating the VLC YouTube parser)
  • Install the package youtube-dl and download the video to your harddisk. It's a command line utility though

Updating the VLC YouTube parser

Update just the Lua script for YouTube parsing to the latest version from VLC:

Open the Terminal application and enter these commands:

Make sure curl is installed, we need this to download the new file

sudo apt-get install curl

Get rid of the old, non-working scripts

sudo rm /usr/lib/vlc/lua/playlist/youtube.*

Download the current ones (use the whole command line, yes, it's quite long):

sudo curl "http://git.videolan.org/?p=vlc.git;a=blob_plain;f=share/lua/playlist/youtube.lua;hb=HEAD" -o /usr/lib/vlc/lua/playlist/youtube.lua

See if it works.


You can run the latest Lua script for extracting YouTube streams by downloading the appropriate file into your home directory. There's no need to delete or modify system-level files. This works just fine:

mkdir -p ~/.local/share/vlc/lua/playlist/
curl 'https://code.videolan.org/videolan/vlc/-/raw/master/share/lua/playlist/youtube.lua' -o ~/.local/share/vlc/lua/playlist/youtube.lua

or with wget:

mkdir -p ~/.local/share/vlc/lua/playlist/
wget -q -O - 'https://code.videolan.org/videolan/vlc/-/raw/master/share/lua/playlist/youtube.lua' > ~/.local/share/vlc/lua/playlist/youtube.lua

VLC will use local scripts instead of the system level Lua file here:

/usr/lib/x86_64-linux-gnu/vlc/lua/playlist/youtube.luac

By using a local file in your home directory, you don't have to worry about the file being overwritten when the VLC package is upgraded with apt upgrade or similar.

Relevant links:

  • youtube parser not updating

  • Is there any video player that plays Youtube playlists?

  • https://code.videolan.org/videolan/vlc/-/blob/master/share/lua/playlist/youtube.lua

  • https://code.videolan.org/videolan/vlc/-/blob/a51ba24aa6b9d5e8864cd6420357091fbd663ed1/share/lua/playlist/youtube.lua

  • https://wiki.videolan.org/Documentation:Building_Lua_Playlist_Scripts/