Skip to main content
uBlock Origin is built directly into Helium as a component extension, providing powerful ad blocking and privacy protection from the moment you install the browser.

What is uBlock Origin?

uBlock Origin is a free, open-source content blocker that excels at:

Ad Blocking

Removes advertisements across the web efficiently

Tracker Blocking

Prevents analytics and tracking scripts from running

Privacy Protection

Blocks known privacy-invasive domains

Performance

Uses minimal CPU and memory compared to alternatives

Built-In vs Extension Store

Helium installs uBlock Origin as a component extension, not a regular extension:
AspectComponent ExtensionRegular Extension
InstallationBundled with browserManual install from store
UpdatesVia browser updatesAutomatic from store
RemovalCannot be removedCan be uninstalled
PermissionsPre-grantedRequires user approval
AvailabilityAlways presentMust be added
Component extensions are part of the browser itself, ensuring uBlock Origin is always available and properly integrated.

Version

Helium includes uBlock Origin version 1.69.0-2, as specified in deps.ini:
[ublock_origin]
version = 1.69.0-2
url = https://github.com/imputnet/uBlock/releases/download/%(version)s/uBlock0_%(version)s.chromium.zip
sha256 = fdc0607538082b409833acd2a80f3a2d657b2af70813a9a8e8e5c7a9938f7e29
download_filename = ublock-origin-%(version)s.zip
output_path = third_party/ublock
strip_leading_dirs = uBlock0.chromium
The version is pinned to ensure stability. Updates come with new Helium releases after testing.

Integration Details

Component Extension ID

From components/helium_services/extension_ids.h:
namespace helium {

inline constexpr char kUBlockOriginWebstoreId[] =
    "cjpalhdlnbpafiamejdnhcphjbkeiagm";

inline constexpr char kUBlockOriginComponentId[] =
    "blockjmkbacgjkknlgpkjjiijinjdanf";

inline constexpr char kUblockOriginComponentIdHashed[] =
    // SHA1(kUBlockOriginComponentId)
    "70C2895ED505C532A80761F0928B821B103D0786";

}  // namespace helium
Why different IDs?
  • Webstore ID: Original uBlock Origin extension ID
  • Component ID: Custom ID for Helium’s component version
  • This prevents conflicts and allows independent management

Component Loader

Helium adds uBlock Origin during browser initialization:
// From patches/helium/core/ublock-install-as-component.patch
void ComponentLoader::AddUBlock() {
  Add(IDR_UBLOCK_MANIFEST_JSON, base::FilePath(FILE_PATH_LITERAL("ublock")));
  
  using namespace extension_l10n_util;
  ComponentExtensionInfo& info = component_extensions_.back();
  std::string error;
  bool localized = LocalizeExtension(info.root_directory, &info.manifest,
                      GzippedMessagesPermission::kAllowForTrustedSource,
                      &error, true);
  
  if (!localized) {
    LOG(ERROR) << "Failed to localize uBlock: " << error;
  }
}
This:
  1. Loads the manifest from resources (IDR_UBLOCK_MANIFEST_JSON)
  2. Localizes the extension for the user’s language
  3. Registers it as a component extension

Allowlist Entry

Component extensions must be explicitly allowed:
// From chrome/browser/extensions/component_extensions_allowlist/allowlist.cc
constexpr auto kAllowed = base::MakeFixedFlatSet<std::string_view>({
    extension_misc::kInAppPaymentsSupportAppId,
    extension_misc::kPdfExtensionId,
+   helium::kUBlockOriginComponentId,
    // ...
});
Without this entry, uBlock Origin would be blocked as an unauthorized component.

Resource Integration

From third_party/ublock/resources/grit/ublock_resources.h:
#include "third_party/ublock/resources/grit/ublock_resources.h"

// Manifest resource ID
Add(IDR_UBLOCK_MANIFEST_JSON, base::FilePath(FILE_PATH_LITERAL("ublock")));
The entire uBlock Origin extension is compiled into Helium’s resources, making it available without network requests.

Loading Process

1

Browser Startup

During initialization, ComponentLoader::AddDefaultComponents() is called
2

AddUBlock Called

if (!skip_session_components) {
  AddWebStoreApp();
+     AddUBlock();
}
3

Manifest Loaded

uBlock’s manifest is loaded from compiled resources
4

Localization

Extension UI is localized to the user’s language
5

Extension Activated

uBlock Origin starts blocking content immediately

Settings Integration

Helium adds a direct link to uBlock Origin settings:
// From patches/helium/ui/ublock-show-in-settings.patch
// Adds "Content Blocking" section to Settings
You can access uBlock Origin settings via:
  • chrome://settings → Privacy → Content Blocking
  • Click the uBlock Origin toolbar icon
  • chrome://extensions → uBlock Origin → Details

Configuration

Default Settings

Helium preconfigures uBlock Origin with sensible defaults:
// From patches/helium/core/ublock-reconfigure-defaults.patch
// Optimized for privacy and performance
Default filter lists enabled:
  • uBlock filters
  • EasyList
  • EasyPrivacy
  • Peter Lowe’s Ad/tracking server list
  • Online Malicious URL Blocklist

Custom Filter Lists

