0 About "uBlock is inferior in capabilities as a result of being lighter on the browser"
krystian3w edited this page 2022-12-12 11:06:29 +01:00

Motivation for creating this page, this comment made in the spirit of Fake News (with no supporting objective evidence, merely just a "trust me" statement):

Ublock is inferior in capabilities [to Adblock Plus (ABP)] as a result of being lighter on the browser [source]

There is nothing wrong with preferring ABP to uBlock Origin (uBO). There is, however, something wrong when someone engages in misinformation regarding uBO because of their preference for ABP.

Here is my reference answer to such claims.

uBO is lighter on the browser because of the many choices made regarding the internal design of the filtering engine. A coarse enumeration of these choices is:

  • lean in-memory filter representation
  • plain string comparisons instead of regular expressions wherever possible
    • a majority of network filters can reduce to basic string comparison, and is what uBO does internally for these filters, whereas ABP converts all network filters into regular expressions.
    • Example, &ad_zones= (filter found in EasyList).
      • ABP's code conceptually is: /&ad_zones=/.test(url) -- the whole URL must be scanned
      • uBO's code conceptually is: url.startsWith('&ad_zones=', i) -- no scanning of the URL
  • does not unconditionally inject 18,000+ (that is with EasyList only) generic CSS rules in all pages/frames
    meaning no undue memory usage issues

Do these design choices cause uBO to be "inferior in capabilities" compared to ABP? See the capabilities comparison grid below for an answer (at the time of writing):

Features ABP uBO
network filtering
multi-stage filtering engine
ability for users to easily override filters in 3rd-party filter lists on a per-site basis
yes
@@...$document yes no
can read hosts files yes
CNAME uncloaking yes
denyallow yes
domain with entity-matching yes
inline-script
to prevent execution of inline javascript
no yes
important
to be able to override exception filters
yes
popunder no yes
redirect
to redirect to local resources, key to privacy and to counter anti-blockers
in own syntax,
do not used to privacy and disable anti-adblock mechanism
yes
csp=
see rationale
yes
badfilter
to disable an existing filter
yes
strict blocking yes
rule-based filtering
firewall-like or URL-based rules with corresponding point-and-click UI
yes
behind-the-scene
uBO's logger reports behind-the-scene request, filtering is opt-in
yes
cosmetic filtering
entity-based filters yes
-abp-properties yes no
:has not yet yes (:-abp-has) yes
:has-text yes (:-abp-contains) yes
:matches-css, :xpath yes
:remove yes
:style no yes
:upward yes
Scriptlet filtering
+js(...)
Ability to inject scriptlets in page content
key to counter anti-blockers
in own syntax to defuse mostly ad-reinsertion,

limited to one list and my filters panel,
don't used to cover anti-adblock
yes,

works from any list,
cover anti-adblock mechanisms
HTML filtering
Ability to modify response data on the fly
WebExtensions uBO 1.15+
yes
privacy
pro-user default settings
uBO is not monetized, it's under no pressure to compromise on pro-user interests
yes
disable pre-fetching yes
disable hyperlink auditing yes
disable local IP addresses leakage through WebRTC yes
block CSP reports yes
other features
pre-compilation of filter lists for fast loading of filters yes
"acceptable ads" yes no
disable everywhere yes
count filter hits no no
ability to globally ignore generic cosmetic filters
useful for low-performance mobile devices
yes
cloud storage Firefox only yes
point-and-click firewall-like filtering
allows for relax or strict default-deny approach
yes
logger per-page unified
point-and-click per-site no-popups yes
point-and-click per site no-cosmetic-filtering yes
point-and-click per site no-large-media-elements yes
point-and-click per site no-remote-fonts yes
integrated element picker yes (with excluded domains) yes
element zapper yes
easy backup/restore of all settings no yes