Full checker, method, and sources

Pre-consent tracker check

Observe resource hosts, readable cookie names, and Global Privacy Control on your own website before interacting with consent controls.

Free. No signup. Your entries stay in this browser.

Run the check on your own website

Drag this link to your bookmarks bar. Open your own page, then run the bookmark. Some browsers or site policies block bookmarklets.

BCT tracker observation

Read or copy the console snippet
(function trackerSnapshot() {
	const resources = performance.getEntriesByType("resource");
	const hosts = /* @__PURE__ */ new Map();
	for (const resource of resources) try {
		const url = new URL(resource.name);
		if (["http:", "https:"].includes(url.protocol) && url.hostname !== location.hostname) hosts.set(url.hostname, (hosts.get(url.hostname) ?? 0) + 1);
	} catch {}
	const names = document.cookie.split(";").map((cookie) => cookie.trim().split("=")[0]).filter(Boolean);
	const gpc = navigator.globalPrivacyControl;
	const summary = [
		"BCT pre-consent observation",
		`Page origin ${location.origin}`,
		`GPC ${gpc === true ? "enabled" : gpc === false ? "disabled" : "not exposed"}`,
		`Other resource hosts ${hosts.size}`,
		...[...hosts].sort().map(([host, count]) => `${host} (${count} requests)`),
		`Readable cookie names ${names.length}`,
		names.join(", ") || "None observed",
		"Run on a fresh page before any consent interaction. This is the current observation, not a record of previous consent.",
		"Other hosts are not proof of tracking. Subdomains can be first-party. HttpOnly cookies, server-side tracking, cleared timing entries, and later interactions are outside this check."
	].join("\n");
	const panel = document.createElement("dialog");
	panel.setAttribute("aria-label", "Pre-consent tracker observation");
	panel.style.cssText = "max-width:min(90vw,780px);max-height:85vh;background:white;color:#090d14;padding:24px;border:1px solid #697386;border-radius:8px;font:16px/1.5 system-ui;overflow:auto";
	const heading = document.createElement("h2");
	heading.textContent = "Pre-consent tracker observation";
	const text = document.createElement("pre");
	text.textContent = summary;
	text.style.cssText = "white-space:pre-wrap;overflow-wrap:anywhere;font:inherit";
	const copy = document.createElement("button");
	copy.textContent = "Copy summary";
	copy.style.cssText = "font:inherit;padding:10px;margin-right:12px";
	copy.onclick = async () => {
		try {
			await navigator.clipboard.writeText(summary);
			copy.textContent = "Summary copied";
		} catch {
			copy.textContent = "Select the text above to copy";
		}
	};
	const close = document.createElement("button");
	close.textContent = "Close";
	close.style.cssText = "font:inherit;padding:10px";
	close.onclick = () => {
		panel.close();
		panel.remove();
	};
	panel.append(heading, text, copy, close);
	document.body.append(panel);
	panel.showModal();
	return {
		hosts: [...hosts],
		cookieNames: names,
		gpc: gpc ?? null,
		summary
	};
})()

Paste only the host and cookie-name summary from the bookmarklet. Never paste cookie values or customer records.