Skip to content
CAI
Software that uses CAICheck a score

ungoogled-software/ungoogled-chromium

58.1

Adequate · 18 September 2026

4.6k

lines of production code

Python

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a build infrastructure and patch management framework for creating privacy-focused, ungoogled versions of the Chromium browser. It automates the retrieval of source code, applies a comprehensive suite of patches to disable Google telemetry and services, and enforces privacy hardening through domain substitution and fingerprinting mitigation. The toolset includes utilities for validating patches, managing build dependencies, and ensuring configuration integrity across various platforms.

Features

Add python-unidiff library for unified diff parsing

The devutils/third\_party directory now includes the python-unidiff library (version 0.5.5), enabling the parsing and modification of unified diffs. This addition provides the necessary components for handling diff data within the devutils toolset.

_devutils/third\party · high confidence

Add schema validation library to build utilities

The \utils/third\_party\ directory now includes the \schema\ library (version 0.6.7), a tool for validating Python data structures such as those from config files, forms, or command-line parsing. This addition enables build utilities to perform more sophisticated validation of complex configuration files, such as INIs, by providing classes like \Schema\, \And\, \Or\, and \Regex\ for defining and enforcing data constraints.

_utils/third\party · high confidence

Initial release of ungoogled-chromium v153.0.8010.52

This entry marks the initial commit of the ungoogled-chromium project, establishing the foundational structure for building a Chromium-based browser that removes dependencies on Google web services. The repository introduces the core configuration files required for the build process, including \flags.gn\ (which disables reporting, Safe Browsing, and Google API keys), \domain\_regex.list\ and \domain\_substitution.list\ (which replace Google domains with non-existent alternatives to block network requests), and \pruning.list\ (which strips binaries from the source). It also sets up the build infrastructure with a Cirrus CI configuration (\.cirrus.yml\), a Python 3.10 Docker environment (\.cirrus\_Dockerfile\), and dependency manifests (\.cirrus\_requirements.txt\). The project license is set to BSD-3-clause, and the README documents the objectives, features, and supported platforms.

(repo-wide) · high confidence

Introduce devutils package with standalone validation and patch management scripts

The devutils directory now contains a collection of standalone Python and shell scripts for developer workflows, replacing or supplementing previous monolithic tools. This includes validate\_patches.py for checking patch application against source trees, update\_lists.py for managing binary pruning and domain substitution lists, and update\_platform\_patches.py for merging and unmerging platform-specific patches. Supporting utilities such as check\_downloads\_ini.py, check\_gn\_flags.py, and check\_patch\_files.py provide targeted sanity checks for configuration files, while set\_quilt\_vars.sh and set\_quilt\_vars.fish configure the Quilt patch system for bash and fish shells respectively. The package also includes test runners (run\_devutils\_tests.sh, run\_utils\_tests.sh), linters (run\_devutils\_pylint.py, run\_utils\_pylint.py), and formatters (run\_devutils\_yapf.sh, run\_utils\_yapf.sh), along with configuration files like .coveragerc and pytest.ini to support code quality and coverage checks.

devutils · high confidence

New privacy and performance flags for fingerprinting mitigation and connection limits

Users can now enable three new experimental flags to enhance privacy and control network behavior. The 'fingerprinting-client-rects-noise' and 'fingerprinting-canvas-measuretext-noise' flags add random noise to the output of DOM layout and canvas text measurement APIs, making it harder for websites to fingerprint the browser based on rendering details. Additionally, the 'fingerprinting-canvas-image-data-noise' flag slightly modifies pixel data in canvas images to prevent identification via image extraction. Finally, the 'max-connections-per-host' flag allows users to increase the maximum number of concurrent connections to a single host, which can improve performance on high-speed connections but may impact devices with limited resources.

patches/extra/bromite · high confidence

Ungoogled Chromium patches: new fingerprinting switches, license credits, and feature flags

