It’s annoying to have so many subscriptions when you don’t even watch those YouTube channels.
It looks cluttered and most of the time you’re recommended awful videos related to those channels in the Recommended section that no longer keeps your interests.
Besides, if you’re confused, ask yourself this question:
Are you even interested to watch the content produced by the other 100+ channels when in fact you only watch your top 5-10 channels most of the time?
If so, then it’s worth unsubscribing from the channels that no longer interest you and stick with the ones that do.
In this guide, I’ll show you how you can unsubscribe from all the Youtube channels at once.
Let’s dive right in.
How to Mass Unsubscribe YouTube Channels at Once: 3 Ways
1. The Long Approach.
This method allows you to unsubscribe YouTube channels, however, it comes at a price of being a little more time consuming than the other methods below.
It is like going through a box of memorabilia and taking the time to go through one by one and decide whether each goes into the Want box or the Throw box. 📦
This method is perfect if you have the liberty of time and patience to one by one swift through your channels list and ensure you unsubscribe from the ones that you really don’t need whilst you keep the ones that you really do need
Let’s get started.
- Jump into YouTube and then from the sidebar (or if you’re on mobile, then the bottom bar) click on Subscriptions.
- Now, you should see the list of all your subscribed channels on YouTube (if you’re on mobile then you’ll need to click on All at the top). What you can do is click on the grey Subscribed button and then click Unsubscribe from the “Unsubscribe from <channel name>?” pop-up.
Note
For mobile, simply tap on Manage at the top right-hand corner and then swipe from right to Unsubscribe the channel.
Do this one by one for each channel that you want to unsubscribe from. For mobile, simply swipe from right to Delete the channel.
Now like I mentioned this is how you normally do it and it’s perfect if you have the time to do it.
But most of us don’t have the time or patience to do this, which is why the next method is the best way to mass unsubscribe YouTube channels.
Also, Note
If you don’t mind mass unsubscribing from all the YouTube channels you’ve subscribed to, then do the next method.
2. The Bazinga.
I thought that would be a cool name for the method. 😛
Anyways, the following method is the most surefire and tested way of 2019 to mass unsubscribe YouTube channels that you’d subscribed to.
It does involve a little copy-pasting of “code” but trust me, I will make this as simple as possible. Just follow the steps and you will do it.
⚠️ Warning
The following method mass unsubscribes from all the channels you’ve subscribed to. So if you have a channel that you may feel you might forget after you unsubscribe or that you don’t want to unsubscribe from them either take note of the few channels that you want to maintain a subscription and then proceed with the method below.
Okay. Let’s do this.
- Go to the following link in your YouTube: https://www.youtube.com/feed/channels
You should see a list of all your subscribed YouTube channels.
- Good. Now, listen carefully, scroll the page all the waaay down until you reach the very last subscribed channel in your list. This is so that we can populate all the channels we’ve subscribed to the screen (which makes it more effective to mass unsubscribe from all of them). You’ll see what I mean in the next few steps.
- Next, simply right-click anywhere on the page and then click the option to Inspect Element (or just Inspect).
- I know it all looks a little like mind-f*** but hear me out. Click the Console tab.
- Now, simply copy-paste the below “code” into the Console (like I’ve shown you below). Once you’ve copied and pasted it into there, just hit your Enter key (or Return key).
var i = 0;
var myVar = setInterval(myTimer, 3000);
function myTimer () {
var els = document.getElementById("grid-container").getElementsByClassName("ytd-expanded-shelf-contents-renderer");
if (i < els.length) {
els[i].querySelector("[aria-label^='Unsubscribe from']").click();
setTimeout(function () {
var unSubBtn = document.getElementById("confirm-button").click();
}, 2000);
setTimeout(function () {
els[i].parentNode.removeChild(els[i]);
}, 2000);
}
i++;
console.log(i + " unsubscribed by Saint");
console.log(els.length + " remaining");
}
- Sit back and watch the magic happen in front of you.
That’s it! Do make sure to refresh the page.
If for some reason this didn’t work, comment down below, I’ll try and guide you through it. 🙂
Note
You may see that the script loops by saying “_ remaining” continuously. At that point, all your subscriptions should be unsubscribed. The loop is just a side effect of the script. There’s nothing to worry about.
Help! The thing stopped unsubscribing. What do I do?
If you find the script stopped unsubscribing, then simply refresh the page and then follow the above steps again. It will work.
Help! The script doesn’t work for me. Some of the channels are still not unsubscribed.
Sometimes YouTube just updates their system and prevents scripts like the one we’ve used above, thinking it may be one of those pesky bots. If the method above doesn’t work, you have two ways to go about it: 1) Refresh the page and try again. 2) Try the following method below, which will always remain an updated alternate method to the previous method. Try it and see if it works.
3. Another Way to Unsubscribe.
This is another alternate way with a different script to the one above. It’s great if you find the above method is no longer working.
Simply copy-paste the code below by following the exact steps for Method 2.
var i = 0;
var myVar = setInterval(myTimer, 200);
function myTimer () {
var els = document.getElementById("contents").getElementsByClassName("ytd-subscribe-button-renderer");
if (i < els.length) {
els[i].querySelector('.ytd-subscribe-button-renderer').click();
setTimeout(function () {
var unSubBtn = document.getElementById("confirm-button").click();
}, 500);
setTimeout(function () {
els[i].parentNode.removeChild(els[i]);
}, 1000);
}
i++;
console.log(i + " unsubscribed");
console.log(els.length + " remaining");
}
Don’t forget to share this post! Also, subscribe to Pewdiepie.
Kind of complex procedure, but eh, we’re programmers lol.
Awesome man. I just unsubscribe more then 500 channels. Thanks for this trick.
2nd code worked for Acer Chromebook, thank you!!
Thank you so very much. It was cool watching it all unfold. Lol
Oh my gosh, thank you so much. You’re the best!!!
You need to remove the i++ from the first code set – you’re removing the item from the dom, so technically you’ll always want to use item “0”. If you want to continue to use the console to log which ones you removed, add a new var k = 0 and do k++ and use that for your console log.
Also, scrolling to the end is irrelevant. It’ll only do 75 at a time, and you’ll need to refresh the page each time it completes that 75.
Otherwise, worked like a charm!
Thank you so much …………………………….
This is a great topic. Thanks I just updated a little code.
var i = 0;
var myVar = setInterval(myTimer, 3000);
function myTimer () {
var els = document.getElementById(“grid-container”).getElementsByClassName(“ytd-expanded-shelf-contents-renderer”);
if (i < els.length) {
els[i].querySelector(".ytd-subscribe-button-renderer").click();
setTimeout(function () {
var unSubBtn = document.getElementById("confirm-button").click();
}, 2000);
setTimeout(function () {
els[i].parentNode.removeChild(els[i]);
}, 2000);
}
i++;
console.log(i + " unsubscribed by Saint");
console.log(els.length + " remaining");
}
wow, this code is working.
Second Method Worked very well. Thank you for your amazing tricks that worked for me. I hope you help us a lot in the future. Keep it up.
Nice one! Worked a treat.
Hi.
As a JS developer, I quickly realized that the “long” way to achieve full unsub to all the channels would have to be performed with some code, I was a little lazy for writing it myself. So finding this code made my life a little bit easier.
However, I would suggest embedding some “bullet-proof” code into it, especially when this is intended to be used by non-developer users, obviously.
For example:
if (document.getElementById(“confirm-button”)) {
var unSubBtn = document.getElementById(“confirm-button”).click();
}
Or:
if (els[i].parentNode) {
els[i].parentNode.removeChild(els[i]);
}
All and all, this is a great little article, and a very useful one!
Thanks.
Thank youuuuuu !!!
the first code does not work at all for me, and the second one handles 1 unsub and registers it as two. Both of em get the same error:
Uncaught TypeError: Cannot read property ‘click’ of null
at myTimer (:11:63)
Same result for me :/ Is there any new solution ?
You are a genius!!! Not all hero wear with capes, THANK YOU SO SO MUCH!
SUBSCRIBE TO PEWDIEPIE
Beautiful!
2nd methot is fu**ing good bro
That’s incredible, thank you so much!
You’re AWESOME!
Thanks a lot! 😀
Subs to Pewd
Thank you so much. This helps alot in cleaning my sub channels
Use this instead for the new Chrome update:
var i = 0;
var count = document.querySelectorAll(“ytd-channel-renderer:not(.ytd-item-section-renderer)”).length;
myTimer();
function myTimer () {
if (count == 0) return;
el = document.querySelector(‘.ytd-subscribe-button-renderer’);
el.click();
setTimeout(function () {
var unSubBtn = document.getElementById(“confirm-button”).click();
i++;
count–;
console.log(i + ” unsubscribed”);
console.log(count + ” remaining”);
setTimeout(function () {
el = document.querySelector(“ytd-channel-renderer”);
el.parentNode.removeChild(el);
myTimer();
}, 250);
}, 250);
}
Hope this helps! 😉
Inspect element doesn’t come up when I right click :/
Inspect element or element
U can click element
You are a life saver… Thanks dude.
Hot damn!
Thank you. It really unsubscribed not all at once all but 45 at once.
please never delete this. It unsubscribed over 70 channels!:D I i’m amazed!
Great. Many thanks. I used 2. The Bazinga. Easy as pie and fun watching. A bit embarassd to write the number it deleted and yet, it did delete. Thank you.
Thank you!
I SO wish this would work, but when it hits 46 subs, for some reason it stays at “45 subs remaining”.
If I let it run it gets into the thousands. But then when I stop and check my channels I still have more than 900 channels in my sub box.
PLEASE someone help!
this trick is awesome.. Also please help me with the trick to get subscribers 😉
Here’s an improved piece of code that is faster and easier to understand than the others:
const unsubscribeButtons = document.querySelectorAll(“paper-button.ytd-subscribe-button-renderer”)
let i = 0;
function unsubscribe() {
document.getElementById(“confirm-button”)?.click()
if(unsubscribeButtons[i]) {
unsubscribeButtons[i++]?.click()
setTimeout(unsubscribe, 200)
}
}
unsubscribe()
The second method is no longer working. It does ONE and then I get this, on a MAC on Chrome FYI
Uncaught TypeError: Cannot read property ‘click’ of null
at myTimer (:11:63)
This was pretty epic. Thanks my dude.
This is amazing!! Thank you!! My kids used my YouTube to watch videos for almost a decade and I now have to clean up!
It doesnt work, I ewven tried the codes below the comments. Help
Works. Amazing
Amazing thanks
haha this is craaazzyyy! THANKS A TON. I had this weird urge to just unsubscribe from everything, factory reset my ipad, close the 500+ tabs on safari and sort of clear all bullshit in my life . AND THIS HELPED SO MUCH so thank you
None of these methods, nor the ones in the comments, work at all for me. Anyone have a solution?
None of these methods work for me, not even the ones in the comments. Anyone any reccomendations?
Try this:( https://chrome.google.com/webstore/detail/youtube-unsubscribe-all/bbpkghgmcjojbljplcdehdbkgphhpemo?hl=en-US )
If you have tons of channels, start to wipe. after it wipes a section. refresh the page. then start the wipe again. repeat if there are more.
I wrote a more consistent version of this here.
https://codepen.io/zachary_boom/pen/poENYWd?editors=0010
Found this code that worked for me:
/**
* Youtube bulk unsubsribe fn.
* Wrapping this in an IIFE for browser compatibility.
*/
(async function iife() {
// This is the time delay after which the “unsubscribe” button is “clicked”; Tweak to your liking!
var UNSUBSCRIBE_DELAY_TIME = 2000
/**
* Delay runner. Wraps `setTimeout` so it can be `await`ed on.
* @param {Function} fn
* @param {number} delay
*/
var runAfterDelay = (fn, delay) => new Promise((resolve, reject) => {
setTimeout(() => {
fn()
resolve()
}, delay)
})
// Get the channel list; this can be considered a row in the page.
var channels = Array.from(document.getElementsByTagName(`ytd-channel-renderer`))
console.log(`${channels.length} channels found.`)
var ctr = 0
for (const channel of channels) {
// Get the subsribe button and trigger a “click”
channel.querySelector(`[aria-label^=’Unsubscribe from’]`).click()
await runAfterDelay(() => {
// Get the dialog container…
document.getElementsByTagName(`yt-confirm-dialog-renderer`)[0]
// and find the confirm button…
.querySelector(`#confirm-button`)
// and “trigger” the click!
.click()
console.log(`Unsubsribed ${ctr + 1}/${channels.length}`)
ctr++
}, UNSUBSCRIBE_DELAY_TIME)
}
})()
Works like a charm!