Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Downloading Udemy videos with youtube-dl

How to download your Udemy course videos using youtube-dl

$ youtube-dl --list-extractors | grep udemy


  1. Get link to the course to download. e.g.
  2. Login into udemy website, save the cookie from chrome using Chrome (Cookie.txt)1 export extension. Save it to file udemy-cookies.txt
  3. Get the link of the video that you want to download. usually in format. Use the command provided below where you have to replace the {course_link} and {path_to_cookies_file} with respective paths.
$ youtube-dl {course_link} --cookies {path_to_cookies_file}
$ youtube-dl --cookies ./udemy-cookies.txt


  • If you have previously installed youtube-dl, you should update it before attempting to download your Udemy courses
    $ youtube-dl -U
  • If you want your videos to be organized by chapter and the indices included, you can specify the output flag -o
    $ youtube-dl --cookies ./udemy-cookies.txt -o '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s'
# List available formats
youtube-dl -u <username> -p <password> -F -o './videos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s'
# Download the specified format
youtube-dl -u <username> -p <password> -f <desired-format> -o './videos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s'
# Download specific items
youtube-dl <url> --cookies <cookies-filename> --playlist-items "<comma-separated-indices>"
# Skip specific indices
youtube-dl <url> --cookies <cookies-filename> --playlist-start START_NUMBER
Copy link

Alex2357 commented Dec 27, 2021

Did a number of attempts today nothing worked. Anyone knows solution?

2 Udemy what the hell you're doing? I have purchased a course and I can't watch it offline on my desktop. Why is that? Do not suggest me mobile device just because screen is small and I'd like to make notes for myself with some important keys from video. It is not a movie to watch on mobile. It needs to be watched on desktop to see letters and be able to make notes for myself whcih I can review few times before doing certification.
Seriously I wanted to purchase few more courses but hell no. It was enough I'm not gonna buy anymore until I have the option to watch them offline on my laptop.

Copy link

MesterPerfect commented Dec 27, 2021

youtube dl will not solve the problem
There are two solutions
first: watch udemy courses via browser and download videos using download manager
Use this program

Copy link

rajhlinux commented Mar 20, 2022

not working for me:

this is what I type:

C:\Users\Admin\Downloads\Programs>C:\Users\Admin\Downloads\Programs\youtube-dl.exe --cookies C:\Users\Admin\Downloads\udemy.com_cookies.txt -o '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s'

and this is what i get as output:

ERROR: '-' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:-" ) to search YouTube

Whats wrong?



Good luck downloading videos from
Long story short, you simply can not do it. I tried all the "easy" methods...
Udemy started using Google's Widevine DRM protocols to encrypt their popular contents.
Previous "hacks" for widevine does not work, because google and udemy have updated/patched those hacks.

It can be done, but you'll need to do your "homework"... no one wants freeloaders to be flooded all over on udemy just so udemy and google can "update" the current method of downloading DRM content which is already ridiculously difficult alone for bypassing.

And lastly, for those who do not pay for content are seriously harming Udemy's content creators.

Copy link

dirkf commented Apr 27, 2022

Whats wrong?

Use "double-quotes" in Windows cmd.

Copy link

PartTimeJS commented Apr 27, 2022

Seeing this:

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--cookies', 'D:\\Downloads\\udemy.com_cookies.txt', '-o', '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s', '', '--verbose']
[debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252
[debug] youtube-dl version 2021.12.17
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.22593
[debug] exe versions: none
[debug] Proxy map: {}
[udemy:course] course: Downloading webpage
[udemy:course] 1348924: Downloading course curriculum
[download] Downloading playlist: 1348924
[udemy:course] playlist 1348924: Collected 46 video ids (downloading 46 of them)
[download] Downloading video 1 of 46
[udemy] 8499446: Downloading webpage
[udemy] 8499446: Downloading lecture JSON
[udemy] 8499446: Downloading lecture JSON
ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpupik7c6w\build\youtube_dl\extractor\", line 634, in _request_webpage
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpupik7c6w\build\youtube_dl\", line 2288, in urlopen
  File "C:\Python\Python34\lib\urllib\", line 470, in open
  File "C:\Python\Python34\lib\urllib\", line 580, in http_response
  File "C:\Python\Python34\lib\urllib\", line 508, in error
  File "C:\Python\Python34\lib\urllib\", line 442, in _call_chain
  File "C:\Python\Python34\lib\urllib\", line 588, in http_error_default```

Copy link

dirkf commented Apr 27, 2022

See ytdl-org/youtube-dl#30901 and the linked issues.

Copy link

CoderHarshvirSingh commented Aug 30, 2022

Hi @guys, today I've just tried to download course from Udemy using cookies.txt approach and see it's still working fine. Followings are the steps I use to download Udemy course:
Open Chrome and add extension cookies.txt from Genuinous.
Login to Udemy website and click that extension to download cookie file named cookies.txt.
Put this cookie file inside the folder you want to download.
Followings are some examples of cmd to download the course:

# Download with human-generated subtitle.
youtube-dl --write-sub --sub-lang en --cookies cookies.txt -o '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s'

# Download with auto-generated subtitle.
youtube-dl --write-auto-sub --sub-lang en --cookies cookies.txt -o '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s'

NOTE: Make sure there's no /course/ in the url.

Hope it helps. Cheers.

tested with personal account and working fine

its working fine

Copy link

PrajyotGajane commented Aug 31, 2022

@CoderHarshvirSingh how were you able to ?
I ran the same command with another course it, downloaded 2 videos and then it failed, everytime.

Copy link

arcanjoebc1971 commented Oct 26, 2022

I don't speak English, but I speak Portuguese from Brazil, ok! However, I know some vocabulary in English and I get create simple sentences ... I followed the pass by pass, but it appear an error. Someone can help me?

`[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--cookies', './udemy-cookies.txt', '-u', 'PRIVATE', '-p', 'PRIVATE', '-o', '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s', '', '--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.06.06
[debug] Python version 3.9.2 (CPython) - Linux-5.10.0-19-amd64-x86_64-with-glibc2.31
[debug] exe versions: ffmpeg 4.3.4-0, ffprobe 4.3.4-0, rtmpdump 2.4
[debug] Proxy map: {}
[udemy:course] Downloading login popup
ERROR: Unable to download webpage: HTTP Error 403: Forbidden (caused by <HTTPError 403: 'Forbidden'>); please report this issue on . Make sure you are using the latest version; see on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
File "/usr/lib/python3/dist-packages/youtube_dl/extractor/", line 634, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "/usr/lib/python3/dist-packages/youtube_dl/", line 2288, in urlopen
return, timeout=self._socket_timeout)
File "/usr/lib/python3.9/urllib/", line 523, in open
response = meth(req, response)
File "/usr/lib/python3.9/urllib/", line 632, in http_response
response = self.parent.error(
File "/usr/lib/python3.9/urllib/", line 561, in error
return self._call_chain(*args)
File "/usr/lib/python3.9/urllib/", line 494, in _call_chain
result = func(*args)
File "/usr/lib/python3.9/urllib/", line 641, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)


Copy link

dayarbro1 commented Oct 26, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment