When seeing a good Youtube video, it is common for people to add it to Watch Later list to “watch later”. The problem is that the list keeps adding up and becomes bigger and bigger.
See also: Youtube Thumbnail Grabber
If you don’t want to read all these long text, try a more simple version at Tle Apps.
When the Watch Later list becomes too big, it will loose its purpose of keeping track of wanted videos. Users start deleting watched videos or uninteresting ones. But they must click “Remove from Watch later” for a hundreds of videos. In most cases nobody wants to do that.

Bulk-deleting is the solution everyone loves. Youtube has Delete watched videos
feature which delete videos you already watched. Even if you only watch 1 second of a video, it is also deleted. What about videos we haven’t watched? We still need to find a way to delete them in bulk.

So Youtube still lacks the much-needed mass delete features. Fortunately, we can execute a JavaScript block of code to mass delete Watch Later videos.
Table of Contents
Steps to Remove All Watch Later Videos at Once
1) Open your Youtube Watch List in web browsers like Chrome or Brave.
2) Press F12
to open developer’s console or access it via web browser’s Menu.
3) Navigate to Console tab.

4) Paste this script into the console and press Enter
.
Updated: 2021/09/24
Here are the scripts I used to delete videos on my Watch later list:
One of the following scripts can work for you. Try both to see which one sticks. The following script was modifed to work with recent Youtube changes.
setInterval(function() {
document.querySelector('#contents button[aria-label="Action menu"]').click();
var things = document.evaluate('//span[contains(text(),"Watch later")]',document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < things.snapshotLength; i++) {
things.snapshotItem(i).click();
}
}, 1000);
setInterval(function() {
document.querySelector('#primary button[aria-label="Action menu"]').click();
var things = document.evaluate('//span[contains(text(),"Watch later")]',document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < things.snapshotLength; i++) {
things.snapshotItem(i).click();
}
}, 1000);
After pressing Enter, you will see videos disappearing one by one. When the script executes, it open the menu of each video popup item and click on the Remove from Watch Later menu item.

