Features · every capability in the platform

Every layer of consent. One platform.

From a 3 KB edge loader to a signed audit log, each piece is independently best-in-class, and they all snap together. No glue code. No spreadsheet exports. No "enterprise tier to unlock the basics."

No credit card required Install in seconds GDPR / CCPA / LGPD ready
MCP-native — install from any AI coding agent below
Cursor, Claude, Codex, Replit, Lovable
The platform

Everything you need to ship compliant consent.

Drop in a script. Get a banner, a policy API, a scanner, and an audit log — all wired to the same source of truth.

Machine-readable policy

Auto-published at /.well-known/consent.json — agents read it before scripts run.

MCP server included

Claude Code, Cursor, and custom agents query consent as a tool.

Signed receipts

Every decision (human or agent) returns a portable JWT.

Auto-cookie scanner

Detects trackers + suggests categories on every deploy.

GDPR / CCPA / LGPD ready

Regional rules apply automatically by visitor IP.

Bring your own banner

Use our component, our headless API, or your own design.

Edge-deployed loader

<3 KB gzipped, served from 280+ PoPs — no CWV hit.

Granular blocking

Scripts, iframes, custom rules per consent category.

Audit log + regulator export

Every change signed and exportable as a compliance bundle.

TypeScript-first SDK

Strict types end-to-end. Zod schemas validate webhooks at runtime — no any escape hatches.

Framework presets

Copy-paste install pages for Next.js, Remix, Nuxt, Astro, SvelteKit, WordPress, and GTM.

14 languages, built-in

Banner copy ships translated. Override individual strings or supply your own locale files in plain JSON.

Signed webhooks

HMAC-SHA256 with timestamp + nonce. Replay window 5 minutes. Verifier snippets for every framework.

Multi-site workspace

Manage hundreds of sites from one workspace. Shared category templates, per-site regional overrides.

One-click CMS migration

Import config exports from Cookiebot, OneTrust, iubenda, and Ketch. Re-validated on first scan.

01 / performance

Async by default. Runs before any tracker.

cl.js is 2.8 KB gzipped and includes the banner shell, category gate, scanner ping, and policy fetch. It loads asynchronously, never blocks render, and resolves the category state at the edge so we don't round-trip to origin for a consent decision.

  • 2.8 KB gzipped — verified in every release on real devices
  • 280+ Cloudflare PoPs, median TTFB under 30 ms US/EU/APAC
  • Async-safe; works under strategy="beforeInteractive" in Next.js
  • Compatible with strict CSP, SRI hash published per release
Read the install guide
Real release · v1.4.2
<!-- 1 · Add to <head> -->
<script async
  src="https://cdn.consentlayer.dev/cl.js"
  data-site="cl_live_a7f3..."></script>

<!-- 2 · Optional: react to changes -->
window.consentlayer.on('change', (s) => {
  analytics.toggle(s.analytics);
});
2.8 KBgzipped
<30 msmedian TTFB
280+edge PoPs
Scanner inbox — northwind.app 8 m ago
_clarity · clarity.ms · newsuggest: analytics
_ga, _gid · google-analytics.comanalytics · allowed
__tld__ · ads.linkedin.com · newsuggest: marketing
cf_clearance · cloudflare.comnecessary · allowed
__stripe_mid · stripe.comnecessary · allowed
02 / detection

Auto-cookie scanner runs on every deploy.

Two scan passes. The loader collects real-browser cookie data passively. A headless crawler hits every URL in your sitemap on deploy and replays the same instrumentation. New trackers surface within minutes — with a suggested category from our trained classifier.

  • Real-browser instrumentation (no synthetic traffic)
  • Sitemap crawler runs on every deploy or schedule
  • ML-suggested category · one-click accept or override
  • Works with SPA, MPA, server-rendered apps
Agent · MCP tool call
claude mcp call consentlayer get_policy --site northwind.app
{
  "categories": { "necessary": true, "analytics": false },
  "mcp": "https://northwind.app/mcp/consent",
  "signed_by": "cl_live_a7f3..."
}
 policy honored · receipt jwt issued
03 / agentic

The only CMP built for the agentic web.

Machine-readable policy at /.well-known/consent.json, an MCP server with two tools, and signed receipts agents can carry. Verified agents from Anthropic, OpenAI, and Perplexity already honor ConsentLayer policies.

  • Signed .well-known/consent.json, CDN-cached, open spec
  • MCP tools: get_policy and record_decision
  • Per-agent allowlist · verified operator tokens
  • Portable JWT receipts — auditable per session
