Greasy Fork is available in English.

YouTube Links

Download YouTube videos. Video formats are listed at the top of the watch page. Video links are tagged so that they can be downloaded easily.

نووسەر
nhyone
Daily installs
4
Total installs
93,487
Ratings
418 18 14
وەشان
2.47
Created
2014-10-07
Updated
2024-10-16
مۆڵەت
نییە
Applies to

Show video formats at the top of the watch page. Tag every video link so that they can be downloaded easily.



The video links on the page are scanned in batches to avoid overloading the network. This works out nicely because YouTube has a request flood detector.

YouTube Features

On DASH videos (Adaptive Video Streaming)

YouTube now uses adaptive video streaming for 480p and 1080p videos (Oct 2013). What this means is that the video and audio streams are now separate.

They are indicated as M4V and M4A. They have to be downloaded separately and mux'ed before playing. If using ffmpeg:

ffmpeg -i vid.m4v -i vid.m4a -vcodec copy -acodec copy vid.mp4

The filename is always videoplayback. Before saving, select and copy the page title first. Then right-click on the video link, save-as and paste the title. Set the extension to either m4v or m4a to distinguish between video and audio.

On VEVO videos

When a VEVO video is first accessed, the video links will not be shown because the de-obfuscated code is gotten too late. You need to manually refresh to see the links. This should happen just once — until YouTube changes the de-obfuscated code again.

If the video links are still not shown, it could be because the new de-obfuscated code is not recognized anymore. This happens once every few months; it is a cat-and-mouse game. Post in the forum so that I know about it. :-D

On 60fps videos

YouTube now supports 60fps (Oct 2014). The 720p/1080p DASH videos have itag 298/299 instead of 136/137. They can be downloaded as usual. However, I have added HFR (High Frame Rate) to make it more obvious.

On 256kbps MP4 audio

Note: this is no longer available since 2016.

256kbps MP4 audio can now be downloaded! The link is only added for the watch page because it requires an additional HTTP request.

Note that just because a file is encoded in 256kbps does not mean it is really 256kbps. Check its spectrogram.

ffmpeg -i video.mp4 -vn audio.wav
sox audio.wav -n spectrogram

A real 256kbps audio file is not cut-off at 16kHz (128kbps) or 18kHz (192kbps). Some 192kbps audio are upscaled too.

Settings

