Skip to content

A browser extension for simplifying downloading YouTube videos.

Notifications You must be signed in to change notification settings

avi12/youtube-downloader

Repository files navigation

YouTube Downloader

A browser extension for downloading videos from YouTube

Made by avi12

Supported browsers

Google Chrome Microsoft Edge Opera Opera GX

NOTICE: This extension will only work until June 2024, so hurry up!
If you still want to use it afterwards, you can use Brave which has a longer Manifest V2 support
If you can, I'd love if you can port it to Manifest V3!

Screenshots

For videos that aren't in the Music category:

Download videos in /watch

For videos in the Music category:

Download music videos in /watch Rich options

In /playlist:

Downloading a single video in the playlist page Opening the rich options for a single video in a playlist Options for playlists

Pop-up page

Pop-up page: Download manager Pop-up page: Global options

Installation

Download from one of: AdFly, Linkshrink, AdPayLink, or direct

Video installation tutorials:

How to install YouTube Downloader on Google Chrome

How to install YouTube Downloader on Microsoft Edge

How to install YouTube Downloader on Opera

How to install YouTube Downloader on Opera GX

After installing, reload YouTube tabs

Features

  • Download videos from /watch & /playlist, either as videos, audio tracks or audio-less videos

  • Viewing the download progress

  • All downloads are cancelable

  • Always keep in mind:

    • Videos with audio tracks will always be downloaded one-by-one
    • Audio tracks or audio-less videos will always be downloaded in parallel
  • Via the pop-up page, you can manage downloads, customize the file extensions and change the default video quality

  • Useful tooltips when hovering over certain buttons, notably individual downloads and the playlist download button

  • For videos on /watch:

    • Clicking to download a video whose category isn't "Music" will:
      • begin downloading in the currently-selected quality (unless customized) if the queue is empty
      • if the queue isn't empty, it will be pushed to the queue
    • Otherwise, it will be downloaded as an audio track immediately
  • In playlists on /playlist:

    • When downloading an individual video:
      • If you're downloading it as a video, yet you already started downloading a videos that you selected - it will abort their downloads and instead begin downloading the video you just clicked Download on
      • Otherwise, it will start downloading immediately as an audio track
    • When selecting multiple videos and clicking the Download button that's tied to the playlist, they'll download one-by-one
    • Download a whole playlist with a single click, using "Download all when ready"
    • Set playlist-wide options (download all videos as videos / audio-less videos / audio tracks; use the same file extension for all items)
  • Pop-up:

    • Options:
      • Control whether to download a video in quality X/the highest available, or download according to the selected quality
      • Allow specifying a custom file extension for videos and audios
      • If you have YouTube Premium ,remove the native Download button

To-dos (when I have time)

  • Pop-up:
    • Options:
      • Allow downloading playlists as ZIP
      • Allow downloading playlists to a subdirectory whose name is the playlist's name
  • If the video has Clip, opening the Clip modal will allow specifying which portion of the video to download (including the rich options, as mentioned above)

Known bugs

  • When downloading video files that include audio, reordering them via the pop-up page will sometimes not correctly display right away the download / processing progress in the video's progress bar

Core packages/repositories used

  1. ytdlr - for converting signature ciphers into downloadable URLs
  2. FFmpeg - for combining video & audio into a single video file, and then providing it as a download
  3. Vue.js - for the in-page UI interactivity
  4. Svelte - for the pop-up page
  5. Svelte Materialify - for using Material Design components in the pop-up page. It will be replaced by a different library when it becomes deprecated

Setting for development

  1. Make sure to have Node.js and PNPM
  2. pnpm i
  3. Start Rollup for development
    pnpm dev
  4. Test on Chrome/Chromium
    pnpm run-chromium