You can add custom filter lists:
  1. Click the uBlock Origin icon
  2. Open the Dashboard
  3. Go to “Filter lists”
  4. Enable additional lists or add custom URLs
Popular additional lists include:
  • AdGuard Base - More aggressive ad blocking
  • Fanboy’s Annoyances - Removes cookie notices and social widgets
  • uBlock Annoyances - Removes newsletter popups and other annoyances

Custom Rules

Advanced users can write custom rules:
! Block specific domain
||ads.example.com^

! Allow specific domain
@@||good-ads.example.com^

! Cosmetic filter (hide element)
example.com##.advertisement

! Procedural cosmetic filter
example.com##:xpath(//div[@class="ads"])
Add these in Dashboard → My filters.

Performance Impact

uBlock Origin is designed for efficiency:

<50MB RAM

Minimal memory footprint even with many filter lists

<5% CPU

Negligible CPU usage during browsing

Faster Loading

Pages load faster by blocking unnecessary content
Performance tips:
  • Enable only filter lists you need
  • Use “Parse and enforce cosmetic filters” judiciously
  • Disable “Ignore generic cosmetic filters” for better performance

Advanced Features

Dynamic Filtering

Create site-specific rules on the fly:
  1. Click uBlock Origin icon
  2. Click the “</>” button (logger)
  3. Browse the site
  4. Create rules based on network requests

Element Picker

Manually hide elements:
  1. Click uBlock Origin icon
  2. Click the eyedropper icon
  3. Select element to block
  4. Click “Create”

Trusted Sites

Disable uBlock Origin on specific sites:
  1. Click uBlock Origin icon
  2. Click the power button
  3. Reload the page
Trusted sites are saved per-domain. You can manage them in Dashboard → Trusted sites.

Privacy Benefits

Built-in uBlock Origin enhances privacy:
  1. No Extension Store Connection - No need to connect to Chrome Web Store
  2. No Update Tracking - Updates come with browser updates, not tracked individually
  3. Tracker Blocking - Prevents third-party tracking across websites
  4. Malware Protection - Blocks known malicious domains
  5. Fingerprinting Reduction - Blocks some fingerprinting scripts

Troubleshooting

Some sites break when ads are blocked:Solutions:
  1. Disable uBlock temporarily (click power button)
  2. Add site to Trusted sites
  3. Report issue to uBlock Origin filter list maintainers
  4. Create a custom rule to allow specific resources
Check:
  1. uBlock Origin is enabled (icon should be colorful, not gray)
  2. Filter lists are up to date (Dashboard → Filter lists → Update now)
  3. You’re not on a Trusted site
  4. The “ad” might be native content, not a real ad
uBlock Origin is a component extension and cannot be removed.Alternative: Disable it:
  1. Go to chrome://extensions
  2. Find uBlock Origin
  3. Toggle it off
This fully disables blocking while keeping the extension installed.
Some streaming sites detect ad blockers:Solutions:
  1. Add site to Trusted sites
  2. Use the “Disable cosmetic filtering” option
  3. Try disabling specific filter lists (some are overly aggressive)

Updating uBlock Origin

uBlock Origin updates with Helium releases:
  1. New uBlock version is released
  2. Helium developers test it
  3. deps.ini is updated
  4. Next Helium release includes new version
You cannot manually update uBlock Origin. It must be updated by upgrading Helium itself.
Why this approach?
  • Ensures stability
  • Prevents breaking changes
  • Maintains compatibility with Helium patches
  • Provides testing before release

Comparison: uBlock vs Alternatives

FeatureuBlock OriginAdBlock PlusBrave Shields
Open SourceYesYesYes
Memory Usage~50MB~150MBN/A (built-in)
Custom RulesFull supportLimitedVery limited
Filter ListsExtensiveModerateFixed
CPU ImpactMinimalModerateMinimal
PrivacyExcellentGoodExcellent
CustomizationHighMediumLow

Configuration Files

Helium applies these patches for uBlock integration:
  1. ublock-install-as-component.patch - Registers as component extension
  2. ublock-reconfigure-defaults.patch - Sets optimal defaults
  3. ublock-setup-sources.patch - Configures resource paths
  4. ublock-helium-services.patch - Integrates with Helium services
  5. ublock-show-in-settings.patch - Adds Settings page link

Source Code

Key implementation files:
  • components/helium_services/extension_ids.h - Extension IDs
  • chrome/browser/extensions/component_loader.cc - Component loading
  • chrome/browser/extensions/component_extensions_allowlist/allowlist.cc - Allowlist
  • third_party/ublock/ - uBlock Origin source and resources

Best Practices

1

Start with Defaults

Default filter lists work well for most users. Don’t add too many lists initially.
2

Use Trusted Sites Sparingly

Only trust sites you actually want to support. Most “ad blocker detection” is fake.
3

Update Filter Lists Regularly

Check for updates weekly: Dashboard → Filter lists → Update now
4

Learn Dynamic Filtering

Master the logger and dynamic filtering for surgical control over blocking.
5

Share Filter Rules

If you create useful custom rules, share them with the community!

Resources

The official uBlock Origin repository has extensive documentation on advanced features and troubleshooting.

Build docs developers (and LLMs) love