Ad Blockers Hiding Images
We rate this tip B tier: an image that vanishes for some visitors may be blocked by its file name alone. George Vanous lost one to a name starting "adsense-" in 2020; today's EasyList no longer blocks that name, but it still blocks others, such as any name containing "-728x90.".
We rate this tip B tier: the trap is real and still set, but the exact names in George Vanous's notes are no longer the ones that spring it. In 2020 an image on his own site disappeared because its file name began with "adsense-", and the copy of EasyList from Sep 29, 2020 holds the rule that did it: /adsense-. The EasyList published on Nov 10, 2026 has no such rule, and none of his three file names is blocked by it. We think the lesson outlived the rule: the same list today still hides an ordinary image named photo-728x90.png, and a site owner who has never heard of filter lists will stare at that broken image for an hour.
We think EasyList will not bring a general /adsense- or /adsense_ rule back. Its general blocking section held 8,326 lines on Sep 29, 2020 and 966 on Sep 30, 2025: the list spent those five years cutting broad name rules, not adding them. Confidence: Likely. Check by: Mar 2027.
What George saw
His notes have no date on this entry; the upload folder in the image's address puts it in Sep 2020. He had written a post about AdSense and YouTube and uploaded a screenshot named adsense-required-email-by-youtube.png. On the page, the image was missing. In his notes, George writes: "AdBlock Chrome extension is blocking my image!" and, one line later, "It shows when I disable AdBlock."
He then worked out a rule by trying names, and recorded one of each:
| Name | His verdict |
|---|---|
adsenseaccount-required-email-by-youtube.png |
Good |
adsense_account-required-email-by-youtube.png |
Bad |
His conclusion, in his words: do not use "adsense" or "ads" in the file name "as a standalone word".
The rules that did it, and what ^ has to do with it
An ad blocker does not look at an image. It compares the address of every request against a filter list, and EasyList, which its own site calls the primary list that most ad blockers use, is plain text you can read. A rule with no special characters is a substring: Adblock Plus's guide to writing filters says a filter can match any part of an address, and warns that such a filter will sometimes match where its author did not intend.
That is exactly what happened. In the Sep 29, 2020 list we found two rules among the general blocking filters:
/adsense-matches any address containing a slash followed by "adsense-". His original name sat right after the slash of the uploads folder, so it matched./adsense_$domain=~adsense.googleblog.com|~support.google.commatches "/adsense_" on every site except the two Google ones named after$domain=. That is his Bad name.
No rule in that list matched "/adsenseaccount", so his Good name passed. His experiment was right in both directions.
Many filters use a special character, ^, to mark a word's end, and it is worth knowing because it explains why his fix worked. The same guide defines ^ as one separator character, meaning anything that is not a letter, a digit, or one of _, -, . and % (the end of the address counts too). So ||example.com^ matches example.com/ but not example.com.ar. Notice what is on the not-a-separator list: the hyphen and the underscore. To a filter, adsense-required is one unbroken run of characters, which is why EasyList's authors had to write the hyphen and the underscore out as two literal rules. It is also why gluing the next word on (adsenseaccount) escaped both: the character after "adsense" was no longer one the rules named.
One part of his conclusion goes further than the 2020 list did. We ran a few "ads" names through it: ads-banner.png was blocked (by /ads-banner) and adsbanner.png too (by /adsbanner.), but ads_banner.png and my-ads.png were not. There was no blanket rule against "ads" as a word, only hundreds of specific ones. Avoiding the word was still the safe habit.
His three names against today's list
We downloaded EasyList on Nov 10, 2026 (the version stamped that day, 5:35 PM Dubai time) and tested each name as an image on a site's own uploads folder.
| Name | Sep 29, 2020 list | Nov 10, 2026 list |
|---|---|---|
adsense-required-email-by-youtube.png |
Blocked by /adsense- |
Not blocked |
adsense_account-required-email-by-youtube.png |
Blocked by the /adsense_ rule quoted above |
Not blocked |
adsenseaccount-required-email-by-youtube.png |
Not blocked | Not blocked |
Today's list still mentions "adsense" 287 times, but almost all of those are rules for named sites or page elements. The only two general ones are /css/adsense.$stylesheet and /google_adsense-$script, and both are limited to style sheets and scripts, so neither touches an image. Both old rules were still present in the list's Sep 30, 2022 copy and gone from the Sep 30, 2023 copy. We did not look for the exact day.
uBlock Origin adds its own lists on top of EasyList. In its main filter file we found one general rule naming AdSense, /all-for-adsense/*, which needs a folder of that name and would not catch any of his three files.
Names that are still blocked today
The same test, with names we made up, shows the trap has moved rather than closed. Each of these would be hidden on any site by the Nov 10, 2026 EasyList:
| An innocent file | The rule that blocks it |
|---|---|
photo-728x90.png |
-728x90. |
sponsor-ads.jpg |
/sponsor-ad$image |
advert.png |
/advert. with options, in full below |
anything in a folder /ads/banners/ |
/ads/banners/*$image |
The third rule in full, with the ten sites it spares:
/advert.$~script,~xmlhttprequest,domain=~advert.ae|~advert.club|~advert.com.tr|~advert.ee|~advert.ge|~advert.io|~advert.media|~advert.org.pl|~advert.plus|~motortrader.com.my
The first is the one we would warn about. WordPress and many image tools add the pixel size to a resized file's name, and 728 by 90 is a standard banner size, so a perfectly ordinary wide image can pick up a blocked name without anyone typing it. The list has a whole section of size rules like it.
What did not match today: ads.png, ads-banner.png, banner-ads.png, ad-banner.png, google-adsense.png and a file inside a folder named /ads/ or /adsense/.
If an image is missing on your site
- Open the page in a private window with extensions off, or in a browser with no ad blocker. If the image appears, a filter is hiding it.
- Find the rule. In Chrome, the Network tab of the developer tools marks the request as blocked by the client. uBlock Origin has a logger that names the filter for each blocked request.
- Rename the file and upload it again. Take out ad words (ad, ads, advert, banner, sponsor) and ad sizes (728x90, 300x250, 160x600), in the file name and in the folder names above it.
- Check the new name the same way before you publish.
Renaming is the whole fix, and it costs a minute. You cannot ask your visitors to change their filter lists.
The other thing his blocker stopped: Analytics and Tag Manager
The same entry in his notes records the extension blocking his site's request to googletagmanager.com/gtag/js, the script that loads Google Analytics. That one is deliberate, not an accident of naming, and it still holds. EasyPrivacy, EasyList's companion list for tracking, has these two rules today: ||googletagmanager.com^ and ||google-analytics.com^$script,third-party,xmlhttprequest. EasyList alone did not block either script in our test. uBlock Origin's README lists EasyPrivacy among the lists it turns on by default, so its users are not counted by a standard Analytics setup.
George's notes say a search pointed him to a reverse proxy as the only dependable way around this. We could not confirm that with an official source: Google's page on server-side tagging recommends serving tags from your own domain but says nothing about ad blockers. The honest reading is that an Analytics count is a count of visitors who allow it.
How this was checked
Every rule on this page is copied from a list file we downloaded and searched on Nov 10, 2026: EasyList and EasyPrivacy from easylist.to, uBlock Origin's own filters from its repository, and four dated copies of EasyList's general blocking file from the project's history on GitHub. Matches were worked out with a small program of ours that applies the documented filter syntax to a test address, not by loading the pages in a browser with each extension installed, so they show what the lists say, and a blocker with extra lists turned on may hide more. We did not check which lists the AdBlock extension George used turns on by default. His three file names and his two quotes are from his notes; his site's address is left out.
Sources
- EasyList (the list file), EasyList, version of Nov 10, 2026
- EasyPrivacy (the list file), EasyList, version of Nov 10, 2026
- EasyList overview, EasyList, read Nov 10, 2026
- easylist_general_block.txt as of Sep 29, 2020, EasyList on GitHub
- easylist_general_block.txt as of Sep 30, 2022, EasyList on GitHub
- easylist_general_block.txt as of Sep 30, 2023, EasyList on GitHub
- easylist_general_block.txt as of Sep 30, 2025, EasyList on GitHub
- How to write filters, Adblock Plus Help Center, read Nov 10, 2026
- uBlock Origin README, uBlock Origin on GitHub, read Nov 10, 2026
- The logger, uBlock Origin wiki on GitHub, read Nov 10, 2026
- Server-side tagging, Google for Developers, read Nov 10, 2026
- George Vanous's notes, undated (about Sep 2020)
See also
- Buying an Aftermarket DomainWe rate this tip S tier: a listed price on a domain marketplace is an asking price, and an offer by phone can beat it. George Vanous's notes record a .gg domain listed at $8,540 that he bought for $6,700 in two days in July 2020, with the seller paid only after the domain was his.
- WordPress Cron on Every Page LoadWe rate this tip B tier: turn off WordPress's page-load cron with one line in wp-config.php and let the server's own cron call it on a schedule. George Vanous's host counted 27,272 requests for wp-cron.php in his logs, and his notes add a trap of their own, a plugin's cron script that only runs from crontab after a cd into its folder.