15% off your first purchase with code WELCOME15, up to 25 GB.

See pricing

QA & localisation · Cookie consent testing

Cookie consent testing by country and US state

Cookie consent testing checks that each market gets the right banner and that the site does what the visitor chose: no non-essential cookies or tags before consent in the EU, a working opt-out in US states that require one. Run the check from inside each market, because the consent platform decides by visitor location.

Pay per GB · No subscription · Prices in EUR, excl. VAT

Illustration. The URLs and values are fictional; the connection string is the real grammar.
€2.00
per GB on ARC Fast, excl. VAT
−44%
at 1 TB (€1.12 / GB)
185+
countries, city targeting
Never
expires — no subscription

Written for

  • Privacy and compliance teams
  • Web analytics engineers
  • Consent management administrators
  • Privacy auditors

The short answer

  • Consent platforms choose the banner by visitor location. From the office you test one region's rules; from an exit in each market you test all of them.
  • Test three states per page: before any interaction, after reject, after accept. The first two are where most findings are.
  • In the EU, storing or reading non-essential information on a device needs consent first. A tag that fires before the banner is answered is a finding.
  • In California, a Global Privacy Control signal must be treated as an opt-out of sale and sharing. Send Sec-GPC: 1 from a Californian exit and check the site honours it.
  • Use a fresh browser context for every run. A stored consent cookie from the last test hides the banner and every bug behind it.

The problem

What goes wrong without the right IPs

You only ever see your own banner

The consent platform reads the visitor's location and serves an opt-in banner in the EU, an opt-out link in some US states and nothing elsewhere. Your QA team, all in one country, has tested one branch.

Tags fire before the choice

A tag manager trigger set to page view, a hard-coded pixel or a third-party script that loads its own trackers will set cookies before the banner is answered. It is invisible unless you record the requests.

Reject does not mean reject

A reject click that hides the banner but leaves analytics cookies in place, or that is undone on the next page, is a common failure, and it only shows if you reload after rejecting.

Opt-out signals are ignored

Global Privacy Control is a header and a JavaScript property. Many sites never read either, and the omission does not show up in any normal test run.

Regional changes ship silently

A marketing team adds a pixel, a consent platform updates its geolocation rules, a template change moves the banner. Without a scheduled check per market, you learn about it from a complaint.

What to collect

What you can collect

Banner variant served
Which banner, or none, the market received. The first assertion: is this the configuration we intended for this country or state?
Cookies set before interaction
Name, domain, expiry and whether each is classed as essential. Non-essential cookies here are the headline finding in the EU.
Third-party requests before interaction
Domains contacted before the visitor chose. A tracker request without a cookie can still be a problem; record both.
State after reject
Cookies and requests after a reject click and after a reload. Shows whether the choice is applied and persists.
State after accept
Confirms tags work when consent is given, so the fix for one bug does not break measurement.
First-layer options
Whether reject is offered next to accept, and whether boxes are pre-ticked on the settings layer.
GPC handling
Whether a request with Sec-GPC: 1 changes what is set and shown, and whether the site displays that the signal was honoured.
Exit country, city and timestamp
Evidence of where the test ran from, so a finding can be reproduced and explained.

How it runs

How a collection run works

  1. 01

    Define the matrix: pages × markets × states

    List the templates that matter (home, product, checkout, article), the markets you serve, and the three consent states. Add a GPC variant for US markets that require opt-out signals to be honoured.

  2. 02

    Run each cell in a fresh context through the market's exit

    Open a new browser context with no stored state, held on one sticky exit for the whole cell so the page, banner and reload all come from one visitor.

    Pre-consent and post-reject capture, Playwright
    from playwright.sync_api import sync_playwrightSERVER, PASSWORD = "http://proxy.arcproxies.io:8000", "PASSWORD"def run_cell(url: str, country: str, city: str | None, cell: str, gpc: bool = False):    user = f"USERNAME_pool-arcfast_country-{country}"    if city:        user += f"_city-{city}"    user += f"_session-{cell}_sesstime-10"    with sync_playwright() as p:        browser = p.chromium.launch(proxy={"server": SERVER, "username": user, "password": PASSWORD})        ctx = browser.new_context(extra_http_headers={"Sec-GPC": "1"} if gpc else {})        page = ctx.new_page()        requests = []        page.on("request", lambda r: requests.append(r.url))        page.goto(url, wait_until="networkidle")        before = {"cookies": ctx.cookies(), "requests": list(requests)}        page.get_by_role("button", name="Reject all").click()  # adapt per banner        page.reload(wait_until="networkidle")        after = {"cookies": ctx.cookies(), "requests": list(requests)}        browser.close()        return before, after# California, with and without the GPC headerrun_cell("https://www.example.com/", "us", "losangeles", "ca-gpc", gpc=True)run_cell("https://www.example.com/", "de", None, "de-base")
  3. 03

    Classify what you recorded

    Map every cookie and request domain to a purpose using your consent platform's categories. Anything non-essential before consent, or still present after reject and reload, becomes a finding with the market attached.

  4. 04

    Run it on a schedule and on release

    Run the full matrix weekly and a reduced matrix on every release that touches templates, tags or the consent platform. Diff against the last run so a new tracker shows up as a change, not as noise.

Setup

Recommended setup

A consent test is a short, stateful browser session. Hold one exit per test cell and pick the pool by how much of the matrix you run.

