Works with your stack
Cookie banner for a personal website or blog
free for non-commercial sites
A personal site or blog still uses cookies when it counts visits, embeds a video or loads a font from Google. A non-commercial site can ask for a free Community key: every feature, exactly like a paid key. The only counterpart: a credit sentence at the end of the cookie policy.

Cookie Rocks with a free Community key A Community key opens the complete plugin, exactly like a paid key. Here is what matters most for this kind of site. Videos, maps, music, social media posts and forms (YouTube, Vimeo, Google Maps, Spotify, Instagram, X, TikTok, Typeform…) show a placeholder with a load button, in place, without breaking your layout. Instagram, Threads, X and TikTok posts show a short message and a Load button while their script waits for consent, instead of a bare link. Clarity and Microsoft Advertising wait for consent like any other tool, then receive the visitor’s choice. Matomo loads as usual and writes no cookie before consent. WooCommerce and WP Statistics load as usual and read the choice through the WP Consent API plugin. Write your own banner texts, language by language, or keep ours in 54 languages. The banner, its details panel and the cookie policy in 54 languages: English, Arabic, Azerbaijani, Bulgarian, Bangla, Catalan, Czech, Danish, German, Greek, Spanish (Spain), Spanish (Mexico), Estonian, Finnish, French, Irish, Hindi, Croatian, Hungarian, Armenian, Indonesian, Icelandic, Italian, Japanese, Georgian, Kazakh, Korean, Kyrgyz, Lithuanian, Latvian, Macedonian, Mongolian, Malay, Maltese, Norwegian Bokmål, Nepali, Dutch, Polish, Portuguese (Brazil), Portuguese (Portugal), Romanian, Russian, Slovak, Slovenian, Albanian, Serbian (Cyrillic), Serbian (Latin), Swedish, Turkish, Ukrainian, Uzbek, Vietnamese, Chinese (Simplified) and Chinese (Traditional). With Polylang or WPML, the banner follows the language of each page. One option shows it in the visitor’s browser language instead, even when your site has no version in that language. The dashboard comes in 28 languages, the law sheets in 28. 11.43 kB on a first visit, banner included, then 1.00 kB on each next page. Measured on a blank WordPress. And the engine is built for your site: it only carries the options you use. The measured figures.Everything Cookie Rocks does, free for personal sites and blogs
Placeholders, not holes
Social posts in place
Microsoft ClarityMicrosoft, Matomo and WP Statistics
Your words
In their language
Light on every page
Plugins that personal sites and blogs often use
Each one is tested with Cookie Rocks: what it loads in the browser, and what waits for the visitor’s choice. Open a card for the details.
What matters for consent with personal sites and blogs
A free key, every feature
Personal pages and hobby blogs written by people can ask for a free Community key. It opens the complete plugin, exactly like a paid key, for one domain or subdomain, renewed each year in one click as long as the site stays non-commercial. The credit sentence at the end of the cookie policy stays: it is the counterpart of the free key.
Statistics
Counting visitors with Google Analytics needs consent under the GDPR and similar laws. Plugins that count on your own site can still set a cookie or keep IP addresses.
Videos and embeds
YouTube videos, Instagram posts and other embeds wait behind a message with a Load button, and load in place after the click.
Fonts
A font loaded from Google’s servers sends the visitor’s address to Google. The same font served from your own site sends nothing.
What our tests found on personal sites and blogs
Depends on a setting · Cookie RocksExempt measurement for Koko and Independent Analytics
With exempt audience measurement on, in a country that allows it, Cookie Rocks 2.11.1 lets Koko Analytics in fingerprint mode and Independent Analytics with a daily salt count a visit before the choice, with no cookie. After Refuse they stop. Koko in cookie mode, and Independent Analytics without the daily salt, stay held until consent.
Seen in our tests, 6 November 2026, Cookie Rocks.
Good to know · Koko AnalyticsKoko Analytics stays silent for automated browsers
A driven browser sees nothing, while a real visitor gets the cookie in the default mode.
Seen in our tests, 6 November 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics sends no page view when navigator.webdriver is true, or when the user agent looks like a bot. An automatic test in a driven browser therefore sees no request and no cookie, although a real visitor gets the cookie in the default mode.
Depends on a setting · Koko AnalyticsKoko Analytics: use_cookie set to false does nothing with the default method
The default method is also cookie, so a banner must change the method too.
Read in its code, 6 November 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics 2.5.3 still reads window.koko_analytics.use_cookie, which a comment keeps for cookie banners. Its script sends m = use_cookie ? 'c' : method[0], and the default method is cookie, so setting use_cookie to false changes nothing on a default site: the method must change too.
Good to know · Cookie RocksEmbed Plus setup stops when released after load
When Cookie Rocks 2.11.0 releases Embed Plus for YouTube after the page has loaded, the video plays, but its setup does not finish: ytprefs.js waits for the window load event, which has already passed, so apiInit never runs and its player events do not start. Sending the load event again finishes the setup.
Seen in our tests, 6 November 2026, Cookie Rocks.
Set before the choice · Cookie RocksCookie Rocks holds Jetpack Stats 16.4 until the visitor accepts
Script and pixel wait for Accept, no reload is needed, and nothing is sent after Refuse.
Seen in our tests, 5 November 2026, Cookie Rocks.
Full detail
Cookie Rocks 2.10.0 holds both the Jetpack Stats 16.4 script and its inline code before any choice, with or without WP Consent API. After Accept, the script loads and the pixel is sent without a page reload. After Refuse, nothing goes to stats.wp.com or pixel.wp.com.
Depends on a setting · JetpackJetpack Stats 16.4 waits for WP Consent API, but its script still loads first
The pixel waits for statistics consent; the script from stats.wp.com loads before the choice. Without WP Consent API nothing waits.
Seen in our tests, 5 November 2026, Jetpack 16.4.
Full detail
Since Jetpack 16.4 the honor_cookie_consent option is gone. With the WP Consent API plugin active, Jetpack Stats sends its pixel (pixel.wp.com/g.gif) only once wp_has_consent('statistics') allows it, and listens for a change of consent. Its script stats.wp.com/e-*.js still loads before any choice. Without the WP Consent API plugin, Stats counts every page view as before.
See the 25 other findings
Set before the choice · JetpackWP Consent API alone does not make Jetpack Stats 16.4 wait
With no banner on the site, the script and the pixel both go out on the first page view.
Seen in our tests, 5 November 2026, Jetpack 16.4.
Full detail
With the WP Consent API plugin active but no consent banner on the site, Jetpack Stats 16.4 still loads its script and sends its pixel on the first page view: nothing refuses, so the gate lets it through. Installing WP Consent API alone does not make Stats wait.
Good to know · JetpackWhat Jetpack stores in visitors' browsers
Jetpack: 21 cookie(s) or browser key(s) for visitors, recognised by Cookie Rocks from 2.9.8.
Name Kept in Category What it is for eucookielawcookie Necessary Remembers the visitor's choice on the Jetpack cookie banner personalized-ads-consentcookie Necessary Remembers the visitor's choice on the Jetpack cookie banner tk_aicookie Statistics Anonymous identifier for Jetpack and WooCommerce usage statistics (Automattic Tracks) wp-jp-premium-content-sessioncookie Necessary Gives a subscriber access to paid or subscriber-only content jetpack-subscription-modal-on-comment-scroll-tolocalStorage Preferences Limits how often the subscription pop-up is shown to the visitor jetpack-subscription-modal-shown-countsessionStorage Preferences Limits how often the subscription pop-up is shown to the visitor jetpack_blog_subscribe_*cookie Necessary Shows the visitor the result of a subscription jetpack_comments_subscribe_*cookie Necessary Shows the visitor the result of a subscription jpp_math_passcookie Necessary Remembers that the visitor solved the anti-robot sum on the login form verbum-wp-postpasscookie Necessary Lets the visitor comment on a password-protected post jetpack_sso_noncecookie Necessary Keeps the sign-in with WordPress.com going jetpack_sso_original_requestcookie Necessary Keeps the sign-in with WordPress.com going jetpack_sso_redirect_tocookie Necessary Keeps the sign-in with WordPress.com going jetpack_sso_wpcom_gravatar_*cookie Necessary Keeps the sign-in with WordPress.com going jetpack_sso_wpcom_name_*cookie Necessary Keeps the sign-in with WordPress.com going jetpack_sso_wpcom_referrercookie Necessary Keeps the sign-in with WordPress.com going tk_lrcookie Statistics Automattic Tracks usage statistics (referrer) tk_orcookie Statistics Automattic Tracks usage statistics (original referrer) tk_r3dcookie Statistics Automattic Tracks usage statistics tk_tccookie Statistics Automattic Tracks usage statistics (session) devicePixelRatiocookie Preferences Serves images sized for the visitor's screen Read in its code, 2 November 2026, Jetpack.
Full detail
Jetpack can store 21 cookies or browser keys for visitors: eucookielaw, personalized-ads-consent, tk_ai, wp-jp-premium-content-session, jetpack-subscription-modal-on-comment-scroll-to, jetpack-subscription-modal-shown-count, jetpack_blog_subscribe_*, jetpack_comments_subscribe_*, jpp_math_pass, verbum-wp-postpass, jetpack_sso_nonce, jetpack_sso_original_request, jetpack_sso_redirect_to, jetpack_sso_wpcom_gravatar_*, jetpack_sso_wpcom_name_*, jetpack_sso_wpcom_referrer, tk_lr, tk_or, tk_r3d, tk_tc, devicePixelRatio. Cookie Rocks recognises them from 2.9.8 and lists them in the cookie policy, each with its category and purpose, when it sees them.
Good to know · Cookie RocksThe audit names the local fonts setting of your theme
When the home page loads Google Fonts, the Cookie Rocks 2.9.5 audit names the setting of the active theme or plugin that serves them from the site: Elementor, WP Rocket, Spectra, Kadence Blocks, OMGF, Local Google Fonts, Astra, Kadence, OceanWP or Neve. Otherwise it suggests a plugin such as OMGF. Divi, Bricks, Oxygen and Beaver Builder have no such setting. With Cookie Rocks Pro, it points to « Serve Google Fonts from this site » instead.
Read in its code, 1 November 2026, Cookie Rocks.
Good to know · Cookie Rocks ProCookie Rocks Pro leaves local fonts alone
Cookie Rocks Pro 2.9.5 reads the page as it is served. Fonts that a theme or another plugin already serves from the site leave no Google address in the page, and the Pro does not touch them. It copies only what still points to Google: for example when Elementor falls back to Google after a failed download, or when OMGF is still in test mode.
Read in its code, 1 November 2026, Cookie Rocks Pro.
Good to know · DiviDivi 5 links variable Google Fonts, and OMGF still serves them
Divi 5.15.1 links its Google fonts as variable fonts, in a stylesheet with id et-builder-googlefonts-cached-variable-css (et-builder-googlefonts-variable-css on the first page built without cache). On a live Divi 5 site with OMGF, both were served from /wp-content/uploads/omgf/, with no request to Google. Turning « Improve Google Fonts Loading » on did not change that: Divi 5 kept the link and OMGF kept serving it.
Seen in our tests, 1 November 2026, Divi 5.15.1.
Depends on a setting · WP StatisticsWP Statistics consent setting works only with plugins on its own list
setting “Consent integration” · by default: None
WP Statistics offers its WP Consent API setting only when a consent plugin from its own built-in list is active; with any other banner the setting is greyed out and goes back to None when the admin is opened.
Seen in our tests, 17 October 2026, WP Statistics 14.16.17.
Depends on a setting · WP StatisticsCookie Rocks Pro turns on WP Statistics consent integration by itself
setting “Consent integration”
With WP Consent API active, no page view is counted before the choice, and one after Accept all, without a reload. WP Statistics' settings are not changed.
Seen in our tests, 17 October 2026, WP Statistics 14.16.17.
Full detail
With WP Consent API active, Cookie Rocks Pro turns on WP Statistics' consent integration by itself, without writing to WP Statistics' settings: no page view is counted before the choice, and one after "Accept all", without a reload.
Good to know · WP StatisticsWP Statistics sets no cookie but counts visits before the choice
WP Statistics sets no cookie and uses no browser storage. Without a consent integration, it counts the visit before the visitor chooses.
Seen in our tests, 17 October 2026, WP Statistics 14.16.17.
Set before the choice · Embed Plus for YouTubeEmbed Plus for YouTube loads YouTube before the choice, even with the video held
Embed Plus for YouTube loads its own script, which injects YouTube's iframe API before the choice even when the video frame is held; YouTube then sets its cookies. Cookie Rocks 2.5.1 holds that script with YouTube.
Seen in our tests, 17 October 2026, Embed Plus for YouTube.
Good to know · Yoast SEO, Rank Math SEO, All in One SEO, Wordfence, Really Simple SSL, WP Armour, AkismetSeven SEO and security plugins set nothing for visitors by default
by default: Default settings
Yoast SEO, Rank Math, All in One SEO, Wordfence, Really Simple SSL, WP Armour and Akismet set no cookie, use no storage and load no known third-party tool.
Seen in our tests, 17 October 2026, Yoast SEO, Rank Math SEO, All in One SEO, Wordfence, Really Simple SSL, WP Armour, Akismet 28.7, 1.0.280, 5.0.3, 9.0.2, 9.8.3, 2.4.02, 5.7.2. Source
Full detail
On a fresh WordPress home page with default settings, Yoast SEO, Rank Math SEO, All in One SEO, Wordfence, Really Simple SSL, WP Armour and Akismet set no cookie for the visitor, keep nothing in the browser's storage and load no known third-party tool, after Accept all.
Depends on a setting · WP StatisticsWP Statistics Bypass Ad Blockers hides the tracker's name
setting “Bypass Ad Blockers” · by default: off
With this option on (off by default), the tracker loads from an address without the plugin name. Only the tag ID wp-statistics-tracker-js stays recognisable.
Read in its code, 16 October 2026, WP Statistics 14.16.17.
Full detail
With Bypass Ad Blockers on (off by default), WP Statistics serves its tracker from an address like /?<6-character key>=<hash>, without the plugin name, and sends hits to admin-ajax.php; only the tag ID wp-statistics-tracker-js stays recognisable.
Good to know · WP StatisticsWP Statistics anonymises and hashes IP addresses by default
The IP address is anonymised, then hashed with a salt renewed every day. Hits go to the site itself, and visitors' browsers contact no other site.
Read in its code, 16 October 2026, WP Statistics 14.16.17.
Full detail
By default WP Statistics anonymises the IP address with WordPress' wp_privacy_anonymize_ip, then hashes it with sha256 of a salt renewed every day, the IP and the user agent; the full user agent is not stored. Hits are POSTed to the site's own REST route (or admin-ajax.php). Its geolocation database is downloaded by the server from cdn.jsdelivr.net or MaxMind; visitors' browsers contact no other site.
Sent from your server · WP StatisticsWP Statistics server-side tracking records visits before any banner can act
setting “Tracking method (use_cache_plugin)” · by default: JavaScript (client side)
With JavaScript tracking off, the visit is recorded while the page is built. Cookie Rocks 2.5.2 flags this mode on its dashboard, with a button to WP Statistics' settings.
Read in its code, 16 October 2026, WP Statistics 14.16.17.
Full detail
When WP Statistics' JavaScript tracking is turned off (server-side tracking), it records the visit in PHP while the page is built, before any banner can act, conditioned only on its consent integration read with wp_has_consent in PHP; it also cannot work with a page cache. Cookie Rocks 2.5.2 flags this mode on its dashboard with a button to WP Statistics' settings, and the warning disappears when client-side tracking is chosen again.
Depends on a setting · Koko AnalyticsKoko Analytics sets a cookie from the server by default
setting “tracking_method” · by default: cookie
Its default method sends each page view to the site, whose reply sets _koko_analytics_pages_viewed until midnight. No third-party host is contacted.
Read in its code, 16 October 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics defaults to the cookie tracking method. Its inline footer script sends the page view at once by sendBeacon (or fetch) to the site itself, and the server response sets _koko_analytics_pages_viewed (HttpOnly, path /, expires at the next midnight in the site's time zone). The JavaScript writes no cookie or storage, and no third-party host is contacted.
Good to know · Koko AnalyticsKoko Analytics cookieless mode keeps a daily session on the server
The session file is named by a hash of a daily seed, the user agent and the IP address, and deleted after midnight. Its tracker is now in the page, so address patterns no longer match it.
Read in its code, 16 October 2026, Koko Analytics 2.5.3.
Full detail
Koko Analytics' cookieless method keeps a server-side session file named by a hash of a daily seed, the user agent and the IP address, deleted after midnight. Since 2.x the tracking script is printed inline in wp_footer, so address patterns on assets/dist/js/script.js no longer match anything. It has no WP Consent API code.
Set before the choice · JetpackSeveral Jetpack modules contact WordPress.com without any consent check
- Comments (jetpack.wordpress.com), Likes (widgets.wp.com) and VideoPress (videopress.com).
- Google Fonts module: fonts.gstatic.com. Site Accelerator: images from i0.wp.com.
- Jetpack's own visitor cookies are set only after an action.
Read in its code, 16 October 2026, Jetpack 16.3.1.
Full detail
Several Jetpack modules contact WordPress.com without reading any consent signal: Comments loads an iframe from jetpack.wordpress.com, Likes from widgets.wp.com, VideoPress from videopress.com, the Google Fonts module loads from fonts.gstatic.com, and Site Accelerator serves images from i0.wp.com. Jetpack's own visitor cookies (comment_author_*, jetpack_*_subscribe_*, jpp_math_pass) are set only after an action.
Good to know · JetpackJetpack's Cookie Consent block does not pass the choice to WP Consent API
Its single button only sets eucookielaw. With WordAds' own consent tool on, euconsent-v2 is set for 1 year and the Jetpack banner is turned off.
Read in its code, 16 October 2026, Jetpack 16.3.1.
Full detail
Jetpack's Cookie Consent block has a single button that only sets eucookielaw and fires eucookielaw-dismissed; it never calls wp_set_consent. With wordads_cmp_enabled, WordAds loads its own IAB consent tool, sets euconsent-v2 (1 year, server-side through admin-ajax) and disables the Jetpack banner. No gtag('consent') call was found.
Good to know · JetpackWooCommerce Analytics assumes consent when WP Consent API is missing
It checks for statistics consent before each event. Without WP Consent API, its requests to pixel.wp.com and stats.wp.com are sent for every visitor.
Read in its code, 16 October 2026, Jetpack 16.3.1.
Full detail
WooCommerce Analytics (Jetpack module, on with WooCommerce) checks wp_has_consent('statistics') before each event, on the server and in the browser. Without WP Consent API, consent is assumed and pixel.wp.com/t.gif and stats.wp.com/s-*.js are sent for every visitor.
Good to know · OMGFOMGF replaces Google Fonts links with local copies and sets no cookie
It rewrites only font stylesheet links (Google, Bunny, WordPress.com) and removes hints to those hosts; it touches no script or frame. After Save & Optimize it empties known page caches.
Read in its code, 16 October 2026, OMGF 6.3.13.
Full detail
OMGF 6.3.13 works in its own output buffer (template_redirect, priority 3) and only rewrites <link> stylesheets from fonts.googleapis.com, fonts.bunny.net and fonts-api.wp.com to local copies in uploads/omgf/, removing preconnect, dns-prefetch and preload hints to those hosts; it touches no script or iframe. It sets no cookie and no browser storage; its front script loads only for logged-in administrators. After Save & Optimize it purges known page caches.
Depends on a setting · OMGFSome fonts still come from Google with OMGF free
setting “Test mode”
- Fonts loaded by @import, inline @font-face, webfont.js or JavaScript.
- Fonts inside third-party frames (maps, videos, reCAPTCHA), listed in its dashboard.
- In test mode, visitors still load Google; only administrators get local fonts.
- If a download fails, the original link is kept.
Read in its code, 16 October 2026, OMGF 6.3.13.
Full detail
With OMGF's free version, fonts loaded by @import, inline @font-face, webfont.js or JavaScript still come from Google, as do fonts inside third-party iframes (maps, videos, reCAPTCHA), which its dashboard lists. If a download fails, the original link is kept (since 6.3.12). In test mode, only administrators get local fonts and visitors still load Google. A request with ?nomgf returns the unprocessed page.
Set before the choice · Embed Plus for YouTubeEmbed Plus for YouTube loads YouTube thumbnails before the choice
setting “Facade mode” · by default: off
- Default mode: a normal YouTube iframe that lazy-load plugins leave in place.
- Facade mode: an i.ytimg.com thumbnail loads first; a click builds the YouTube player.
- A playlist facade fetches youtube.com/oembed from the browser.
- Gallery thumbnails load from i.ytimg.com before any choice.
Read in its code, 16 October 2026, Embed Plus for YouTube 14.2.6.1.
Full detail
By default Embed Plus for YouTube writes a normal youtube.com/embed iframe carrying no-lazyload and data-no-lazy=1, so lazy-load plugins leave its src in place. In facade mode there is no iframe in the HTML: a div with data-facadesrc and an i.ytimg.com thumbnail load before any choice, a playlist facade fetches youtube.com/oembed from the browser, and a click builds the YouTube iframe in JavaScript. Gallery thumbnails load from i.ytimg.com as CSS backgrounds, before any choice.
Depends on a setting · Embed Plus for YouTubeEmbed Plus for YouTube consent message reloads the page and can be cached
setting “Privacy/GDPR - Show Consent Message” · by default: off
Its own message (off by default) sets ytprefs_gdpr_consent for 30 days and reloads. A cached page can keep the wrong state. No Cookies only switches to youtube-nocookie.com.
Read in its code, 16 October 2026, Embed Plus for YouTube 14.2.6.1.
Full detail
Embed Plus for YouTube's own Show Consent Message (off by default) is decided on the server from the cookie ytprefs_gdpr_consent: without the value 1, a message replaces each video and gallery thumbnails. The button sets that cookie for 30 days (path /) and reloads the page, so a cached page keeps showing the message (or the video) whatever the choice unless the cache varies on it. It does not use WP Consent API. The No Cookies option only switches the player host to youtube-nocookie.com.
Good to know · OMGFOMGF serves Divi's Google Fonts from the site, with no request to Google
The free version did this by itself on activation. Its warning about unused fonts concerns fonts the browser does not download.
Seen in our tests, 9 October 2026, OMGF.
Full detail
On a Divi site, OMGF (free version) replaced the Google Fonts stylesheets with local copies by itself on activation: every font, Divi's included, was served from /wp-content/uploads/omgf/ on the site's own domain, and the page sent no request to Google's font servers. OMGF's warning about unused fonts concerns @font-face declarations the browser does not download.
Kinds of sites
Other kinds of sites, each with its own page.
Questions
Who can get a Community key?
A site that sells nothing and promotes no business, such as a personal page or a hobby blog. Not an SEO blog, a site of AI-generated content, or a site with ads or affiliate links. One key per person, for one site. See the Community rules.
Does my blog need a banner at all?
If nothing on it needs consent, the banner can say so: the site only uses the cookies it needs to work. As soon as a video, a map or statistics come in, consent comes first under the GDPR and similar laws.
Where are fonts and statistics covered?
See fonts and statistics plugins.
What happens after the 30-day trial?
The banner, your visitors’ choices and your proofs of consent keep working. Without a key, most settings lock, updates and support stop. Take a key at any time and everything opens again.
For personal sites
Every feature, free for your personal site.
free for non-commercial sites
Three fields, one minute, read by a person. Your key arrives by e-mail, renewed each year in one click while the site stays non-commercial.