Pi-hole, a popular ad-blocking software, has dropped support for AdBlock-style blocklists -- the types of lists used by browser-based adblockers to stop ads.

Pi-hole is a type of software that users can install on Linux servers or Raspberry Pi boards. It works by sinkholing traffic based on a list of domain names from advertising, tracking, and analytics services.

It is a so-called network-level ad blocker, working similarly to a firewall, but for ads, and allowing users to block ads for all devices inside a network, rather than inside a browser. The software has been around for years, has become extremely popular, and is installed on more than 12,000 servers across the world.

Pi-hole drops support for AdBlock-style blocklists

But in a recent update, Pi-hole creators announced they were dropping support for "AdBlock-style blocklists," named so after AdBlock, the first ad-blocking browser extension.

The syntax and formatting of this extension's blocklist has spread and has become an informal standard across fellow browser-based ad-blocker extensions.

Pi-hole creators said they decided to drop this type of ad-blocking blocklist format because it was never meant for Pi-hole systems, and users employing these types of lists were creating "far too many false positives," blocking domains that were never meant to be blocked.

As a result of this recent change, Pi-hole developers said that users "may notice a reduction in the number of blocked domains" going forward, something that Pi-hole users won't be too happy to hear.

The two ad-blocking "worlds"

"There are basically two different ad blocking worlds," Andrey Meshkov, CEO of AdGuard, a company that makes ad-blocking software, told ZDNet this week.

"First is traditional ad blockers like uBlock Origin, AdGuard, AdBlock Plus. You know them all. We all use the 'AdBlock-style' filter lists, which are quite complicated and allow specifying different kinds of 'patterns' and matching criteria."

"Here's an example of a simple rule that will match third-party javascript files: ||example.org^$third-party,javascript

"The second world is 'DNS-level' or 'hosts-level' ad blockers," Meshkov said. These are very simplistic, practically listing all domains to be blocked, one under the other. These are used by software like Pi-hole, AdGuard Home, Adaway, Blockada, AdGuard Pro for iOS, etc..

"These DNS-level ad blockers are kinda limited as the only thing they can block or unblock are domain names. They don't see the individual HTTP (or any other protocol) requests going through TCP or UDP connections," the AdGuard CEO said.

"The problem is that using this approach isn't enough to block some ads," Meshkov added. "For instance, the Facebook ad network loads its mobile ads by sending an HTTPS request to https://graph.facebook.com/network_ads, and with a DNS-level ad blocker, the best you can do is blocking the whole graph.facebook.com domain and breaking all Facebook apps."

AdBlock-style lists are superior

The AdGuard CEO argues that using classic AdBlock-style blocklists is superior, as this helps block more ads due to these blocklists ability to drill-down network requests and look for the ad code, rather than bluntly blocking an entire domain.

Furthermore, there's also the issue of performance.

"Traditional ad blockers spent quite some time improving their filtering engines, optimizing the memory footprint, and making them fast enough," Meshkov told ZDNet.

On the other side, using DNS/host-based blocklists -- like the ones Pi-hole will be using from now on -- have a major disadvantage, which is size.

"Hosts blocklists are ridiculously huge," Meshkov said. "Energized or DBL have over one million hostnames.

"This is mostly because there's no pattern-matching, and instead of having one rule like this ||doubleclick.net^, there are 24917 doubleclick.net subdomains."

Dropping AdBlock-style blocklists is a "mistake"

"Most of the AdBlock-style filter lists are not supposed to be used in the DNS-level ad-blocking software [like Pi-hole]. They were created specifically for the traditional ad blockers," Meshkov told ZDNet.

"And I think this is why they decided to drop support, they are just tired of people trying to use EasyList or EasyPrivacy in Pi-Hole and then dealing with lots of false positives.

"However, I think this is a mistake. I actually think that AdBlock-style syntax is superior to hosts blocklists, and instead, they should have urged blocklists maintainers to start using it so that there were more proper blocklists," Meshkov added.

"In an ideal world where everyone uses the same syntax, the filter lists would be compatible, and it would be easier for people to contribute to both hosts blocklists and traditional filter lists.

"Instead of that, by making this change, Pi-Hole encourages people to continue using the old approach, and increase the blocklists' size even more," the AdGuard CEO added.

Pi-hole v4.3.2, released last weekend, is the first version that dropped classic AdBlock-style blocklists.