ProtoConsent
ProtoConsent

Build with ProtoConsent

Read user consent preferences directly from the browser. No backend, no identity, no tracking

Optional integration
Read-only
MIT SDK
Null-safe
How the browser enforces

What ProtoConsent does

ProtoConsent is a browser extension that lets users define how different data-use purposes should be treated on each site, then applies those rules locally in the browser. Per-site profiles, network-level blocking, conditional GPC signals, consent banner auto-response, and optional enhanced protection - all running on the user's device with no backend.

Read the full rationale →

Overview tab observability dashboard (dark mode)
The Overview tab: real-time purpose attribution, signal indicators, and banner detection.
Read preferences

Query consent state per site

The SDK returns true, false, or null (extension absent) for each purpose. Per-site only, fully local.

See the SDK integration →

Adapt behavior

Don't negotiate, respond

Use the signal to load or skip scripts, simplify banners, or respect user choices without guessing. The extension enforces at the network level regardless. The SDK lets you adapt gracefully.

Global Privacy Control

A legally recognized privacy signal, per site

ProtoConsent sends the Sec‑GPC header automatically when privacy‑relevant purposes (ads, third‑party sharing, advanced tracking) are denied for a site.

Unlike browser‑wide GPC toggles, ProtoConsent's signal is conditional and per‑site: it only fires when your purpose choices justify it. GPC already has legal weight under California's CCPA/CPRA and is under discussion in the EU.

Check it live on the demo site →

GPC signal detected on globalprivacycontrol.org
GPC signal detected on globalprivacycontrol.org when privacy purposes are denied.
Path A: Zero code

Declare data practices

Best for: publishers, static sites, any website.

Publish a .well-known/protoconsent.json file at your domain root declaring which purposes your site uses, what legal basis it claims, and which third parties it integrates. The extension reads this file and displays it in a side panel with Consent Commons icons. One static file is all it takes.

Site declaration side panel with Consent Commons icons (dark mode)
Site declaration displayed with Consent Commons icons. See the demo site for a complete example.

Read the spec →  ·  JSON Schema →  ·  Generate your file →  ·  Validate your file →  ·  CI action →  ·  Demo site source →

Path B: SDK

Read user preferences in 3 lines

Best for: any website that wants to read user preferences and adapt accordingly.

// Load the SDK (ES module, MIT licensed)
import ProtoConsent from 'protoconsent.js';

// Check a single purpose
const allowed = await ProtoConsent.get('analytics');
if (allowed) loadAnalytics();

// Or read all purposes at once
const all = await ProtoConsent.getAll();
// { functional: true, analytics: false, ads: false, ... }

Returns null if the extension is not installed. Safe by default, always graceful.

Full API: get(purpose), getAll(), getProfile().

Protocol spec →  ·  SDK source →  ·  TypeScript declarations →

What ProtoConsent is not
  • Not a consent management platform: it does not manage consent on behalf of your site or negotiate with vendors.
  • Not a tracking API: the SDK transmits no identity, no cookies, no cross-site state.
  • Not a browser-wide toggle: preferences are per-site and per-purpose, not global.

Website participation is optional and does not affect user-side enforcement.

Trust and guarantees
  • SDK communication is fully local, via the content script bridge.
  • Everything runs in the browser: local storage, local enforcement, local decisions.
  • Open source: extension (GPL-3.0+), SDK (MIT). Inspectable behavior.
  • Observable enforcement: users see blocked requests, GPC signals, and domain-level detail.
Live test

Your preferences for this site

This section queries the ProtoConsent extension in real time using the SDK protocol. If the extension is installed, your current preferences for protoconsent.org are shown below.

Help improve banner coverage

Suggest a CMP

ProtoConsent automatically hides consent banners from known CMP frameworks, including OneTrust, Cookiebot, Quantcast, and IAB TCF v2.2. If you encounter a site where the consent banner still appears, you can help expand coverage.

Open a CMP suggestion on GitHub →

Go deeper

Specifications and architecture

Questions or integration ideas? Open an issue or contact us.