HOW TO: Watch YouTube and Keep Your Subscriptions Without Ads and Google’s Tracking

all the youtube glory without ads, tracking and annoyances

Ditching Google and all its services is not that hard. Except for YouTube and Maps. At least that’s the case for most users.

However, some users don’t know that they can still use YouTube without using YouTube. Confused?

You can still watch YouTube videos and have all of your subscriptions but without Google’s tracking, without cookies, ads, bypass georestrictions and other annoyances. Intrigued?

Jump over the break to learn more…

NOTE: this is not a “hack” to bypass paid content. If you’re looking for that this article is not for you. However, you might give it a quick browse anyway. It’s for your own good. I promise.

 

 

YouTube Subscriptions

1. Export all of your existing YouTube subscriptions as an OPML file here.

By clicking on “Export subscription” you will download a file named “subscriptoons_manager.xml”.

2. Now unsubscribe from all the channels. You can do this manually, but if you have a lot of subscriptions, it’ll be a pain in the ass. So let’s automate this process.

  • First log in to YouTube if not already logged in.
  • Go to https://www.youtube.com/feed/channels
  • Scroll all the way down until you reach the last channel in your subscription list.
  • Right click in the page and choose “inspect element”.

NOTE: I’m using Firefox. I’m pretty sure there’s a similar option in Chrome but can’t really tell you how to do it because I don’t use Chrome or any Chromium-based browsers. If you use Safari, you can go to Develop > Show Web Inspector > Console. If there’s no “Develop” option in the Safari menu, go to Settings > Advanced and check “Show Develop menu in menu bar”.

 

Now select the “Console” tab and paste the following code and press enter to run:

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 FSMdotCOM");

    console.log(els.length + " remaining");

}

 

IF the above code does not work anymore, use this one instead:

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");
}

 

NOTE: if your subscription list is huge, the script might fail at some point. Don’t worry, just refresh the page, scroll all the way down to the last channel to repopulate and run the script again and again until you’re done.

NOTE: if the script reached a loop, continuously saying “remaning”, this means you’re fully unsubscribed from all the channels. Refresh the page to make sure.

NOTE: if you can’t paste the code into the console type allow pasting or allow paste first then you can paste and run the code.

 

 

 

Delete YouTube History and Activity

1. Go to https://www.youtube.com/feed/history/

2. Go through all the menus and “clear history” and “turn off history”. Delete all comments and when you’re done make sure you click on “MANAGE ALL ACTIVITY”.

This will take you to https://myactivity.google.com/more-activity?restrict=youtube where you can further delete history and activity.

 

 

YouTube RSS

First of all, I would recommend using an RSS client not a service ( unless you self host ). On macOS you can use ViennaRSS or NetNewsWire. On Linux, I use Liferea and Newsboat but there’s a lot of different choices. I can’t recommand a client for Windows. Sorry!

Import the YouTube subscriptions file you’ve exported earlier. That’s it. Now all of your YouTube subscriptions are loaded in your RSS feed. When a new video will be posted you can:

1. Open it in the browser to open it in invidio.us directly ( more on that later )

2. Right click on the title in the RSS client to copy the link and open the link with MPV, VLC or download the video with youtube-dl. ( more on that later )

If you want to subscribe to a new channel you can copy-paste that channel’s link in your feed reader to subscribe to the channel’s RSS.

If that won’t work for some reason ( even though it’s an official method supported by YouTube ) you can use the following link https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL-ID.

Obviously you’ll need to replace “CHANNEL-ID” with the actual channel id but that’s not always obvious where to find as not all channels display the ID in the channel’s links.

There’s two ways you can get the channel ID ( unless you can get it directly from the link ).

1. Use the Console ( same method you’ve used to bulk unsubscribe ) and past this code:


