Make your life much simpler with wget and youtube-dl

Make your life much simpler with wget and youtube-dl

Vijai Kumar Suriyababu's photo
Vijai Kumar Suriyababu

Published on Aug 6, 2015

9 min read

Listen to this article

It is one thing to download videos from a playlist with just five videos. Still, it is a whole different situation when you have playlists with over 100 videos and in exceptional cases where you want to download an entire channel. Some canned software claims to do this easily for you, but they are not opensource or even free, and some free software force you to upgrade if you want to download more prominent playlists. Once you start using youtube-dl, there is no looking back. This is mainly because of its incredible community and its support to over 100 sites other than youtube. They regularly update the regex and any other bugs and have a monthly release. You can do stuff like downloading entire channels, downloading playlists, downloading videos at multiple resolutions and whatnot. It is also good to go for direct downloads. Programs like wget and curl have a broader scope than that, and we won’t discuss that here. Let me share a few examples of what you can do with youtube-dl.

If you want to download a single video, here are some tips. Let us consider an example video shown below.

If you want to download the above video, you would have to enter the following command in your terminal.

youtube-dl [](

The above command will download the youtube video to your desktop. If you are not sure about the quality of the downloaded video, youtube usually has multiple resolutions of the same video depending upon the quality of the uploaded video. You can get a list of format and resolution available using the following command.

youtube-dl -F [](

The above command should return something similar to the output shown below.

[youtube] 9bZkp7q19f0: Downloading webpage
[youtube] 9bZkp7q19f0: Downloading video info webpage
[youtube] 9bZkp7q19f0: Extracting video information
[youtube] 9bZkp7q19f0: Downloading DASH manifest
[info] Available formats for 9bZkp7q19f0:
format code  extension  resolution note  
249          webm       audio only DASH audio , opus @ 50k  
250          webm       audio only DASH audio , opus @ 70k  
251          webm       audio only DASH audio , opus @160k  
140          m4a        audio only DASH audio  127k , m4a_dash container, aac  @128k (44100Hz), 3.82MiB  
171          webm       audio only DASH audio  128k , vorbis@128k (44100Hz), 3.49MiB  
141          m4a        audio only DASH audio  255k , m4a_dash container, aac  @256k (44100Hz), 7.67MiB  
278          webm       256x144    DASH video  100k , webm container, vp9, 1fps, video only, 2.57MiB  
160          mp4        256x144    DASH video  111k , avc1.4d400c, 12fps, video only, 3.28MiB  
242          webm       426x240    DASH video  217k , vp9, 1fps, video only, 5.53MiB  
133          mp4        426x240    DASH video  248k , avc1.4d4015, 24fps, video only, 7.37MiB  
243          webm       640x360    DASH video  396k , vp9, 1fps, video only, 10.37MiB  
134          mp4        640x360    DASH video  622k , avc1.4d401e, 24fps, video only, 15.96MiB  
244          webm       854x480    DASH video  872k , vp9, 1fps, video only, 21.15MiB  
135          mp4        854x480    DASH video 1141k , avc1.4d401e, 24fps, video only, 29.63MiB  
247          webm       1280x720   DASH video 1791k , vp9, 1fps, video only, 40.43MiB  
136          mp4        1280x720   DASH video 2265k , avc1.4d401f, 24fps, video only, 56.86MiB  
248          webm       1920x1080  DASH video 3295k , vp9, 1fps, video only, 69.28MiB  
137          mp4        1920x1080  DASH video 4229k , avc1.640028, 24fps, video only, 113.12MiB  
17           3gp        176x144  
36           3gp        320x240  
5            flv        400x240  
43           webm       640x360  
18           mp4        640x360  
22           mp4        1280x720   (best)

It is clear from the output above that the resolution corresponding to the code 22 is the best quality available. Even though youtube-dl usually picks the best quality, you can use the above command to make sure that you are getting the best quality video available. The following syntax will download a video with the desired quality.

youtube-dl -f 22 [](

The above syntax should get you the desired quality of the video you want. I have explained the method to download a single video using youtube-dl. If you want to download a whole bunch of videos such as from playlists, a user account or videos from a text file you must read further.

Let us consider a youtube playlist from a python tutorial channel.

If you want to download all the videos from the above playlist, enter the following command.

youtube-dl -citw [](

This will go through the entire playlist and download all the videos from the playlist. There is a small issue with playlists that are created with videos from different channels/uploaders. You might not get consistent resolution across all videos. It is too difficult to specify the resolution for every single video manually; hence you may leave it up to youtube-dl, and it will always choose the best available option for you. Apart from downloading youtube playlists, you can also try downloading a complete user account. To demonstrate, I will try to download all the videos from the urban dance camp’s youtube channel.

youtube-dl -citw ytuser:UrbanDanceCamp

The above command will download all the videos from the user account named UrbanDanceCamp to the current folder. If you want to download multiple videos from different sites, you can put them in a text file with one URL per row and download them all using the following command.

youtube-dl -c --batch-file=filename.txt

This will download videos from all url’s in the text file. youtube-dl supports a whole bunch of sites other than youtube, and you can get the entire list from supported URL list. Your batch file can contain url’s from any of the sites listed in the above link. If you collected URL's from web crawling or by some other means and you do not have them in a proper format, you would have to do some cleanup and pass the url’s as a python list or a tuple. This can be accomplished with an elementary program. I will include it sometime later in the future to this post. I want to finish this by giving a vital tip everyone should remember. Sites like youtube frequently change cyphers and the way they manage content. Hence regular expressions written to obtain direct links will get updated from time to time. Therefore I suggest you keep your youtube-dl installation always updated.

If you installed directly from your package manager, try the following command to update.

sudo youtube-dl -U

If you installed it using pip, then I suggest you use the following command.

sudo pip install youtube-dl --upgrade
Share this
Proudly part of