Why a checklist and not a template
Most cookie banners fail the same way: they look right and do the wrong thing. The text says that nothing is tracked until you agree, while Google Analytics, a Meta Pixel and a heatmap have already loaded in the background. Regulators in Europe and the Brazilian ANPD now test banners by opening the browser network panel, not by reading the wording, so the questions below are about behavior first and words second.
The list follows the life of a visit. First, what happens before anyone clicks. Then the banner itself, the choices it offers and the records you keep. Each check says what to verify and how cookieowl handles it, so you can see where the library ends and your own work begins.
The interactive checklist
Tick a check once you have verified it on your own site, ideally in a private window with the developer tools open on the Network tab. The list is stored in this browser with localStorage, so you can come back to it later.
IBefore any choice
With cookieowl: Mark scripts with
type="text/plain"anddata-cookieowl, or turn ondata-auto-block.With cookieowl:
data-consent-modesends the denied defaults withwait_for_update.With cookieowl: Auto mode replaces YouTube and Vimeo,
data-cookieowl-srccovers the rest.With cookieowl: The necessary category is always on and labelled as such.
IIThe banner
With cookieowl: Reject all and Accept all share one style by design.
With cookieowl: Switches start off and only reflect a choice the visitor made.
With cookieowl: Built in LGPD and GDPR wording in five languages, plus
policyUrl.With cookieowl: Preferences dialog with categories, services, cookies and durations.
With cookieowl: Dialog roles, focus trap, live announcement and visible focus rings.
IIIAfter the choice
With cookieowl: The floating owl button and
data-cookieowl-openon any link.With cookieowl: Cookie erasing plus a page reload when scripts of that category ran.
With cookieowl:
expiresDaysdefaults to 365.With cookieowl: Bump
versionand every older record is ignored.With cookieowl: On by default with
respectGPC, Do Not Track withrespectDNT.
IVRecords and documents
With cookieowl:
onConsent(record)hands you every record for your own log.With cookieowl: The same service list feeds the preferences dialog.
With cookieowl: Put it in the policy page that
policyUrllinks to.With cookieowl: cookieowl handles the mechanics, not the legal review.
How to verify prior blocking in five minutes
Open your site in a private window so there is no stored choice. Open the developer tools, select the Network tab and reload. Filter by the domains of your vendors: google-analytics.com, googletagmanager.com, connect.facebook.net, clarity.ms, hotjar.com. Before you touch the banner there should be no request to any of them, except the Consent Mode pings if you chose advanced mode on purpose.
Then open the Application tab and look at the cookies of your domain. Only necessary cookies should exist: a session, a CSRF token, the load balancer and, after a choice, the consent cookie itself. If you see _ga, _fbp or _hjSession before clicking anything, a tracker escaped.
<head>
<!-- 1. cookieowl first, without async or defer -->
<script src="https://cdn.jsdelivr.net/npm/cookieowl@0.1.0/dist/cookieowl.js"
data-policy-url="/privacy" data-consent-mode data-auto-block></script>
<!-- 2. every tracker waits for its category -->
<script type="text/plain" data-cookieowl="analytics"
src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
</head>Now click Accept all and watch the same panel: the tracker requests appear right away, in the order of your markup. Reopen the preferences, switch analytics off and save. The analytics cookies disappear and the page reloads, so the script that already ran is gone too.
After the choice: withdrawal, expiry and versions
Consent is not a one time event. Article 7(3) of the GDPR and article 8, paragraph 5 of the LGPD both say that withdrawing must be as easy as consenting. In practice that means a visible way back on every page. cookieowl adds a small floating owl button and turns any element with data-cookieowl-open into a Cookie settings link.
Choices also age. A common practice is to ask again after twelve months, which is the default expiresDays. And when you add a vendor or a new purpose, the old consent no longer covers it: bump version and every visitor sees the banner again. Adding a new category to the configuration has the same effect automatically.
Records you can show an auditor
Both laws put the burden of proof on you. The record cookieowl stores holds a random consent id, the policy version, a timestamp, the expiry, the method and every category, which is enough to answer when, how and to what a visitor agreed. Keep a copy on your side with the onConsent hook:
cookieowl.init({
version: '2026-10',
onConsent(record) {
navigator.sendBeacon('/api/consent-log', JSON.stringify(record));
},
});Do not store more than you need in that log. The record has no IP address and no user agent on purpose; add them only if your legal basis and retention policy cover them.
Questions
Is this checklist legal advice?
No. It summarizes what the LGPD, the GDPR, the ePrivacy rules and regulator guidance consistently ask of cookie consent, so you can review your site. Your counsel should confirm it for your processing and your countries.
Do LGPD and GDPR ask for the same cookie banner?
Very nearly. Both require consent that is free, informed and unambiguous for non essential cookies, easy withdrawal and proof of consent. The GDPR side adds the ePrivacy rule on storing information on a device; the Brazilian ANPD published its own cookie guide in 2022 with the same core advice.
Which checks fail most often?
Trackers that run before the choice, a Reject option hidden in a second layer, pre-ticked categories and no way to withdraw later. Those four are covered first in the list above.
Does cookieowl tick every box for me?
It covers the technical checks: blocking, the banner, choices, withdrawal, expiry, versioning, signals and the record. The documents (privacy policy, vendor list, DPO contact) and the legal review are yours.