Last updated on October 22, 2020 by Dan Nanni
Have you ever found interesting videos on YouTube, and wanted to download and save them on your hard drive (for offline access or archiving purpose)? There is a handy open-source Linux tool that does exactly that: download YouTube videos.
A tool called
is a command-line program written in Python that downloads videos from various online video sharing sites, including YouTube, DailyMotion, Vimeo, etc. Since the tool is written in Python, it can run on any platform that has Python interpreter (in particular, Python version 2.6, 2.7, or 3.3+). A binary for Windows platform is also available.
Here is a guide on how to download and save YouTube videos by using
Let's see how you can install
youtube-dl on your Linux system.
youtube-dl on Debian:
$ sudo apt-get install python-dev python-pip gcc $ sudo pip install --upgrade youtube_dl
youtube-dl on Ubuntu or Linux Mint:
$ sudo apt-get install youtube-dl
youtube-dl on CentOS or RHEL, first set up EPEL repository on your system, and then run:
$ sudo yum install youtube-dl
youtube-dl on Fedora, simply run:
$ sudo yum install youtube-dl
Instead of using a package manager, you can also download
youtube-dl Python code directly from its website, and use it.
Once you have installed
youtube-dl, it is straightforward to download a YouTube video. You just need to pass a YouTube video link to
youtube-dl. It will go ahead and fetch the video and store it as
$ youtube-dl http://www.youtube.com/watch?v=ykp8fxHWcVo
[youtube] Setting language [youtube] ykp8fxHWcVo: Downloading video webpage [youtube] ykp8fxHWcVo: Downloading video info webpage [youtube] ykp8fxHWcVo: Extracting video information [download] Destination: ykp8fxHWcVo.mp4 [download] 3.5% of 56.72M at 367.13k/s ETA 02:32^C
youtube-dl tool supports resuming interrupted downloads. If
youtube-dl is killed (for example by
Ctrl-c or due to loss of Internet connectivity) in the middle of download, you can simply re-run it with the same YouTube video url. It will automatically resume the unfinished download, as long as a partial download is present in the current directory.
Most of YouTube videos nowadays are available in multiple resolutions and formats in order to support various devices and Internet connections. The
youtube-dl tool actually allows you to choose a specific resolution and format when downloading YouTube videos.
Since different YouTube videos may have different resolutions ready, you first need to check available video formats of a given YouTube video. For that, run
youtube-dl with "-F" option. It will show you a list of available formats.
$ youtube-dl -F http://www.youtube.com/watch?v=BlXaGWbFVKY
[youtube] Setting language [youtube] BlXaGWbFVKY: Downloading video webpage [youtube] BlXaGWbFVKY: Downloading video info webpage [youtube] BlXaGWbFVKY: Extracting video information Available formats: 37 : mp4 [1080x1920] 46 : webm [1080x1920] 22 : mp4 [720x1280] 45 : webm [720x1280] 35 : flv [480x854] 44 : webm [480x854] 34 : flv [360x640] 18 : mp4 [360x640] 43 : webm [360x640] 5 : flv [240x400] 17 : mp4 [144x176]
Now among the available video formats, choose one that you like:
$ youtube-dl -f 17 http://www.youtube.com/watch?v=BlXaGWbFVKY
If you want to download multiple YouTube videos in one shot, all you have to do is to prepare a text file that contains urls of all the videos. Then run
$ cat video.list
http://www.youtube.com/watch?v=BlXaGWbFVKY http://www.youtube.com/watch?v=6Rhd4JqEY2Y . . . .
$ youtube-dl -a video.list
If you would like to extract audio from YouTube video and save it as a MP3 file, you can do the following.
ffmpeg on your system.
Then use the following command to save the audio of YouTube video as a separate MP3 file.
youtube-dl will use
ffmpeg to perform audio extraction.
$ youtube-dl http://www.youtube.com/watch?v=BlXaGWbFVKY --extract-audio --audio-format mp3
You can put commonly used options (e.g., --extract-audio --audio-format mp3) in
youtube-dl's configuration file, which is located at either
/etc/youtube-dl.conf (system-wide) or
~/.config/youtube-dl.conf (per-user), in which case those options become default arguments that you do not have to specify explicitly from the command line.
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.