Blockify is a Manifest V3 ad blocker for Chromium-based browsers. It combines network filtering with site-specific handling for Spotify Web Player, YouTube, Twitch, Hulu, and ordinary websites. This repository is a reviewable public source snapshot of extension version 1.9.8; it is not the production release pipeline and is not guaranteed to match a store package byte for byte.
Install from the Chrome Web Store · Installation guide · Blockify website · Privacy policy
For most people: install the maintained release directly from the Chrome Web Store. The load-unpacked instructions below are for reviewing and testing this public source snapshot. Do not install repackaged copies from unofficial download sites.
Browser extensions operate with meaningful access to the pages people visit. This repository lets users and security researchers inspect Blockify's permissions, request rules, site-specific behavior, storage, and network connections before deciding whether to trust it. The provenance record also distinguishes Blockify-owned code from bundled third-party material instead of hiding that boundary.
- Applies packaged Declarative Net Request rules and filter-derived rulesets.
- Runs targeted content scripts for Spotify, YouTube, Twitch, and Hulu.
- Provides site controls, exclusions, blocked-request counts, and an extension popup.
- Uses local extension storage for settings, counters, rule state, and UI state.
- Fetches a Blockify-hosted switch document used to adjust feature behavior.
Ad blocking is inherently affected by browser and website changes. No particular site or ad format is guaranteed to remain supported.
Use a dedicated browser profile when reviewing extensions with broad permissions.
- Download or clone this repository.
- Run
npm run validatewith Node.js 18 or newer. No package installation is required. - Open
chrome://extensions(or the equivalent extensions page in a Chromium browser). - Enable Developer mode.
- Choose Load unpacked and select the repository root—the directory containing
manifest.json. - Review the requested permissions before enabling the extension.
Changes to source files require pressing Reload on the extensions page. Some service-worker changes may also require refreshing affected tabs.
The checked-in manifest requests the following capabilities:
| Permission | Why the extension uses it |
|---|---|
declarativeNetRequest |
Apply packaged request-blocking and redirect rules. |
declarativeNetRequestFeedback |
Observe matched rules for counters and related behavior. |
scripting |
Inject site-specific extension code when required. |
storage |
Keep settings, exclusions, counters, and feature state locally. |
activeTab and tabs |
Determine the active site, update per-site controls, and open extension pages. |
alarms |
Schedule service-worker maintenance work. |
background |
Retained in this snapshot's manifest for background behavior. |
*://*/* host access |
Apply general filtering across websites and run the declared broad content script. |
The broad host permission is security-sensitive. Read manifest.json, PRIVACY.md, and the source before loading the snapshot.
The manifest also declares every packaged file as a web-accessible resource for all sites and all extension IDs. That broad exposure is separate from host access: pages can discover or request extension-packaged resources, which can increase fingerprinting and attack surface. It is preserved from the supplied release snapshot and should be included in any security review.
manifest.jsondeclares the service worker, content scripts, permissions, resources, and DNR rulesets.background.js,background_yt.js,bk_start.js, andbk_modules.jscoordinate extension lifecycle, settings, rules, and counters.content_script.js,notifyonads.js,twitch_cs.js, andhulu_cs.jsare entry points for supported sites.popup.*,frame/,welcome/, andshare.*provide extension UI.filters/contains packaged DNR data derived from third-party filter projects.web_accessible_resources/contains redirect/shim resources used by filter rules._locales/contains Chrome extension localization messages.scripts/sanitize-release.mjsrecords the deterministic sanitization performed when preparing this public snapshot.
This is distributed source, not a conventional dependency-built application. The checked-in JavaScript, filter JSON, images, and media are the extension payload.
The public snapshot was sanitized before publication. Remote diagnostics and operational metrics code, embedded project identifiers and cryptographic material, a stable uninstall identifier, and metadata in PNG files were removed. The precise transformations and source archive digest are documented in PROVENANCE.md. The public snapshot still fetches https://blockify.b-cdn.net/switches190.json and may open Blockify or third-party pages when a user chooses the corresponding UI action.
See PRIVACY.md for data-flow details. The public website's privacy policy governs official Blockify services; this repository document describes the checked-in snapshot.
This repository is source-available, not OSI-approved open source.
Blockify-owned code is licensed under the PolyForm Noncommercial License 1.0.0. Commercial use of that code is not granted by this repository license. Third-party components are not relicensed: each retains its own upstream license, as mapped in THIRD_PARTY_NOTICES.md.
In particular, GPL-covered components remain available for commercial use under the GPL's terms. The PolyForm restriction does not replace, narrow, or override the licenses of those third-party files. License scope follows file ownership and provenance, not merely the repository containing a file.
Read CONTRIBUTING.md before proposing a change. Use GitHub issues for reproducible source-snapshot bugs, SECURITY.md for vulnerabilities, and SUPPORT.md for product-help boundaries.
Blockify is not affiliated with or endorsed by Spotify, YouTube, Twitch, Hulu, Google, or the maintainers of the bundled third-party projects. Product names are used only to describe compatibility.
