Blocks before it asks
Trackers are held back until the visitor makes a choice. Prior blocking, not a banner bolted on after the scripts already fired.
Kjeks holds trackers back until your visitor decides — then loads only what they agreed to. Prior blocking, a discovery scanner, and add-ons for Google Consent Mode and AI-assisted review, for single sites and whole multisite networks.
Free & open source · “Kjeks” is Norwegian for biscuit — a friendlier kind of cookie.
Most consent banners appear after the scripts have already run. Kjeks flips that: nothing non-essential loads until consent is given.
Trackers are held back until the visitor makes a choice. Prior blocking, not a banner bolted on after the scripts already fired.
One consent configuration for a whole multisite network, or a single site. Trackers are declared once and resolved per blog.
A standalone Playwright scanner crawls your pages under each consent state and reports the tags that actually load.
A lightweight, keyboard-navigable consent banner and a re-open trigger, with content you control from one place.
The same plugin runs on a solo install or a 50-site network — admin surfaces and capabilities adapt automatically.
Bolt on Google Consent Mode v2 or AI-assisted tracker classification only if your setup calls for it.
Declare what runs on your site, let the scanner confirm reality, review, and go live.
Download the release ZIP and upload it under Plugins → Add New → Upload Plugin. On multisite, network-activate it; on a single site, just activate.
Register the scripts and services your site uses and the consent category each belongs to. Kjeks blocks them until consent matches.
Run kjeks-scanner to crawl your pages under each consent state and see the tags that actually fire — then reconcile the list.
Publish the banner. Visitors choose, Kjeks enforces, and the re-open trigger lets them change their mind any time.
# 1. Register a tracker so Kjeks blocks it until consent (PHP)
add_action( 'kjeks_register_integrations', function () {
kjeks_register_integration( 'matomo', [
'category' => 'analytics',
'label' => 'Matomo',
'handles' => [ 'matomo-tracker' ],
] );
} );
# 2. Discover what really loads, per consent state
npx kjeks-scanner --url https://example.com/ --blog-id 1 --out scan
# 3. Import the reviewed inventory into WordPress
wp kjeks import scan/example.com.json --blog_id=1Real commands from the plugins — see the full documentationfor step-by-step guides at levels 101, 201, and 301.
Start with the core plugin. Add Google Consent Mode, AI review, or the scanner only when your setup needs them.
kjeksThe cookie-consent engine: categories, prior blocking, the consent banner, and the tracker inventory for single-site or multisite WordPress.
kjeks-googleWires Google Consent Mode v2 into Kjeks — gtag.js loads gated by category, with consent defaults denied until the visitor opts in.
kjeks-ai-reviewerSuggests a consent category for each discovered tracker using an AI model, so triaging a large inventory is a review instead of research.
kjeks-scannerA standalone Node + Playwright scanner that discovers trackers across your site under each consent state and writes a per-page report.
No tool can promise that. Kjeks gives you the technical mechanism — prior blocking, categorised consent, and an audit trail of what loads — but compliance depends on your configuration, disclosures, and legal advice. Kjeks is not legal advice.
Both. The core plugin detects its environment: on multisite it uses network admin and network capabilities, and on a single site it falls back to the standard admin menu and manage_options.
It drives a real browser through each consent state and records the network requests and tags that fire — catching trackers injected by themes, embeds, or other plugins that are easy to miss by hand.
Only if they fit your stack. kjeks-google is for sites using Google Consent Mode v2; kjeks-ai-reviewer speeds up categorising a large tracker inventory. The core plugin works without either.
Usually by design. Kjeks skips the banner when a choice is already stored (~6 months — the visitor sees the small Cookie settings trigger instead), or when the browser sends Global Privacy Control— Brave sends GPC by default — which Kjeks honours by auto-rejecting non-essential technologies. Browser or extension features that hide cookie notices (Brave Shields, uBlock cookie lists) can also remove it.