Apply the script in different language
Thanks Xerus for reporting bout the script not working in other languages. Here is how to apply it for other languages:
- Find the text of the hidden menu button (three vertical dots) by Right-click and Inspect on it. You will find the aria-label text in your language. Replace “Action menu” with the text in
'#primary button[aria-label="Action menu"]'
- Replace “Watch later” with the text in your language in
span[contains(text(),"Watch later")

I tried the script in French language by replacing:
- “Action menu” with “Menu d\’actions” – Remember to add a slash (\) before a single quote to escape it.
- “Watch later” with “À regarder plus tard”
The script becomes:
setInterval(function() {
document.querySelector('#contents button[aria-label="Menu d\'actions"]').click();
var things = document.evaluate('//span[contains(text(),"À regarder plus tard")]',document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < things.snapshotLength; i++) {
things.snapshotItem(i).click();
}
}, 1000);
Thank you for the script. First one worked for me.
Thank you so much, you’re a god for this. The second script worked for me. I was about to accept my fate of over 1k watch later videos. For anybody having any issues, instead of F12 I did CTRL +SHIFT + J and I also turned off my adblock just in case.
ITALIANO:
setInterval(function() {
document.querySelector(‘#contents button[aria-label=”Menu Azione”]’).click();
var things = document.evaluate(‘//span[contains(text(),”Guarda più tardi”)]’,document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < things.snapshotLength; i++) {
things.snapshotItem(i).click();
}
}, 1000);
Thank you so much! I had almost 3000 videos on watch later and decided to finally put a stop to it.
Thank you for this! It works great. Saved me the trouble of manually deleting 400+ videos that I’ll never get to.
You’re updated instructions worked great in Chrome (needed to run it twice somehow, but no code fiddling required). Safari somehow did not.
Did you set it to 1000 ms for bot-detecting reasons?
You’re amazing, thank you!
I believe so. I adjusted mine to 750 and it is going faster. Setting it to half a second, 500, will not work.
Your instructions were the only ones that worked so easily for me, and i’d been searching for 30 minutes how to delete all my Watch Later. thanks so much! using F12 / then going to console tab. is so much easier than the ctrl + shift + J that other people have suggested. thanks again
Script is not working more 🙁
Youtube has changed some elements. I modified the script amnd it should work now.
Can you please modify this script to add videos from a playlist to the queue?
I want to add all the uploads from a channel from the automatically generated “Uploads from [channel name]” playlist to a playlist of my own. Adding them to the queue and then selecting “Save” seems like the best option, and I would like to automate the process.
Thanks!
I will check what can be done here. If it is possible, I will create a new post to show the script.
I created the script and share on this post, https://www.tldevtech.com/how-to-bulk-add-to-queue-videos-from-a-youtube-playlist/.
did not work, but this worked
var all = document.getElementsByClassName(“dropdown-trigger style-scope ytd-menu-renderer”)
for (let item of all) {
setInterval(function () {
item.click();
var things = document.evaluate(‘//span[contains(text(),”Watch later”)]’, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < things.snapshotLength; i++) {
things.snapshotItem(i).click();
}
}, 1000);
}
Worked on spanish youtube as of 4 august 2021 on my +1000 “Ver más tarde” playlist
Thanks a lot!
script worked just now.
gracias
used for almost 1000 vids though after a while it only did 100 at a time. worked again after refresh (for another 100)
thanks the script is working 29- jul 2021
Script worked for few videos but now a message apears “why seeing this add” and script shows message in red “net::ERR_BLOCKED_BY_CLIENT”. As a result videos are not being removed from list.
Thank you.
This worked for me (after I realized I was pasting the French script by accident)
Thank you thank you so much!!!! This works as of July 21, 2021!!!!
Thanks heaps! This worked like a charm, although I had to invoke the script several times after refreshing the displayed Watch Later list.
it works!
Would be important to mention that the Script works with English. If your youtube account is set in another language, you will have to replace “Watch later” in the script with the correct language first, or set your account in english and execute the script afterwards. awesome thank you
Works perfect for me. Now I have to wait 2 hours till it clears the entire list. I know I have an addiction I’m a chronic video hoarder lol.
Sorry to add more questions but, I did this, and it worked, but I didn’t know what to do after it was done. At the end I get something similar to what: FAHAD’s comment in Mar/2021. I copied this from his comment: 235VM98:4 Uncaught TypeError: Cannot read property ‘click’ of undefined
at :4:13
If you could please respond. Thanks.
What did you mean by “after it was done”? If the script worked and all videos were deleted, try refreshing your browser’s tab to stop script from executing. That error happens when there is no video to delete.
This is not working for me. I’m getting a pop up that says “Why this ad? on one line and then “Stop seeing this ad” on the second line.
Can you explain in more detail or a screenshot? What is your Youtube language, any installed browser addons for Youtube?
I get the same error. Did you ever figure it out?
doesn’t work if youtube is set to a different language :/
I updated tutorial for other language.
Neither the first nor second script is not working this error is showing
setInterval(function() {
document.querySelector(‘#primary button[aria-label=”Action menu”]’).click();
var things = document.evaluate(‘//span[contains(text(),”Watch later”)]’,document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < things.snapshotLength; i++) {
things.snapshotItem(i).click();
}
}, 1000);
1272
235VM98:4 Uncaught TypeError: Cannot read property 'click' of undefined
at :4:13
Hi. I just tested again and confirm that the script you copied works.
The 2nd script works fine, but it doesn’t delete private and deleted videos.
the script doesn work, Uncaught TypeError: Cannot read property ‘click’ of null
at :2:69
Use the 2nd script
Second script works perfectly, thank you
Hi, thank you for your reply.
Here is the image: https://i.imgur.com/JmVrnBG.png
This script hasn’t work anymore with new Youtube’s UI. I’m testing and see if I can write a new script.
Edited: I uploaded new script.
where is the script
Cannot read property ‘click’ of undefined
any ideas?
You must take a screenshot of your whole screen so I can understand what is going on.