for (var arrScripts = document.getElementsByTagName('script'), i = 0; i < arrScripts.length; i++) {
    if (arrScripts[i].textContent.indexOf('externalId') != -1) {
        var channelId = arrScripts[i].textContent.match(/\"externalId\"\s*\:\s*\"(.*?)\"/)[1];
        var channelRss = 'https://www.youtube.com/feeds/videos.xml?channel_id=' + channelId;
        var channelTitle = document.title.match(/\(?\d*\)?\s?(.*?)\s\-\sYouTube/)[1];
        console.log('The rss feed of the channel \'' + channelTitle + '\' is:\n' + channelRss);
        break;
    }
}

This will output the channel ID.

 

2. Invidio.us – I’ll cover this next.

 

 

Invidio.us

Ok, the RSS YouTube subscriptions option is cool and everything but you really miss the YouTube front end in your browser. You can use invidio.us

Invidio.us offers you an alternative YouTube front end but without Google tracking you ( you need to change one thing to completely remove Google tracking, more on that later ), without ads even if you don’t have an ad blocker, no annotations unless you choose to. Basically no annoyances and you can easily download any video too.

On top of all that, the project is open source and you can also host it yourself.

You can also create an account ( username and password only to register ) and use the opml file that you’ve downloaded from YouTube to have all your subscriptions on invidio.us.

Features:

  • Audio-only mode (and no need to keep window open on mobile)
  • Free software (AGPLv3 licensed)
  • No ads
  • No need to create a Google account to save subscriptions
  • Lightweight (homepage is ~4 KB compressed)
  • Tools for managing subscriptions:
    • Only show unseen videos
    • Only show latest (or latest unseen) video from each channel
    • Delivers notifications from all subscribed channels
    • Automatically redirect homepage to feed
    • Import subscriptions from YouTube
  • Dark mode
  • Embed support
  • Set default player options (speed, quality, autoplay, loop)
  • Does not require JS to play videos
  • Support for Reddit comments in place of YT comments
  • Import/Export subscriptions, watch history, preferences
  • Does not use any of the official YouTube APIs
  • Developer API

So invidio.us strips all the Google tracking and annoyances from YouTube but in order to watch YouTube videos through invidio.us there is one Google service invidio.us will serve you: googlevideo.com. That’s how the player fetches YouTube videos.

Google can’t fingerprint you like that, but it can log your IP since you request the video. There’s an easy fix. You either use a ( quality ) VPN, or you proxy your invidio.us seassion through Tor.

To do that, go to the invidio.us settings ( gear icon on top right corner ) and select “proxy videos” and set “prefered video quality” to “dash”. Other than that, feel free to change the settings to your liking.

Ok, thats cool but what happens if there’s a youtube video embeded into a site or I open a youtube video from my RSS reader in the browser? It will open on YouTube and not invidio.us right?

Yeah, but there’s an extension for that. Oh yeah, and here’s an iPhone shortcut to automatically open YouTube videos with invidio.us.

Be warned! Sometimes invidio.us will be slow or error out. Don’t freak out. Just use any of these invidio.us forks.

 

Oh yeah, I almost forgot. The channel ID.

While using invidio.us ( or any of its forks ), if you go to a channel page you’ll get the channel ID in the browser’s address bar, in the invidio.us search bar and on the bottom right corner there an RSS link to that channel. Easy peasy.

PS: you’re welcome, Marques 🤣🤣🤣

 

 

FreeTube

FreeTube is a YouTube client for macOS, Linux and Windows. Powered by invidio.us API, all of your user data is stored locally and never sent or published to the internet.

Features:

  • Watch videos without ads
  • Use YouTube without Google tracking you using cookies and JavaScript
  • Tor / Proxy Support
  • Subscribe to channels without an account
  • Local subscriptions, history, and saved videos
  • Export & import subscriptions
  • Open videos from your browser directly into FreeTube (with extension)
  • Mini Player
  • Light / dark theme

NOTE: if you don’t use a VPN, enable proxy videos in settings. Change the rest of the settings to your liking.

 

 

VLC & MPV + youtube-dl

Now let’s say you don’t want to go the invidio.us/FreeTube route. You’re happy with your YouTube RSS subscriptions. That’s totally fine, but the point here is to never reach YouTube again. So how do you watch those RSS videos?

When a channel you’re subbed to uploads a new video, your RSS client will fetch that update and notify you.

However, by default, your client will only display the title of the video which is a link to the video on YouTube.

Even if your client fetches the player ( maybe some clients do that, dunno ) it’s still the YouTube player with all the tracking, ads, cookies etc.

Let’s say is the no-cookie player. That’s better, but as soon as you click play in your client, the ads, the cookies and the tracking break free. So what can you do?

Right click on the title of the video and copy the link. Now you have two free, open source and cross-platform options:

1. Open VLC. Go to File > Open Network ( or cmd+N on macOS / ctrl+N on linux and windows ) paste that link and hit enter.

2. Download MPV and youtube-dl. Same deal. Copy the link, open MPV go to File>Open URL and paste that URL. On Linux you can open the terminal and type mpv <yotube-url>

If you have youtube video pages saved on your desktop for example, you can just drag-and-drop them onto MPV to play them.

NOTE: a VPN is recommended here to avoid Google’s IP log

Also please note that if you go down the mpv+youtube-dl route, you can watch videos from a lot of different websites, not just YouTube.

youtube-dl is a powerful plugin that allows you to watch online videos through mpv.

You can also download videos, playlists, download just the audio, bypass georestrictions etc etc etc.

For a complete list of what youtube-dl can do for you see the official github page

Check out the full list of video websites that youtube-dl supports, here.

 

Android

There’s an iOS shortcut above to open YouTube straight into invidio.us. If you’re on Android, check out NewPipe.