How to Mass Unsubscribe YouTube Channels at Once

mass unsubscribe YouTube channels at once

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.

  1. Jump into YouTube and then from the sidebar (or if you’re on mobile, then the bottom bar) click on Subscriptions.

Youtube subscriptions

 

  1. 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.

unsubscribe from all the Youtube channels at once

 

unsubscribe from all the Youtube channels at once

 

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.

  1. 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.

mass unsubscribe YouTube channels at once

 

  1. 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.

unsubscribe from all the Youtube channels at once

 

  1. Next, simply right-click anywhere on the page and then click the option to Inspect Element (or just Inspect).

Inspect subscriptions

 

  1. I know it all looks a little like mind-f*** but hear me out. Click the Console tab.

mass unsubscribe YouTube channels at once

 

  1. 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");

}

 

unsubscribe from all the Youtube channels at once

 

  1. Sit back and watch the magic happen in front of you.
unsubscribe from all the Youtube channels at once
See that it says “unsubscribed by Saint”.

 

That’s it! Do make sure to refresh the page.

Empty subscriptions list
Once you refresh your page, it should look like above.

 

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.

unsubscribe from all the Youtube channels at once
Endless loop = finished.

 

 

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. 

 

46 comments
  1. 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!

  2. 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");

    }

  3. 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.

  4. 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.

  5. 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)

  6. 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! 😉

  7. 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.

  8. 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!

  9. 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()

  10. 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)

    1. This is amazing!! Thank you!! My kids used my YouTube to watch videos for almost a decade and I now have to clean up!

  11. 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

  12. 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)
    }
    })()

Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post
install python 3 on mac

How to Install Python 3 on Mac

Next Post
Change Apple ID Email Address

How to Change Email Address for Your Apple ID

Related Posts