This update introduces several new capabilities and structural changes to the ungoogled-chromium build. It adds a new \components/ungoogled\ module defining command-line switches for fingerprinting deception (client rects, canvas measure text, and image data noise). It also updates the build system to include the ungoogled-chromium license and credits in the about page, and modifies the version UI strings to identify the build as "Ungoogled Chromium". Additionally, it adds multiple new flags: a custom new tab page URL, bookmark bar visibility on the new tab page, close confirmation prompts, disabling JIT when JavaScript optimization is off, disabling link and text dragging, removing the window grab handle, enabling themes in incognito mode, filtering omnibox autocomplete results, disabling the QR generator, disabling automatic search engine collection, clearing all browsing data on exit, preventing the window from closing with the last tab, configuring extension MIME type handling, and controlling tab hover card display.

patches/extra/ungoogled-chromium · high confidence

Behavioural changes

Default preferences and features are disabled or altered

This patchset modifies Chromium's default configuration and behavior. It disables several features by default, including background mode, hyperlink auditing, search suggestions, translation offers, autofill profiles and credit cards, and Google Pay. It also changes the default cookie control to block third-party cookies, hides the bookmark bar, and disables the battery status service. Additionally, it restores the classic New Tab Page, removes the missing Google API keys warning, and enables PIE for the Linux sandbox.

patches/extra/inox-patchset · high confidence

Disable Safe Browsing incident and override reporting

The browser no longer sends diagnostic data to Google regarding Safe Browsing events. Specifically, incident reporting (which previously uploaded information about blocked URLs) is disabled, and the reporting of Safe Browsing overrides (when a user chooses to proceed past a phishing or malware warning) is suppressed. Additionally, URLs associated with these disabled reporting mechanisms are prefixed with tracking identifiers (e.g., trk:268, trk:148) to detect if the code paths are inadvertently re-enabled in the future.

patches/core/iridium-browser · high confidence

Disables Safe Browsing, Web Store, and Update Telemetry

This patchset modifies the browser core to disable several integrated services. It removes Safe Browsing functionality, including download threat detection, SSL error interstitials, and blocklist fetching, and disables the Web Store by removing the in-app payments support, hosted app installation, and extension download/installation logic. Additionally, it disables update check pings and RLZ (Revenue and Loyalty Zero) tracking, ensuring the browser no longer communicates with Google's update or telemetry servers.

patches/core/inox-patchset · high confidence

Iridium Browser: Security and privacy hardening patches

This update applies several behavioral patches to the Iridium browser build. It disables the automatic import of browser profiles and extensions on first run, forces the download of SUSE YMP files instead of attempting to display them, and changes the default download behavior to always prompt for a directory. Additionally, it removes Extended Validation (EV) certificate indicators to prevent a false sense of security and disables the auto-update mechanism on macOS.

patches/extra/iridium-browser · high confidence

New patch series file defines the browser's privacy and feature configuration

The build system now uses a new \patches/series\ file to explicitly order and apply a comprehensive set of patches. This file organizes modifications into core privacy and security hardening (such as disabling Google services, crash reporting, and Safe Browsing) and extra user-facing features (including custom New Tab Pages, QR generation, and various UI toggles), ensuring these changes are applied in the correct sequence during the build process.

patches · high confidence

New privacy and telemetry reduction patches

This update introduces a suite of new patches to the core browser build that significantly reduce background network activity and telemetry. The changes disable Google Cloud Messaging (GCM), domain reliability checks, and Google-host detection, while also blocking tracking domains (specifically those containing 'qjz9zk' or using the 'trk:' scheme). Additionally, the browser no longer fetches field trials, disables AI-based features like ScreenAI and Glic, removes references to Google Fonts, and prevents the New Tab Page from loading external promos or the One Google bar. Crash reporting is also restricted to Linux-only WASM signal handling, and the DevTools frontend build system has been switched from esbuild to @rollup/wasm-node.

patches/core/ungoogled-chromium · high confidence

Rewrite of core utility scripts and infrastructure