Audit log · last 24 h
Agent claude-3-5-sonnet recorded decision analytics:false2 m ago
Site setting regions.gdpr.default changed by Hana T.18 m ago
Banner shown 1,284× · accept 71% · reject 24%1 h window
Agent operator-build-1.2 fetched policy v173 h ago
Scanner queued vital-pixel.io for review4 h ago
04 / compliance

Audit log auto-generated. Regulator-ready.

Every settings change, banner decision, and agent fetch is appended to a Merkle-tree log and signed. Generate a regulator-ready CSV + JWT bundle in one click. SOC 2 receipt format ships in the Growth plan.

  • Append-only Merkle log, cryptographically verifiable
  • JWT receipt per decision · portable, third-party verifiable
  • One-click compliance bundle (CSV + JWTs)
  • GDPR · CCPA · LGPD · IAB TCF v2.2 ready
Developer experience

Built for engineers who hate consent tooling.

Typed end-to-end. Framework-native. Zero-config defaults. Works in your existing stack on the first try.

SDK

TypeScript-first · Zod-validated

Every method has strict TypeScript types. Webhook payloads validate at runtime via the same Zod schemas that ship with the SDK. No any escape hatches.

  • TypeScript
  • Zod schemas
  • strict: true
  • tree-shakable
Framework presets

Snippets that just work

Framework-aware install pages give you the right hydration strategy, the right loader timing, and the right env-var pattern — copy-paste ready.

  • Next.js (App & Pages)
  • Remix
  • Nuxt 3
  • Astro
  • SvelteKit
  • WordPress
  • GTM
Edge & Workers

Runs anywhere modern JS runs

The SDK ships ESM + CJS, works in Cloudflare Workers, Vercel Edge, Bun, Deno, and Node 18+. No DOM dependencies in the server path.

  • Cloudflare Workers
  • Vercel Edge
  • Bun
  • Deno
  • Node 18+
Webhooks

Signed · replay-safe

Every webhook is HMAC-SHA256 signed with a per-site secret and includes a timestamp + nonce. Replay window is 5 minutes by default. Sample verifier in every framework preset.

  • HMAC-SHA256
  • timestamp + nonce
  • 5-minute replay window
  • verifier snippets
FAQ

Frequently asked — about the product.

Have feature questions? Here are the ones we hear most. For billing or plan questions, see the pricing page.

Can I customize the banner UI completely?

Three options. Use the default banner themed via design tokens (one CSS file). Or use the headless API (cl.onChange) and render anything you want. Or use our pre-built React / Vue / Svelte components that wrap the headless API. All three honor the same policy.

Does the scanner work for single-page apps?

Yes. The loader instruments the browser-side cookie API and observes mutations across route changes. For client-rendered apps, this catches trackers that traditional crawl-only scanners miss. For static or server-rendered pages, the sitemap crawler runs in parallel.

What languages does the default banner ship with?

14 languages out of the box: English, German, French, Spanish, Italian, Portuguese (BR & PT), Dutch, Polish, Czech, Swedish, Norwegian, Finnish, Japanese, and Korean. Translation files are plain JSON — bring your own or override individual strings.

Does ConsentLayer support IAB TCF v2.2 for ad tech?

Yes, on the Growth plan and above. The TCF string is generated client-side and exposed via the standard __tcfapi. Vendor lists update automatically; you don't need to maintain anything.

How do I verify an agent's decision?

Every decision returns a JWT signed by the same key that signs /.well-known/consent.json. The public key is published at /.well-known/consentlayer-keys.json. Receipts can be verified offline by any third party — us, you, your auditor, your regulator.

What exactly gets logged in the audit trail?

Settings changes (who, what, when, before/after diff), banner decisions (per session, hashed visitor ID, category state), agent fetches (which policy version, which agent operator), and exports (who downloaded the bundle, with what filter). 730-day retention on Pro, 7-year on Growth.

Can I run ConsentLayer on Cloudflare Workers or my own edge?

The SDK works inside Workers and Vercel Edge today — the loader resolves consent state and forwards decisions. The full control plane runs on our edge for now. Self-hosting the policy server is on the Enterprise roadmap (Q3 2026).

How does region detection work without IP fingerprinting?

We use Cloudflare's request-level country code, which arrives as a header and never leaves the edge. No IP is stored, no third-party geo provider, no client-side fingerprinting. The regional rule resolves before any tracker can run.

Ship Consent. For Every Visitor. It's That Simple.

Join the engineering teams using ConsentLayer to gate scripts, audit decisions, and stay compliant — across humans, agents, and every region.

Free tier No credit card required Install in seconds GDPR / CCPA / LGPD ready