# ConsentTheater — full reference > All handbook articles and EU law-reference pages from consenttheater.org concatenated into a single document for one-shot ingestion (RAG pipelines, IDEs, tools that do not follow links). For an index instead, see /llms.txt. For individual files, each entry below also exists at its own /handbook/.md or /law/.md URL. Generated: 2026-07-15 Source: https://consenttheater.org/llms-full.txt --- # Handbook ## Consent & banners ### Global Privacy Control — what it is and how to turn it on > GPC is a browser-level signal that automatically tells every website "do not sell or share my data". A plain-language guide to what it does, where it is legally binding, and step-by-step instructions to enable it on every major browser — desktop and mobile. Updated: 2026-05-09 · Source: https://consenttheater.org/handbook/global-privacy-control/ If you have ever clicked "reject all" on twenty different cookie banners in one day, you have already noticed that consent UX on the web is broken. **Global Privacy Control (GPC)** is an attempt to fix that — at the browser level, once, automatically, for every site you ever visit. ## What GPC actually is GPC is two simple things working together: 1. **An HTTP request header**: `Sec-GPC: 1` that the browser sends with every request when GPC is on. 2. **A JavaScript property**: `navigator.globalPrivacyControl` that scripts on the page can read to learn the same signal. If a website's server or scripts see either of those, the browser is telling them: *the user does not consent to having their personal information sold or shared with third parties for purposes like cross-site advertising.* That's the whole protocol. It is intentionally narrow: it expresses a single specific opt-out, not generic "respect my privacy" — because that turned out to be the fatal weakness of the older Do Not Track signal, which sites simply ignored on the grounds that it didn't mean anything legally. GPC is currently a [W3C work-in-progress specification](https://w3c.github.io/gpc/), adopted as an official W3C work item by the Privacy Working Group in late 2024. The pre-W3C reference is at [globalprivacycontrol.org](https://globalprivacycontrol.org/). ## Where GPC is legally binding This is the bit that makes GPC actually useful, where Do Not Track wasn't. - **California (CCPA / CPRA)** — the California Attorney General's office has [explicitly stated](https://oag.ca.gov/privacy/ccpa/gpc) that ignoring a GPC signal is a violation of CCPA's opt-out-of-sale right. A 2022 Attorney-General settlement (Sephora) made this enforcement-real, not theoretical. - **Colorado, Connecticut, Texas, and several other US states** — their consumer privacy laws now reference "universal opt-out mechanisms" by similar wording, and GPC is the working implementation of that. - **EU / UK** — GPC is **not** legally recognised in EU/UK law as an opt-in consent expression. ePrivacy still requires explicit consent for storage and access, and a "do not sell" signal is not the same as "do not store cookies." That said, well-built consent platforms can choose to honour GPC as an opt-out signal voluntarily, and some do. So GPC's legal teeth are sharpest in the US. Outside the US it's currently "good signal of preference" rather than "do this or get fined." ## How websites should respond A website that respects GPC and falls under a regime that recognises it should: - **Not** trigger any sale or sharing of the visitor's personal information by default. No setting up a cross-site advertising profile, no transferring data to ad-tech partners that would qualify as a "sale" under CCPA. - **Not** show "click here to opt out" prompts again — the GPC signal *is* the opt-out. Asking the user to confirm something they've already signalled is a dark pattern. - **Not** treat GPC as an excuse to break the site or refuse to serve content. GPC opts out of *sale/sharing*, not out of *receiving the service*. In practice, sites that use a consent management platform (CMP) usually have a setting to read GPC and pre-set the opt-out flags accordingly. ## How to turn it on ### Firefox (desktop, version 120 and later) GPC ships built-in. To enable: 1. Open the menu (☰) → **Settings** 2. **Privacy & Security** in the left sidebar 3. Scroll to **Website Privacy Preferences** 4. Tick **"Tell websites not to sell or share my data"** Firefox documents this on its [support page](https://support.mozilla.org/en-US/kb/global-privacy-control). The same setting appears in Firefox for Android with [its own guide](https://support.mozilla.org/en-US/kb/global-privacy-control-firefox-android). Firefox for iOS does not currently expose a GPC toggle (Apple-platform constraints). ### Brave (desktop and mobile) GPC is **on by default** — no action required. You can verify by visiting [globalprivacycontrol.org](https://globalprivacycontrol.org/) and looking for the green "GPC signal detected" indicator. ### DuckDuckGo Browser (desktop and mobile) GPC is **on by default**. DuckDuckGo was a founding member of the GPC standards effort and ships it active in the browser and the browser extension. Their documentation: [GPC in DuckDuckGo](https://duckduckgo.com/duckduckgo-help-pages/privacy/gpc). ### Chrome / Edge / Opera There is **no native GPC support** in any Chromium-based browser at time of writing. Workarounds: - **Privacy Badger** extension (from EFF) sets GPC automatically. - **DuckDuckGo Privacy Essentials** extension does the same. - Some other privacy extensions (e.g. uBlock Origin's privacy-focused forks) also expose a GPC option. Without an extension, Chrome and Edge will not transmit GPC, regardless of how many other privacy settings you enable. ### Safari (macOS and iOS) Apple has not added GPC to Safari, citing existing Intelligent Tracking Prevention as their preferred mechanism. There is currently no native GPC toggle. A handful of Safari extensions claim to add it, but support is patchy. ### Tor Browser GPC is on as part of Tor Browser's privacy defaults; you don't need to enable anything. ### Mullvad Browser, LibreWolf, Zen All three are Firefox-based. Mullvad Browser ships with GPC on by default. LibreWolf has it as a default-on hardened setting. Zen inherits the standard Firefox toggle (Settings → Privacy & Security → Website Privacy Preferences). ## Why GPC isn't perfect — yet Two honest caveats. **Adoption is uneven.** Plenty of sites still don't read the signal. The ones that do tend to be in regulated industries (publishers in California, ad networks who got fined). On the long tail of the web, GPC is invisible to many sites. That's a softer state than the law would describe — it's not yet "send GPC and you're protected." **Scope is narrow by design.** GPC says one thing: "do not sell/share." It does not say "do not track me at all", "do not set cookies", or "do not fingerprint." Those are bigger asks that are addressed by other tools ([browser-level privacy](/handbook/privacy-friendly-browsers/), tracker blockers, the EU consent regime). GPC is one specific, legally-anchored signal — useful exactly because it doesn't try to do everything. That said: enabling it costs nothing, it works automatically, and where it *is* legally binding, ignoring it is a fineable offence. Worth turning on. ## Reading list - **[Global Privacy Control specification](https://w3c.github.io/gpc/)** — the W3C work-in-progress spec, with the legal-and-implementation considerations [explainer](https://w3c.github.io/gpc/explainer.html). - **[California AG — Global Privacy Control](https://oag.ca.gov/privacy/ccpa/gpc)** — official state position that ignoring GPC violates CCPA. - **[MDN: Sec-GPC header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Sec-GPC)** and **[Navigator.globalPrivacyControl](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/globalPrivacyControl)** — technical references for site implementers. - **[Firefox: Global Privacy Control](https://support.mozilla.org/en-US/kb/global-privacy-control)** — desktop how-to. - **[Firefox for Android: GPC](https://support.mozilla.org/en-US/kb/global-privacy-control-firefox-android)** — mobile how-to. - **[DuckDuckGo: GPC](https://duckduckgo.com/duckduckgo-help-pages/privacy/gpc)** — on by default in DDG products. --- ## Tracking & cookies ### Strict-necessary cookies — what actually qualifies > The "strictly necessary" exemption is the most-misused phrase in cookie compliance. This article walks through the legal text, the EDPB's interpretation, and concrete examples of what does and does not qualify — including the popular myths. Updated: 2026-05-09 · Source: https://consenttheater.org/handbook/strict-necessary-cookies/ If you build websites in the EU, you have probably written `consent: 'strictly_necessary'` in some banner config. The label is everywhere, and almost nobody uses it correctly. This guide unpacks what the law actually says, what the EDPB has clarified, and gives concrete examples for the things people most often get wrong. ## Where the exemption comes from The "strictly necessary" carve-out lives in the **ePrivacy Directive Article 5(3)**. The default rule is that storing or accessing information on a user's device — cookies, `localStorage`, `IndexedDB`, fingerprinting — requires **prior informed consent**. Article 5(3) provides exactly two narrow exemptions: 1. **Communication exemption** — when storage is "for the sole purpose of carrying out the transmission of a communication over an electronic communications network". 2. **Strictly necessary exemption** — when storage is "strictly necessary in order for the provider of an information society service explicitly requested by the subscriber or user to provide the service". Two things to notice immediately: - The user has to **explicitly request** the service. - The cookie has to be **strictly necessary** — not "useful", not "nice to have", not "industry standard", not "needed for our analytics". ## The EDPB test The European Data Protection Board's [Guidelines 2/2023](https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-22023-technical-scope-art-53-eprivacy-directive_en) gave the practical test: > *"Strictly necessary" must be read narrowly. The functionality must be one the user has > explicitly requested, and the storage must be necessary for that functionality alone.* If removing the cookie would only make the experience "less smooth" or "harder to analyse", it is **not** strictly necessary. ## What qualifies — examples These genuinely fall under the exemption: - **Session ID** for an authenticated user. You logged into your bank — the cookie keeping you signed in for the next 20 minutes is genuinely necessary. Without it the bank can't remember it's you, and "be logged in" is exactly what you asked for. - **Shopping-cart contents.** You added a pair of shoes to your cart on an e-commerce site. The cart cookie keeps the items as you browse to a second product. Without it, the cart empties on every page. - **Load-balancer routing token** that pins the user to a backend during a multi-step flow. You're filling out a checkout form across three pages — the cookie keeps your requests going to the same server so your partial state isn't lost mid-flow. - **Cookie-consent state itself** — the cookie that remembers whether the user has already accepted or refused. Without it you'd ask again on every page, which is itself a dark pattern. - **CSRF tokens** for security on forms the user submitted. Without them, malicious sites could trick the browser into submitting forms on the user's behalf. The cookie protects an action the user just initiated. - **Language / locale preference** when it comes from the user. That includes the browser's `Accept-Language` header (which the user configured in their OS or browser settings) and explicit on-site language switchers. It does **not** include IP-geolocation guesses — those are inferences about the user, not preferences the user expressed. ## What does **not** qualify — common myths Commonly mis-labelled as strictly necessary: - **Analytics, even "anonymous" or "first-party".** Google Analytics on your blog so you can see where readers come from. Useful for you, but the visitor did not ask to be counted. Plausible-as-script and Matomo with `_pk_id` sit in the same bucket. (Narrow exception: pure server-side counting from access logs, with no cookie and no device-readable state, is not in scope of Article 5(3) at all — though GDPR still applies to whatever IPs you log.) - **A/B testing and feature flags.** Optimizely or VWO decides which variant to show you and stores that decision in a cookie. Reasonable business need, but the user came to read the article — they didn't ask to be a variable in someone's experiment. - **Personalisation that the user didn't turn on.** An e-commerce site dropping a "last viewed products" cookie so it can show recommendations. Convenient, not necessary — the user asked to view a product, not to be remembered. - **Marketing and conversion pixels** — Meta Pixel, Google Ads tag, LinkedIn Insight, TikTok Pixel. Even when these don't set a cookie of their own, they are in scope: loading the pixel's URL causes the third party (Meta, Google, etc.) to read the cookies the browser already has on its domain, which is "accessing information already stored" under Article 5(3). See the dedicated [tracking pixels](/handbook/tracking-pixels/) article for the deep dive on how this works and what consent rules apply across jurisdictions. The general rule: **if the cookie's purpose is for the website operator's benefit rather than directly fulfilling something the user asked the website to do, it needs consent.** ## Genuinely contested — bot mitigation and fraud detection This category is different from the myths above. There is a legitimate engineering argument that anti-bot and anti-fraud cookies *are* strictly necessary, and that argument has not been settled by any court ruling. Both sides have a point. The textbook example is **`__cf_bm` from Cloudflare**. Cloudflare classifies it as strictly necessary because without bot mitigation, sites are exposed to scraping, credential stuffing, layer-7 DDoS — and a site that's down or compromised cannot deliver the service the user requested anyway. EU regulators read Article 5(3) ePD more literally: - The cookie has to be necessary for the **service the user explicitly requested** - The user requested "show me this page". They did not request "protect this site from bots" - Bot mitigation primarily benefits the **operator**; user benefit is indirect at best - Therefore the exemption does not apply, and consent is required The French **CNIL** has made this position explicit in its guidance and enforcement: `__cf_bm` requires consent in the EU. The **EDPB's Guidelines 2/2023** align with the same narrow reading — operator-side performance and security optimisations sit outside the exemption. There is no CJEU ruling on this point. Until there is one, `__cf_bm` and similar bot/fraud cookies live in the *contested* zone: - **Vendor reading:** strictly necessary, no consent needed. - **Prevailing EU regulator reading:** consent needed, even if the cookie is genuinely useful for security. This is the kind of case our `consent_burden: 'contested'` value exists for — we surface the disagreement rather than picking a side. There is one narrower distinction worth keeping: even regulators agree that **server-side** anti-bot work — rate limits, IP-based blocks, ASN heuristics — is outside the scope of Article 5(3) entirely, because nothing is stored or read on the user's device. The dispute is specifically about cookies and similar device-side state. ## How long can a strict-necessary cookie live? The other half of "strictly necessary" is duration. A cookie can be necessary for the length of the user's session (closes the tab → cookie expires) but not for two years. A typical authenticated-session cookie is bounded to a session or a short "keep me logged in" window the user explicitly opted into. Long-lived cookies declared as "strictly necessary" are a strong signal the classification is wrong. ## Why this matters for ConsentTheater's catalogue Our `consent_burden` field draws a line: - `minimal` — genuinely strict-necessary, low ambiguity. - `required` — needs consent under EU rules, even if the vendor's own documentation says otherwise. - `required_strict` — needs consent **and** has been the subject of regulator enforcement or CJEU rulings against the same pattern. - `contested` — vendors and regulators disagree; we surface the disagreement rather than picking a side. Where vendors call something "strictly necessary" but the EDPB test would fail, our catalogue sides with the regulator's reading. ## Reading list - **[ePrivacy Directive Article 5(3)](/law/eprivacy/art-5/)** — primary text. - **[GDPR Article 7](/law/gdpr/art-7/)** — what consent must look like *when* it is required. - **[EDPB Guidelines 2/2023](https://www.edpb.europa.eu/our-work-tools/our-documents/guidelines/guidelines-22023-technical-scope-art-53-eprivacy-directive_en)** — technical scope of Article 5(3). - **[CJEU Planet49 (C-673/17)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A62017CJ0673)** — pre-checked boxes are not consent. --- ### Tracking pixels — what they are and what consent rules apply > "We don't use cookies, just pixels" is one of the most common compliance myths. This article walks through what a pixel actually is technically, why it's still in scope of EU consent rules, and how the picture shifts under UK and California law. Updated: 2026-05-09 · Source: https://consenttheater.org/handbook/tracking-pixels/ If you have ever heard a vendor or a marketing team say *"we don't use cookies, we just use pixels — so consent isn't needed"*, that sentence is almost always wrong. This article unpacks why. ## What a pixel actually is A "tracking pixel" is not a special technology. It is just any of the following: - A `` tag with `src` pointing at a 1×1 transparent image on the third party's domain. - An `