Usually not an issue but this playlist has 62 videos.
7 Answers
This is no longer an option to do the solution listed. You can save an entire playlist but unfortunately you have to add the individual videos that are on any playlist to your "Watch Later" playlist (or add them to your queue which, coincidentally does allow you to dump your entire queue to a playlist including your "Watch Later" playlist, but you cannot queue up an entire playlist so even going that route does not work... at least as of 4/1/2020)
-
1This is true as of 2020, so not sure why it got downvoted. Videos have to now be added individually instead of being able to do it by batch.– J BoApr 29, 2020 at 21:11
Yes.
As of the time of posting this answer, it's possible to add the entire contents of a playlist to the Watch Later playlist in the same way that you would any other playlist, although it's only possible on the desktop web interface, not mobile web or the standard YouTube app. I'm unsure if a YouTube Red subscription adds this functionality or not.
For mobile devices
Open YouTube in your device's browser.
Click the menu icon in the header bar, then click
Desktop
to navigate to the desktop version of the site.
From here, continue with the process outlined below for desktop devices.
For desktop devices
Navigate to the playlist's page.
Click the menu icon in the top right corner of the playlist panel.
Select the
Add all to...
option in the dropdown menu, then select the Watch Later playlist in the second dropdown.
You've now moved the entire contents of your playlist to the Watch Later
playlist.
You can do that by visiting "https://www.youtube.com/playlist?list=WL&disable_polymer=true".
"disable_polymer" is a Parameter which disables the new Design. So you can once again click the Menu Icon and select "Add all to..."
-
Unfortunately Google has killed the infinitely superior old style playlist format, so now it's a lot more work to do anything with playlists, and thus, it's no longer practical or worth the effort to watch more than a couple of YT videos per day. 🤦 😒– SynetechNov 9, 2020 at 21:03
I'm not aware of a way of doing this via the youtube UI (website). However you might be able to use the Youtube API. Access to the watch later list was introduced only in v2 of the API, v3 should also work. Note that since it's a private playlist you can only access it via an authenticated request.
I made a simple script to run in console to add all the videos in a playlist into your watch later list.
Also you can watch this video to learn how to run this code.
const videos = document.querySelectorAll('.page-container:not([hidden]) ytm-playlist-video-renderer.item')
const totalVideos = videos.length
const intervalSecond = 0.5
const totalSeconds = ((intervalSecond * 1000) * totalVideos) / 1000
if (window.confirm(`Add ${totalVideos} videos in ${totalSeconds} seconds?`)) {
for (let i = 0; i < totalVideos; i++) {
setTimeout(j => {
const video = videos[j]
const openModalButton = video.querySelectorAll('.icon-button')[0]
openModalButton.click()
const saveToWatchLaterButton = document.querySelectorAll('.menu-item-button')[0]
saveToWatchLaterButton.click()
const left = totalVideos - j - 1
console.log(`${left} left.`)
if (left === 0) console.log('It\'s done.')
}, (intervalSecond * 1000) * i, i)
}
}
At the time of writing this answer, by default, it is not possible to add all videos of a playlist to watch later.
However, you can use YT Watch Later Assist Chrome Extension which will help you add all videos of a playlist to watch later in one click in 1 second. This works even for playlists where videos are more than 200+.
Building on @ozgrozer's solution which no longer worked for me due to changes in the markup of youtube's playlist rendering I've updated this script to work in a way that made sense to me. It's below, with some explanation to follow:
const currentStart = 4
const currentCutoff = 200 + currentStart
const videos = document.querySelectorAll('.ytd-playlist-video-list-renderer')
const videosTotal = videos.length
console.log(videosTotal)
const interval = 0.2
const duration = ((interval * 1000) * videosTotal) / 1000
for (let i = currentStart; i < currentCutoff; i++) {
setTimeout(j => {
// const thisVideo = document.getElementById(videos[i].id)
const thisVideo = videos[i]
console.log(thisVideo)
const clickme = thisVideo.querySelector('#button')
console.log(clickme)
clickme.click()
// ASSIGN THE ADD TO QUEUE BUTTON
const dropdown = document.querySelectorAll('#contentWrapper.tp-yt-iron-dropdown')
console.log(dropdown)
console.log(dropdown)
console.log(dropdown)
// IF VIEWING YOUR OWN PLAYLIST USE [2]
// OTHERWISE USE [0]
const queueButton = dropdown[0].querySelectorAll('ytd-menu-service-item-renderer.ytd-menu-popup-renderer')[0]
console.log(queueButton)
queueButton.click()
// MARK VIDEOS THAT HAVE BEEN ADDED TO THE QUEUE
thisVideo.style.border = 'solid red 1px'
}, ((interval * 1000) * (i - currentStart)), i)
}
NOTES:
- Youtube's queue will not allow more than 200 items & if you add more it will autotrim it.
- If you have a playlist with more than 200 items, use the currentStart variable to offset it so that you can get the next 200.
- There are 4 similarly marked up video items on the page that will cause at least one duplicate if you don't start at 4.
- This method will NOT add any items that have been hidden because they are [deleted], [private], or otherwise not available (see next).
- I used this to take extremely long playlists of songs (some having thousands of tracks) owned by other people & copy them to my account so that I could download the tracks using the app 'MACX Youtube Downloader'. I was not able to just use the existing playlists because that program would fail to ingest any playlist if it included [unavailable] videos.
- Since someone else owned the playlist I was not able to delete said unavailable videos which brought me here.
- My method was as follows: visit playlist, scroll to the bottom of it so all items load, open console, inject the script for first 200 items, save queue as playlist, clear queue, repeat offset by 200 until finished.
- As noted in the codeblock, if you are using this to trim out [unavailable] vids in your own playlist you will need to adjust the index of the dropdown query (I probably could have fixed this but lazy).
- IMPORTANT: If this is failing to work it is due to a race condition in how your browser is rendering the changes to the DOM throughout. That is why there are multiple console.log()s here for no otherwise discernible reason. You may need to adjust this if your machine is faster than mine.
- I guess this goes without saying but: only tested in Chrome.