There are some high-level settings in the script. Search for var userConfig = {.

var userConfig = {
  copyToClipboard: true,
  filteredFormats: [],
  keepFormats: [],
  showVideoFormats: true,
  showVideoSize: true,
  tagLinks: true
  };

Note: changes will be lost when the script is updated.

copyToClipboard: copy filename to clipboard by clicking the video info tag

Added in v2.

Possible values: true, false

Default: true

Was false for Edge browser before v2.41. It used to honour the download attribute for cross-origin resource and prompts to download with the correct filename. Other browsers play the video instead.

The 720p/MP4 tag is exempted as clicking it will download the video.

filterDrc: filter out DRC audio

Added in v2.47.

Possible values: true, false

Default: true

filteredFormats: filter out listed formats

Added in v1.71.

Possible values: 3GP, FLV, M4A, M4V, MP4, WEBM, ...

Default: none

To filter out WEBM videos, set it to [ "WEBM" ].

keepFormats: always show these formats

Added in v1.94.

Possible values: 3GP, FLV, M4A, M4V, MP4, WEBM, ...

Default: none

To always show 3GP videos, set it to [ "3GP" ].

showVideoFormats: show video formats at the top of the watch page

Added in v1.50, "btn" in v1.62.

Possible values: true, false, "btn"

Default: true

Set to false if you do not want the video formats.

The value "btn" (with the quotes) will show a VidFmts button at the top of the page. Click on the button to show the video formats.

showVideoSize: show video size

Added in v1.62.

Possible values: true, false

Default: true

Set to false if you do not want the video size. It will reduce network traffic slightly.

tagLinks: tag all video links

Added in v1.00, "label" in v2.

Possible values: true, false, "label"

Default: true

Set to false if you do not want to tag the video links. It will reduce network traffic.

If set to "label", click on the tag to open pop-up menu.

useDecUnits: use decimal prefix for file size

Added in v2.40.

Possible values: true, false

Default: true

Set to false if you want binary prefix, e.g. MiB. The file size will be in units of 2^n rather than 10^n.

User settings

From v2, settings can be changed without editing the script. There is still no UI.

Steps:

  1. Go to any YouTube page
  2. Press F12 to open Development Tools
  3. Select Console tab

Set settings in this format:

localStorage["ujsYtLinks.cfg.<setting>"] = <value>

Examples:

localStorage["ujsYtLinks.cfg.tagLinks"] = false
localStorage["ujsYtLinks.cfg.showVideoFormats"] = '"btn"'
localStorage["ujsYtLinks.cfg.keepFormats"] = '[ "3GP" ]'

Delete the setting to get back the original behavior:

localStorage.removeItem("ujsYtLinks.cfg.<setting>")

Example:

localStorage.removeItem("ujsYtLinks.cfg.tagLinks")

Origins

YouTube Links greatly resembles YouTube HD Suite in both looks and functionality. I had been using it for a long time and like how it worked. I especially like the video link tagging; I could tell at a glance if a video was HD or not. Nowadays, almost every video is at least 720p.

When the script broke after YouTube changed its page format on 3rd August 2011, I decided to learn how it works and write my own from scratch. The first version was uploaded to userscripts.org on 12th Aug 2011.

Known Issues

Does not work in YouTube Premium

Download does not work anymore


Changes

v2.47 (Oct 2024)

  • * Filter low-res videos if high-res are present
  • * Color 2K videos differently
  • # Bugfix (2.46): filter out DRC audio by default

v2.46 (Oct 2024)

  • * Don't show duplicate itags

v2.45 (Oct 2024)

  • * Add trustedTypes to work in Chrome
  • * Use ajax to get JS file (instead of crossAjax)
  • * Add space before units

v2.44 (Dec 2021)

  • * Update header insert point

v2.43 (Dec 2021)

  • * Update sig detection
  • * Update 'btn' insert point

v2.42 (Jul 2021)

  • * Update sig detection

v2.41 (Nov 2020)

  • * Enable copy-to-clipboard for Edge
  • # Bugfix: fixed overly aggressive regexp

v2.40 (Sep 2020)

  • + Support binary prefix for units (e.g. MiB)

v2.30 (Sep 2020)

  • * Make it work when logged in

v2.21 (Aug 2020)

  • * Speed up tagging

v2.20 (Aug 2020)

  • # Bugfix (1.40): fixed stale links on page change

v2.14 (Jul 2020)

  • * Update sig detection

v2.13 (Jun 2020)

  • * Handle 'signatureCipher' in new formats
  • # Bugfix (v2.10): allow '}' in title

v2.12 (Jan 2020)

  • * Update sig detection

v2.11 (Dec 2019)

  • + Use new properties 'formats' and 'adaptiveFormats'

v2.10 (Sep 2019)

  • + Improve grepping title
  • * Show segmented videos as "Frag"; they cannot be downloaded
  • * Handle new DASH manifest property name

v2.09 (Aug 2019)

  • * Update videoId detection for YouTube Classic

v2.08 (Jul 2019)

  • * Update videoId detection

v2.07 (Jul 2019)

  • * Update sig detection

v2.06 (Apr 2019)

  • * Update sig detection (sig-90)

v2.05 (Feb 2019)

  • + Add AV1 format

v2.04 (Jan 2019)

  • * Update sig detection (sig-87)

v2.03 (Nov 2018)

  • * Skip updating stale links on rapid page change
  • * Update sig detection (regex causing YT to hang!)

v2.02 (Oct 2018)

  • # Bugfix: show payment-needed videos as n/a. (Previously JavaScript error)

v2.01 (Sep 2018)

  • * Add file extension when saving on Edge browser
  • # Bugfix (v2): Able to save 720f/u720p/w720p MP4 video directly by clicking
  • # Bugfix (1.96): [Material Design] Update video tags in search results

v2 (Sep 2018)

  • + Support Material Design dark theme
  • + Support persistent user settings
  • + Copy filename to clipboard by clicking the video info tag
  • + Video tag: indicate wide video, show framerate if HFR
  • + Add config option to open video tag pop-up menu on click (tagLinks "label")
  • + Work on Greasemonkey 4
  • * Label 5K, 6K videos
  • * Show Live streams correctly; they cannot be downloaded
  • * Show err for missing DASH streams
  • # Bugfix: Handle video title with & and " on Edge browser
  • # Bugfix (1.96): [Material Design] Show VidFmts btn
  • # Bugfix (1.96): [Material Design] Fix double tag on playlists
  • # Bugfix (1.62): Show video res properly, including portrait-mode videos
  • # Bugfix (1.62): In VidFmts mode, hide top video links when changing video
  • # Bugfix (1.00): Allow other QS parameters before video id

v1.96 (Sep 2018)

  • Support 2017 Material Design.
  • Update sig detection.
  • Show 3K for 1728p.
  • Bugfix (1.95): Restore page-change/dangling pop-up functionality. (JavaScript error on startup)

v1.95 (May 2017)

  • Support Material Design (hackish).

v1.94 (Feb 2017)

  • Add config option keepFormats.

v1.93 (Jun 2016)

  • Fix sig-81.

v1.92 (Apr 2016)

  • Add @connect for Tampermonkey.
  • Show "Opus" audio format.

v1.91 (Dec 2015)

  • Update VEVO sig detection 3.

v1.90 (Dec 2015)

  • Bugfix (1.40): Remove dangling header in non-watch pages.
  • Bugfix (1.10): Fix dangling pop-up on missed mouseout event.

v1.88 (Nov 2015)

  • Update VEVO sig detection 2.

v1.87 (Nov 2015)

  • Update VEVO sig detection.

v1.86 (Sep 2015)

  • Add VP9/VOR format.

v1.85 (Jun 2015)

  • Label 8K videos.

v1.84 (May 2015)

  • Set download filename. Does not work in Firefox.

v1.83 (Jan 2015)

  • Bugfix (1.32): Detect 4:3 AR properly.

v1.82 (Nov 2014)

  • Fix VEVO videos on TamperMonkey.

1.81 (Nov 2014)

  • Update VEVO sig detection.

v1.80 (Nov 2014)

  • Change HFR criteria to >45fps.
  • Tag video links in HTML 5 player video wall.
  • Add >=1080p videos from DASH manifest.
  • Remove <96kbps audio if there is at least one above.
  • Use SI units for file size (10^3 instead of 2^10).
  • Bugfix (1.62): calculate aspect ratio of portrait-mode videos correctly.
  • Bugfix (1.40): show bitrate properly (kbps instead of kB/s).
  • Bugfix (1.00): avoid running unnecessarily in iframe.

v1.71 (Nov 2014)

  • Add HFR (High Frame Rate) if >30fps.
  • Rename 1.5k to 2K and 2k to 4K.
  • Able to filter formats.

v1.70 (Oct 2014)

  • Add 256kbps M4A.

v1.64 (Oct 2014)

  • Fix event handling on Firefox; broken after FF 29. Hovering and VidFmts btn now work.
  • Use video size from page if available. (Reduce network traffic)
  • Remove 144v/240v videos completely if 720p/1080p are present to eliminate unnecessary querying. (Reduce network traffic)

v1.63 (Oct 2014)

  • Change link to Greasy Fork.
  • Fix video thumbnail text; broken after YouTube update.
  • Improve support for obfuscated-sig videos; broken after YouTube update.
  • Hide 144v and 240v if 720p/1080p are present.
  • Check for update every 5 days (not tested on Greasy Fork).

v1.62 (Mar 2014)

Taken directly from http://userscripts-mirror.org/scripts/show/110007.html