CHANGELOG
ublacklist
10.0.2
Patch Changes
- Fixed an issue where the options page did not open from the popup or the block dialog in Microsoft Edge for Android.
- Fixed an issue where opening the SERPINFO options page created a new tab each time instead of focusing the already open one.
10.0.1
Patch Changes
- #967 5263cbc - Google Drive and Dropbox sync now uses PKCE when authorizing, improving the security of the sign-in flow. Existing connections keep working without re-authorization.
- #968 4a0b84b - Updated the German translation.
- #953 acaa62e - Updated the Russian translation.
- #951 ac6e253 - Updated the Chinese (China) translation.
- #953 acaa62e - Updated the Chinese (Taiwan) translation.
10.0.0
Major Changes
- #922 64e81e9 - uBlacklist now blocks the whole site by default when you block a search result, and all sync categories are now enabled by default. You can change these in the options page. These new defaults also apply to existing users who have never changed them.
- #920 c0597b5 - The subscription update interval is now set in days, and update checks run at most once a day even if a shorter interval was configured before. The sync interval can now be set to any number of minutes (minimum five).
Minor Changes
- #918 a069c75 - Increased the base font size from 13px to 14px. On touch devices, text fields use a 16px font size without changing their height, which also prevents Safari on iOS from zooming in when focusing them.
- #917 c6ab6f3 - Sync and subscription updates now respect the configured interval across browser restarts, instead of always running at every startup. In Firefox, they still run at every browser startup as before, because Firefox does not persist alarms across restarts.
- #905 4ca2b01 - The options page now reflects settings changed by sync in real time, so the "Reload" button that used to appear after a sync has been removed. The blocklist editor still shows a notice when the blocklist is updated by sync, to protect your unsaved edits.
- #905 72d12d2 - Rebuilt the user interface on top of Base UI, a library of accessible React components. Dialogs, menus, and form controls across the options page and the popup should now be more consistent and more accessible, especially when using a keyboard or a screen reader.
- #905 72d12d2 - Reduced the size of the script loaded on search result pages by about 35% (from 2.2 MB to 1.4 MB). The dialog for blocking a site is now loaded on demand when it is opened.
Patch Changes
- #919 ac0a2f1 - Fixed the block buttons on search result pages appearing unstyled when the page has a strict Content Security Policy (such as lite.duckduckgo.com) in Firefox and Safari.
- #938 dc01a4c - Fixed an issue where reloading the options page opened via a subscription link showed the "Add a subscription" dialog again, by removing the query parameters from the address bar after they are read.
- #923 0f1d8d9 - Updated the German translation.
- #939 b47ee39 - Fixed an issue where the options page did not offer to reload the blacklist when it was saved on another options page.
- #932 31acf14 - Fixed an issue where built-in SERPINFOs that were not enabled never received updates, so the popup could fail to detect search result pages supported by newer versions. They are now refreshed from the content shipped with the extension when it is newer than the stored one.
- #905 ecc7c51 - Fixed the accessibility label of the button to remove a highlight color in the options page, which was incorrectly announced as "Add" by screen readers.
- #937 7c859dd - Fixed an issue in Safari where the popup did not focus its default button when opened, leaving keyboard focus on the first control instead.
---
CONTRIBUTING
Contributing to uBlacklist
This document provides guidelines for contributing to the uBlacklist project, which spans multiple repositories (see Related repositories in the README).
All contributions to any of these repositories follow the flow described below.
How to Contribute
Reporting Bugs and Suggesting Features
Please start with GitHub Discussions instead of opening issues directly.
- đ Bugs â Report a bug.
- đĄ Ideas â Suggest a feature.
After verification, the maintainer will convert a discussion to an issue.
Submitting Pull Requests
You can submit a pull request directly, without going through a discussion, only for trivial fixes:
- Typo or comment fixes.
- Minimal fixes for an obvious bug.
- Fixes to existing built-in SERPINFO files.
If you are unsure whether your change is trivial, please ask in a discussion first.
Anything else is a major change and must follow the bug/feature flow above: start with a discussion, wait for the maintainer to convert it to an issue, and then open the pull request referencing that issue. Pull requests for major changes without a preceding discussion or issue may be closed.
You are responsible for the code you submit, including code generated by AI tools. You should be prepared to explain your changes and respond to review feedback.
By submitting a pull request, you agree that your contributions will be licensed under the MIT License.
No New Built-in SERPINFOs
The set of built-in SERPINFO files is intentionally fixed. Discussions and pull requests requesting a new built-in SERPINFO may be closed.
Translation
Please use Crowdin for all translations.
Development
Prerequisites
pnpm >= 10 is required.
Installation
git clone --recurse-submodules https://github.com/iorate/ublacklist.git
cd ublacklist
pnpm installBuild
Usage: pnpm build [--browser=chrome|firefox|edge|safari] [--debug]
pnpm build --browser=firefoxOutput is written to dist/<browser> (or dist/<browser>-debug with --debug).
Check, Test, and Fix
Run all checks and tests before submitting a pull request:
pnpm check # oxlint + oxfmt
pnpm testTo auto-fix lint and formatting issues:
pnpm fixAdding or Changing Messages
src/_locales/en/messages.json is the source of truth for English UI messages; other locales are managed via Crowdin.
1. Edit src/_locales/en/messages.json.
2. Run pnpm generate:message-names to regenerate the message name constants.
Environment Variables
For developing sync features, create a .env file with your API keys:
DROPBOX_APP_KEY=...
DROPBOX_APP_SECRET=...
GOOGLE_DRIVE_CLIENT_ID=...
GOOGLE_DRIVE_CLIENT_SECRET=...---
README
uBlacklist
English | Deutsch | įŽäŊ䏿
Blocks specific sites from appearing in Google search results
- Chrome: Chrome Web Store
- Firefox: Firefox Add-ons
- Edge: Edge Add-ons
- Safari: App Store (macOS and iOS, thanks to Group-Leafy)
Description
This extension prevents the sites you specify from appearing in Google search results.
You can add rules on search result pages, or on sites to be blocked by clicking the toolbar icon. Rules can be specified either by match patterns (e.g. ://.example.com/) or by expressions including regular expressions, variables and string matchers (e.g. /example\.(net|org)/, path="example"i, $category = "images" & title ^= "Example"âĻ).
You can synchronize rulesets across devices via cloud storage (Google Drive, Dropbox, WebDAV) or browser sync.
You can also subscribe to public rulesets. Some public rulesets are listed on the website:
https://ublacklist.github.io/rulesets
Browser support policy
uBlacklist supports the following browser versions:
- Chrome: Latest stable version only
- Firefox: Latest stable version and latest ESR only
- Edge: Latest stable version only
- Safari: Latest stable version only (macOS and iOS)
Support for browsers outside the list above depends on community contributions. Please open a Discussion with a concrete implementation proposal â reports without one are unlikely to be addressed.
Supported search engines
This extension is available in the below search engines.
| | Web | Images | Videos | News |
| --- | --- | --- | --- | --- |
| Google | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Bing | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Brave | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| DuckDuckGo | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Ecosia | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Kagi | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| SearXNG | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Startpage | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Yahoo! JAPAN | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |
| Yandex | :heavy_check_mark: | | :heavy_check_mark: | |
No additional builtin search engine support is planned. You can use SERPINFO to add support for any search engine yourself.
Related repositories
- ublacklist/builtin â Builtin SERPINFO files. The extension periodically downloads the latest SERPINFO from here.
- ublacklist/packages â npm packages (@ublacklist/match-pattern, @ublacklist/ruleset, @ublacklist/serpinfo) and the ruleset/SERPINFO format specifications
- ublacklist/store-assets â Store listing descriptions and screenshots
- ublacklist/ublacklist.github.io â Website and documentation (https://ublacklist.github.io)
For subscription providers
To publish a ruleset as a subscription, place a ruleset file encoded in UTF-8 on a suitable HTTP(S) server, and publish the URL. Here is an example hosted on GitHub:
https://raw.githubusercontent.com/iorate/ublacklist-example-subscription/master/uBlacklist.txt
You can prepend YAML frontmatter to your ruleset. It is recommended that you set the name variable.
---
name: Your ruleset name
---
://.example.com/*Authoring rulesets and SERPINFO with AI agents
Agent skills for writing rulesets and SERPINFO are published in ublacklist/packages. You can install them into your AI coding agent with the GitHub CLI:
gh skill install ublacklist/packagesContributing
See our Contributing Guide for detailed development setup and guidelines.
Author
License
uBlacklist is licensed under MIT License.
---
SECURITY
Security Policy
This security policy applies to the uBlacklist project.
Reporting a Vulnerability
Please report security vulnerabilities via GitHub's Private Vulnerability Reporting at https://github.com/iorate/ublacklist/security/advisories/new.
Do not report security vulnerabilities through public discussions, issues, or pull requests.
---