Element Hiding: Ad Blocking’s Dirtiest Trick

KardBlock, the browser plugin that removes all references to the Kardashians, was met with great fanfare at its May launch. At its core, KardBlock is a customized ad blocker, and it provides a clean illustration of a technique that is rewriting the rules of ad blocking for the world’s biggest media companies.

Under the hood of Kardblock

KardBlock uses a technique called element hiding to produce a Kardashian-free internet experience. The tool simply looks for pieces of web pages that contain Kardashian content and hides this content from the user. As an example, take a look at the following before-and-after screenshots from E! Online:

Poof! No more Kardashians. But even in the screenshot on the right, the image of Kendall is downloaded to the user’s browser. KardBlock doesn’t prevent your browser from downloading Kardashian content, rather it just prevents the content from being presented on screen. E! Online’s website analytics will report two views of the Kendall image — one for each page view. Meanwhile only one of those two pageviews actually produced on-screen content.

What this means for ad blocking

It turns out that ad blockers are increasingly behaving like KardBlock, and this has some ugly consequences for both publishers and advertisers. In an attempt to outsmart ad blockers, publishers are adopting native advertising products that are largely indistinguishable from the site’s primary content. While ad blockers typically cannot prevent native ads from downloading, they can employ a KardBlock-like technique to prevent native ads from rendering.

Here’s an example of a typical Facebook ad unit:


Because these ads all load from the same domain as Facebook’s newsfeed content, traditional ad blocking fails. Enter element hiding.

Facebook loads this particular ad unit in the following HTML element:

<div class=”ego_column pagelet _y92 _5qrt _1snm”></div>

EasyList, the most commonly used set of ad blocking filters, contains the following rule, which hides this specific Facebook HTML element:

facebook.com##div[class=”ego_column pagelet _y92 _5qrt _1snm”]

When you visit Facebook with an ad blocker, all of the content inside this HTML element will be hidden from the user:

Poof! No more ads. But just like KardBlock, ad content is downloaded and then hidden, and that creates a real advertising mess.

Element hiding’s implications

Traditional ad blocking is bad, but element hiding is worse. In our example, Facebook will record the impression, but J Crew’s reporting system will not, leading to volume disputes between the companies. Without a record of the impression, J Crew’s performance measurement systems will also be unable to record any advertising success metrics like viewability, ad engagement, and post-impression sales. Facebook’s performance will appear weak. And depending on contractual terms between the two companies, J Crew may even be responsible for paying Facebook for this hidden impression. Through no fault of either company, their business relationship may be damaged.

So what are publishers and advertisers to do? The good news is that there are techniques for both publishers and advertisers to stay one step ahead of element hiding. The bad news is that the ad blocking playbook largely contains short term cat-and-mouse tactics, not long term strategic solutions. Brace yourself for some hand to hand combat between the ad economy and the ad blocking community.

For more ad tech thinking, visit the Jounce Media Blog