How do I block ads on YouTube?


Any option to share the end txt file for none bash capable users?....So we can add it to the lists on the config page.

Or add this feature into pihole with on/off toggle....lets go a step further.
Lets combine forces and upload all individual found lists. Combine and reshare?

yes... i think this is a nice idea.
unsure how to collect all the different submissions, i do this with 3 friends of mine through rsync
anyone have any suggestions on how to combine or at least host the different files ( i can combine via scripts )

you are welcome to use the ones i use -
and (hosts file format)

updated every 10 mins.... but like i mentioned before, currently there is an issue with the website, it craps out on - so files are very small/empty.

We (you:)) could create/change the/a script that copies/renames the local files to something with a random name and upload every 24 hours..? Combing => pihole -g
Good question: where to upload...making something open will result in chaos or abuse.


Thanks for the files..

Are this the error you get???

root@Pi-Hole-Server:/etc/pihole# ./
Unexpected status code from 500
Traceback (most recent call last):
File "/etc/dnsdumpster/dnsdumpster/", line 10, in
TypeError: list indices must be integers, not str
grep: /var/log/pihole.log.1: No such file or directory

@taxick - yes - exactly
if you go to the website and try to look at that's the error code you will get (500)

edit : i modified the youtube ads script slightly to look at /var/log/pihole.log.1 and pihole.log.2.gz (running 2 days worth of youtube queries) - get a bit more in the resulting file, unsure that they change this daily...
but it seems to be working a little better for me.

Ok :slight_smile:

Hope fix the error.

But again, thanks for the files.

OK, how can i do the same on my pi? IM really a noob.

Btw. Here is a list of youtube blocks:

that github link is really dated, and not updated, it seems.
since they change those domains often, i do not use it. just sayin, ymmv.

as to the other entries - i added two lines to my shell script :
after this line ...
grep r* /var/log/pihole.log | awk '{print $6}'| grep -v
^|' | sort -nr | uniq >> /var/www/html/youtube-ads-list.txt

added these two :
grep r* /var/log/pihole.log.1 | awk '{print $6}'| grep -v '^|' | sort -nr | uniq >> /var/www/html/youtube-ads-list.txt
zgrep r* /var/log/pihole.log.2.gz | awk '{print $6}'| grep -v '^|' | sort -nr | uniq >> /var/www/html/youtube-ads-list.txt

Thx for your reply.

Yes, I can see the list i posted is over 10 months old.

Removed the list again!

Any solution here?

I've found a solution using DNS Lookup - Online Tool |

Luckily the site has an API to which makes downloading a list of DNS records simple using something like curl. The API is designed to be used in an ad-hoc fashion not for bulk queries and is limited to 100 (total) requests from a single IP Address per day.

Quick word of warning, I'm using this script on a pfSense server that's using pfblocker for ad domain blocking. Whilst the script uses standard FreeBSD/Linux type commands, the paths to those commands maybe different when run on a pi-hole.

Enough preamble, here's the script:

echo "" > /root/youtube/youtube-domains.txt
echo "" > /root/youtube/youtube-filtered.txt
echo "" > /root/youtube/youtube-ads.txt
/usr/local/bin/curl "" > 
cat /root/youtube/youtube-domains.txt | cut -d, -f1 > /root/youtube/youtube-filtered.txt
/usr/bin/sed '1d' /root/youtube/youtube-filtered.txt > /root/youtube/youtube-ads.txt 

Lines 1 - 3 clear down text files, as per previous scripts above
Line 4 downloads the DNS records from in comma separated variables format: domain,IP address
Line 5 removes the second entry per line (the IP address)
Line 6 removes the top entry from the resulting file. This just has the text "" in it


As I say, works for me under pfSense with pfblocker, so should work under pi-hole with minor modification

1 Like

wow !
Works perfectly on my R-pi3 :grinning:

Thank you.

Your script could be be condensed a little bit, assuming all these domains are in fact ad domains (ergo: I haven't tested this! :laughing:) :

curl -s "" | awk -F, 'NR>1 {print $1}' | sudo tee /var/www/html/youtube-ads.txt

This creates a blacklist you can use at http://pi.hole/youtube-ads.txt :slight_smile:


Can you make a step by step guide, to get it to work? I´m a big noob in Linux..

I want the script to run ones time a day and auto-update the youtube-ads.txt

Can i just make a file

and enter

curl -s "" | awk -F, 'NR>1 {print $1}' | sudo tee /var/www/html/youtube-ads.txt
#Update Pihole Gravity
pihole -g
echo Update Done

Add this the to the block list: http://pi.hole.ip/youtube-ads.txt

and then make cronjob that runs any night

As long as you added http://pi.hole/youtube-ads.txt to your block list, then yeah your steps would work. However, I have extreme doubts about the domains being provided being ad-serving domains - therefore, you could be very likely blocking access to legitimate content.

The only way I know to verify an ad-serving content server is by coming across it yourself and verifying the host via YT's "Stats for nerds" panel.

1 Like

Thanks for you reply!

Ok, I think I will use a plugin for chrome to block youtube add, and don´t use the pihole for that

http://pi.hole/youtube-ads.txt is no long accessible, or it's down. Any workaround?

Friend, that is a url that goes directly to your pi hole. If that doesn't load that means you don't have the file in your html /var/www/html/.. directory


I have made that running every minute. Still some adds propagated through.

UBlock fixes it.
Youtube is something that requires application level filtering.

indeed, i'm just an idiot and wasn't paying attention. thanks