About "uBlock is inferior in capabilities as a result of being lighter on the browser" - uBlockOrigin/uBlock-issues GitHub Wiki
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
- ABP's code conceptually is:
- 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 |
:-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 |