Ads support content creators and free services. If you value specific creators or platforms, consider supporting them directly through memberships or donations rather than relying solely on ad blocking.
A couple of years ago, I decided I'd had enough of ads. Not just the occasional banner or a quick pre-roll video — I mean all of them. They have to go.
So I embarked on a holy crusade to get rid of them as much as possible. I tried the obvious solutions first, then dug deeper into less conventional approaches. It took a long time, tons of experiments, and many observations, but today I am finally happy where I stand.
There are many techniques out there, some well-known and others surprisingly obscure. Here's what I learned over the years and what actually worked for me.
Let's start with the basics and work our way up to the more unconventional methods. The first few are straightforward and widely used. The later ones require more setup and maintenance but can block ads in places where traditional methods fail.
Browser ad blockers are the biggest boycott in history. You're probably using one already!
I use Firefox with uBlock Origin — it's the best ad blocking combo out there. It's harder if you're on Chromium-based browser, since Google transitioned to Manifest V3 which conveniently limits ad blockers.
I keep my filter lists minimal — they cover almost everything I need:
- Built-in uBlock filters
- EasyList
- AdGuard - Ads
I also maintain my own filters. They don't focus on ads, but rather on other annoyances.
If you find yourself constantly annoyed by specific elements on sites you visit regularly — sticky headers, newsletter popups, etc. — you can write custom filters to remove them. That's exactly what I do.
uBlock Origin has excellent documentation about filters. Start small: right-click an element, use the element picker, and look at what it did. You'll pick up the patterns quickly for simple things.
Once you're comfortable with basic filters, uBlock Origin offers advanced scriptlet resources that can help you with complex scenarios — like blocking specific JavaScript behaviors.
There's also a static analyzer for filters called aglint if you want to validate your filter syntax.
DNS filtering complements browser extensions by catching ads that slip through — particularly in mobile apps. Mobile apps typically load ads from dedicated ad-serving domains, making them straightforward to block at the DNS level.
Pi-hole and AdGuard Home are the most popular self-hosted options for this. If you're looking for a cloud-based solution, I don't use them myself, but I've heard good things about NextDNS.
I use Pi-hole, and it's been smooth so far. I don't expose it publicly — instead, I connect via WireGuard and set Pi-hole as the DNS server in my WireGuard config. If you're looking for blocklists, The Firebog is a great starting point. You'll also want to maintain an allowlist — blocklists occasionally include legitimate domains that break functionality on websites or in apps.
There are multiple ways to install Pi-hole, I keep it in Docker and suggest you do the same.
Now here comes a secret ingredient. If you route all your traffic through a popular cloud provider (via VPN or proxy), then many online platforms are less likely to show you ads.
That happens because to these platforms you look like a fraudster doing something sketchy with their ads. Imagine this scenario: a small business spends $1000 on ads. Their competitors figure out the targeting, mimic that behavior, spin up 10 VMs, and waste the entire advertising budget on fake interactions. The small business isn't coming back to spend more money on ads after that experience.
Online platforms are well aware of this, so they fight fraud. Not serving ads to traffic from public cloud providers is one of the first steps they take.
However, this will negatively affect your experience on some sites — you'll hit Cloudflare captchas and HTTP errors due to sites blocking cloud provider IPs. I'm fine with it and just turn the VPN off occasionally when something breaks. Just keep in mind that even a few requests with your real IP might be enough for an online platform to start showing you ads again.
I host WireGuard on a $5 DigitalOcean droplet, but Hetzner, Azure, Google Cloud, AWS, and others work just as well. DigitalOcean also provides a detailed guide on how to set it up.
Below you'll find some other useful things, although they aren't exactly related to ad-blocking:
- Browser extensions against annoyances:
- I'd also suggest SponsorBlock — it has saved me so much time. There's also an option for TVs and streaming devices.
- If you're on iOS, consider turning off Background App Refresh. Only a few apps use Background App Refresh as Apple designed it, the majority are simply abusing it to get more data about you. If you don't have always-on VPN, you risk exposing your real IP.
- Patched apps are also a thing, and it's also possible to patch mobile apps yourself via ReVanced. While it's a decent option, it's also a security risk — I'm careful with it and don't use it with sensitive accounts.
I've been using all these things mentioned above for over 3 years now. I barely see any ads nowadays. If you're curious about specifics, I keep track of what works where:
| Platform | Web | iOS / Android |
|---|---|---|
| YouTube | uBlock Origin | NewPipe or Invidious |
| uBlock Origin | VPN via cloud (takes a week to a month) | |
| Twitch | VPN via cloud (takes a few days) | - |
| TikTok | uBlock Origin | VPN via cloud (takes a few hours) |
| Apps with AdMob | - | DNS blocking |
These are the tricky outliers. For most sites and apps, DNS filtering and a browser ad blocker catch 99% of ads without any extra effort. The VPN approach helps with that remaining 1%, though it usually takes time to kick in — these platforms don't make decisions based on seeing your IP once, they need to observe patterns over days or weeks.