-
Notifications
You must be signed in to change notification settings - Fork 77
About "uBlock is inferior in capabilities as a result of being lighter on the browser"
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 |
- Wiki home
- About the Wiki documentation
- Permissions
- Privacy policy
- Info:
- The toolbar icon
- The popup user interface
- The context menu
-
Dashboard
- Settings pane
- Filter lists pane
- My filters pane
- My rules pane
- Trusted sites pane
- Keyboard shortcuts
- The logger
- Element picker
- Element zapper
-
Blocking mode
- Very easy mode
- Easy mode (default)
- Medium mode (optimal for advanced users)
- Hard mode
- Nightmare mode
- Strict blocking
- Few words about re-design of uBO's user interface
- Reference answers to various topics seen in the wild
- Overview of uBlock's network filtering engine
- uBlock's blocking and protection effectiveness:
- uBlock's resource usage and efficiency:
- Memory footprint: what happens inside uBlock after installation
- uBlock vs. ABP: efficiency compared
- Counterpoint: Who cares about efficiency, I have 8 GB RAM and|or a quad core CPU
- Debunking "uBlock Origin is less efficient than Adguard" claims
- Myth: uBlock consumes over 80MB
- Myth: uBlock is just slightly less resource intensive than Adblock Plus
- Myth: uBlock consumes several or several dozen GB of RAM
- Various videos showing side by side comparison of the load speed of complex sites
- Own memory usage: benchmarks over time
- Contributed memory usage: benchmarks over time
- Can uBO crash a browser?
- Tools, tests
- Deploying uBlock Origin
- Proposal for integration/unit testing
- uBlock Origin Core (Node.js):
- Troubleshooting:
- Good external guides:
- Scientific papers