PlanRoleSessionTargetingPrice
ARC Fast
Rotating residential
Default for full consent runs
Residential exits, the address type real visitors arrive from, held for load, choice and reload. City targeting is how you reach US states that have their own rules.
Sticky, 10 minutes per test cellCountry + city
€2.00 / GB
€1.12 at 1 TB (−44%)
ARC Basic
Rotating ISP
For quick pre-consent checks at scale
Our lowest price per GB, for the frequent check that only asks which cookies and requests appear before any interaction.
Sticky, 5 minutes per pageCountry + city
€0.75 / GB
€0.59 at 1 TB (−21%)
ARC Mobile
Mobile 4G/5G
For mobile templates on carrier networks
Genuine 4G/5G exits for sites that serve a different template or tag set to phone traffic. No city targeting, so no state-level checks.
Sticky up to 60 minutesCountry only — DE, GB, US, JP
€3.50 / GB
€3.15 at 1 TB (−10%)

Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.

Connect

One connection string per market

The country, city and sticky session are tokens in the username. Change the token, change the market; keep the session handle, keep the IP.

sticky · Germany · 10 min
http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000

Swap _country-de for any market you quote. The full grammar is on the residential proxies page.

Illustration

What a weekly consent audit across 12 markets costs

An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.

Assumptions

Page templates
300
Markets
12 countries and US states
Consent states per page
3 (no interaction, reject, accept)
Weight per run
3 MB, full render
Cadence
weekly
Bandwidth per month
≈ 141 GB

On ARC Fast

€191.76per month, excl. VAT

141 GB bought in one purchase at €1.36 / GB (−32% volume rung, applied automatically).

The same 141 GB on ARC Basic: €95.88 at €0.68 / GB. Move down as soon as the cheaper pool holds up.

Consent tests need the full render, because the trackers are the thing being tested. Cut cost by testing templates rather than every URL, and by running only the pre-consent state between full weekly audits.

Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.

In depth

Cookie consent testing, in depth

US state privacy laws and opt-out preference signals

US state laws mostly work on opt-out rather than opt-in. Under the California regulations, a business that sells or shares personal information must treat an opt-out preference signal such as Global Privacy Control as a valid request to opt out, without asking for more information and without a pop-up in response to the signal. Colorado has required controllers to honour recognised universal opt-out mechanisms since 1 July 2024, and recognised GPC as the first.

GPC is technically simple: browsers that support it send the request header Sec-GPC: 1 and expose navigator.globalPrivacyControl. That makes it easy to test, and easy to forget to implement.

Which US states you can test from

Consent platforms usually resolve a US visitor to a state from the IP address. Our rotating pools take a city token in six US metros, which places a test in these states:

City tokenStateWhat it lets you check
losangelesCaliforniaOpt-out link, GPC handling under the California regulations
seattleWashingtonYour configuration for Washington visitors
dallasTexasYour configuration for Texas visitors
miamiFloridaYour configuration for Florida visitors
newyorkNew YorkYour configuration for New York visitors
chicagoIllinoisYour configuration for Illinois visitors

States outside this list, Colorado among them, cannot be targeted directly; country-level US exits land wherever the pool places them. IP geolocation databases also disagree at the edges, so record which banner variant you actually received rather than assuming it from the token. How to test a proxy's location explains how to check.

Works with anything that takes a proxy URL

  • Playwright
  • Puppeteer
  • Selenium
  • Node.js
  • Python requests / httpx
  • Docker

FAQ

Questions

Something not covered? Write to contact@arcproxies.io.

Why does cookie consent testing need proxies?

Because consent platforms decide which banner to show, and which tags to allow, from the visitor's location. Testing from one office exercises one region's configuration. An exit in each market shows what visitors there actually receive.

How do I test Global Privacy Control?

Send the request header Sec-GPC: 1 from a browser context in a state whose rules require the signal to be honoured, such as California, and compare cookies, requests and the displayed opt-out status against a run without the header.

Can I target a specific US state?

Indirectly, through city targeting on ARC Basic, Fast and Ultra: Los Angeles, Seattle, Dallas, Miami, New York and Chicago place a test in California, Washington, Texas, Florida, New York and Illinois. Other states cannot be targeted directly.

Should consent tests run in a fresh browser profile?

Yes, every time. A consent cookie stored by an earlier run hides the banner and makes the page behave as if the visitor had already chosen, which masks exactly the pre-consent behaviour you are testing.

Does a passing test mean the banner is compliant?

No. A test shows what the site does in a given market at a given time. Whether that behaviour meets the law in that market is a legal assessment for your privacy counsel; the test gives them evidence to make it.

Sources & review

Last reviewed by the ARC Proxies team. Prices are read from the live catalog at build time.

  1. [1]EUR-Lex: Directive 2002/58/EC on privacy and electronic communications
  2. [2]European Data Protection Board: Report of the work undertaken by the Cookie Banner Taskforce
  3. [3]California Privacy Protection Agency: CCPA statute and regulations, effective January 1, 2026
  4. [4]Colorado Attorney General: Universal Opt-Out and the Colorado Privacy Act
  5. [5]W3C Privacy Working Group: Global Privacy Control (GPC)

Get started

Buy a gigabyte and try it on your own targets.

No subscription, no sales call. Code WELCOME15 takes 15% off your first purchase, and whatever you do not use is still there next quarter.