The utility scripts have been rewritten from scratch, introducing a new modular structure with shared components in \_common.py and \_extraction.py. This includes a new clone.py script for fetching the Chromium source tree, a rewritten domain\_substitution.py with caching and timestamp manipulation, and a new make\_domsub\_script.py for generating standalone Perl-based substitution scripts. The extraction logic now supports WinRAR and handles Windows-specific paths and symlinks, while downloads.py has been restructured with schema validation. Additionally, depot\_tools and gsutil are patched to support newer Python versions, shallow fetches, and specific build requirements.

utils · high confidence

Suppress Google API key warning in Chromium

The Debian-specific patch in patches/extra/debian/disable/google-api-warning.patch has been added to suppress the informational infobar that previously appeared when Google API keys were not configured. This change modifies chrome/browser/ui/startup/infobar\_utils.cc to remove the logic that checks for API key configuration and displays the corresponding warning, resulting in a cleaner startup experience for users who do not have Google API keys set up.

patches/extra/debian · high confidence

Fixes

Fixes missing build dependencies and includes in Chromium

Resolves build failures caused by missing dependencies and includes in the Chromium source tree. The patch adds the missing \navigation\_entry.h\ include to \chrome\_content\_browser\_client.cc\, adds \download\_file\_types\_proto\ and \csd\_proto\ dependencies to the extensions build, includes \supervised\_user\ buildflags in \url\_constants\, and adds \re2\ dependencies to \installer\_policies\ and \contextual\_tasks\. It also adds the \lens\ buildflags to the browser component build.

patches/upstream-fixes · high confidence

Test coverage

Added tests for domain substitution and patch utilities; Added unit tests for patch validation utilities.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 58.

Lenses

  • Code Health 94
  • Architecture 100
  • Maturity 62
  • Readiness 50
  • Security 54

Changes since last survey

  • 300 commits — 275 feature/other, 25 fixes

By area

  • (root) — 128 commits
  • patches/extra — 96 commits
  • patches/core — 41 commits
  • utils/depot_tools.patch — 5 commits
  • .github/workflows — 4 commits
  • devutils/check_downloads_ini.py — 3 commits
  • devutils/run_utils_pylint.py — 2 commits
  • devutils/update_lists.py — 2 commits
  • docs/default_settings.md — 2 commits
  • docs/flags.md — 2 commits
  • patches/upstream-fixes — 2 commits
  • utils/clone.py — 2 commits
  • utils/prune_binaries.py — 2 commits
  • .github/ISSUE_TEMPLATE — 1 commit
  • devutils/tests — 1 commit
  • devutils/update_platform_patches.py — 1 commit
  • patches/series — 1 commit
  • utils/_extraction.py — 1 commit
  • utils/domain_substitution.py — 1 commit
  • utils/downloads.py — 1 commit

Notable commits

  • fix: Add new OS entries to github bug report template
  • fix: CI: fix version check workflow by url encoding filter in url
  • fix: Fix Windows dictionary path in first-run-page.patch (#3761)
  • fix: Fix building with ASAN+UBSAN (#3842)
  • fix: Fix close-confirmation patch
  • fix: Fix empty i18nId in settings
  • fix: Fix extract_tar_file call for domain substitution revert
  • fix: Fix for client certificates
  • fix: Fix for close confirmation
  • fix: Fix functools decorators for older python
  • fix: Fix global variables in Python 3.14 multiprocessing processes (#3866)
  • fix: Fix history import with keep-old-history flag enabled
  • fix: Fix incidental build breakage from block-requests.patch (#3893)
  • fix: Fix link to Flatpak's issue tracker (#2814)
  • fix: Fix renderer SIGSEGV observed on certain website and profile combinations (#2552)
  • fix: Fix safe_browsing in v8 setting
  • fix: Fix search bar on new tab page for downstream disable-ai.patch users (#3729)
  • fix: Fix zip compression level (#3555)
  • fix: Move assert_no_deps fix to missing-dependencies.patch (#3081)
  • fix: Safebrowsing fix for mac and win
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ungoogled-software/ungoogled-chromium was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit a638756eb14c8b6ce64b4b2a067afea5d4207bf4 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.