https://duolingo.com
Scanned Apr 15, 2026 · 39.9s
Your website score is
Grade
BannerConsent Banner
Yes
Regulatory Compliance
Multi-regulation overview — click any regulation for details
Technical scan only. A passing score does not equal legal compliance. Consult qualified legal counsel for your jurisdiction.
Tag Leak detected 26 user data leaks before consent on duolingo.com, including Google (Tracker Tracker), GA4, Meta Pixel and 3 more.
Security Headers
1/6 presentStrict-Transport-Security
Add HSTS header to enforce HTTPS connections and prevent downgrade attacks
Content-Security-Policy
Add a Content-Security-Policy header to prevent XSS and code injection attacks
X-Frame-Options
SAMEORIGIN
X-Content-Type-Options
Set X-Content-Type-Options to 'nosniff' to prevent MIME type sniffing
Referrer-Policy
Set a Referrer-Policy header to control how much referrer information is shared
Permissions-Policy
Add a Permissions-Policy header to restrict browser features like camera, microphone, and geolocation
Google Consent Mode
Not DetectedGoogle Consent Mode v2 was not found on this page. GCM v2 allows Google's tags to adjust their behavior based on user consent, and is required for compliant advertising measurement in the EU. Without it, your Google Ads and GA4 conversions may be impacted after consent is declined.
GTM container detected (GTM-TX6Z97C) but no consent mode initialisation found. Add gtag('consent', 'default', ...) before your GTM snippet.
Post-Rejection Audit
Reject Button
Found
Post-Rejection Fires
0 vendors
Consent Mode
Not Detected
GTM Load
2290ms pre-consent
Google Tag Manager(GTM-TX6Z97C)
Loaded 2290ms after page load — before the consent banner was detected (banner appeared at 8406ms). Per a 2022 German court ruling, GTM itself transmits the user's IP to Google pre-consent.
Consent Mode V2: Not Detected
Google Consent Mode was not detected on this site.
Consent Record Audit
Issues detectedConsent record stored after interaction
GDPR Art. 7(1)Found: OptanonConsent (OneTrust)
Record contains timestamp
Art. 7(1)Timestamp field detected
Record contains consent state
Art. 7(1)Accept/reject state detected
Record contains consent categories
Art. 7(1)Consent categories (analytics, marketing, etc.) not found in record
Consent withdrawal mechanism accessible
GDPR Art. 7(3)No way for users to withdraw consent found on page
No cookie settings link, footer link, or floating consent button was detected. GDPR requires users to withdraw consent as easily as they gave it.
Why this matters
Under GDPR Article 7, controllers must be able to demonstrate that consent was given (Art. 7(1)) and ensure users can withdraw consent at any time, as easily as giving it (Art. 7(3)). Sites with no consent record or no withdrawal mechanism cannot legally rely on consent as a lawful basis.
Tracker categories detected
Critical18
Google Analytics6 findingsID trackedregion1.analytics.google.com, www.google-analytics.com, _gid, _gat_UA-21595814-1, _ga_CSFDVCPQ4F, _ga

region1.analytics.google.com, www.google-analytics.com, _gid, _gat_UA-21595814-1, _ga_CSFDVCPQ4F, _ga

GA4 (Google) loaded before consent: Sends pageview and event data to Google Analytics

GA4 (Google) loaded before consent: Sends pageview and event data to Google Analytics

Google Analytics cookie "_gid" set before consent

Google Analytics cookie "_gat_UA-21595814-1" set before consent

Google Analytics cookie "_ga_CSFDVCPQ4F" set before consent

Google Analytics cookie "_ga" set before consent
Google (Tracker Tracker)2 findingsID trackedstats.g.doubleclick.net, www.recaptcha.net
stats.g.doubleclick.net, www.recaptcha.net
Google (tracker) loaded before consent
Google (tracker) loaded before consent
Meta Pixel4 findingsID trackedwww.facebook.com, connect.facebook.net, lu, _fbp

www.facebook.com, connect.facebook.net, lu, _fbp

Meta Pixel (Meta) loaded before consent: Meta Pixel tracking endpoint

Meta Pixel (Meta) loaded before consent: Sends user data to Meta for ad targeting and conversion tracking

Facebook cookie "lu" set before consent — Used to record whether the person chose to remain logged in Contents: User ID and miscellaneous log in information (e.g., number of logins per account, state of the "remember me" check box, etc.)

Meta Pixel cookie "_fbp" set before consent
Google Ads5 findingswww.google.com, www.googleadservices.com, googleads.g.doubleclick.net, _gcl_au, _gcl_ls

www.google.com, www.googleadservices.com, googleads.g.doubleclick.net, _gcl_au, _gcl_ls

Google Ads (Google) loaded before consent: Google Consent Mode data collection for ad measurement

Google Ads (Google) loaded before consent: Google Ads conversion tracking

Google Ads (Google) loaded before consent: Sends conversion data to Google Ads

Google Ads cookie "_gcl_au" set before consent

Google Ads (Google) wrote "_gcl_ls" to localStorage before consent
No recognizable consent withdrawal mechanism detected — GDPR Article 7(3) requires users can withdraw consent as easily as giving it (cookie settings link or floating button expected)
Warnings9
Google Tag Manager2 findingsID trackedwww.googletagmanager.com

www.googletagmanager.com

Google Tag Manager (Google) loaded before consent: Loads the GTM container which may trigger other tags

GTM loaded before consent banner — IP address transmitted to Google pre-consent (container: GTM-TX6Z97C)
Possible server-side tag proxy at excess.duolingo.com — analytics data may be forwarded to third parties before consent. Browser scanning cannot verify downstream recipients; audit your GTM Server-side or CNAME configuration.
Unknown third-party request to accounts.google.com before consent
localStorage key "Wed Apr 15 2026 19:46:19 GMT+0000 (Coordinated Universal Time)" written before consent
localStorage key "duo.loggedOutExperiments" written before consent
localStorage key "duo.state" written before consent
localStorage key "lastExternalReferrer" written before consent
sessionStorage key "__sak" written before consent
Info10
Google (Cdn)3 findingsID trackedwww.google.nl, www.gstatic.com, fonts.gstatic.com
www.google.nl, www.gstatic.com, fonts.gstatic.com
Google (cdn) loaded before consent
Google (cdn) loaded before consent
Google (cdn) loaded before consent
OneTrust2 findingscdn.cookielaw.org, OptanonConsent

cdn.cookielaw.org, OptanonConsent

OneTrust (OneTrust) loaded before consent: OneTrust cookie consent management

OneTrust cookie "OptanonConsent" set before consent
Amazon (cdn) loaded before consent

OneTrust CMP (OneTrust) loaded before consent: OneTrust geo-lookup — determines which consent banner to show based on user location
LinkedIn cookie "lang" set before consent — Used to remember a user's language setting
AWS Application Load Balancer — necessary for infrastructure
AWS Application Load Balancer — necessary for infrastructure
Compliant1

OneTrust cookie "OptanonAlertBoxClosed" set correctly after consent
Is this your site?
Run a full multi-page scan with monitoring and get detailed remediation steps
Scan duolingo.com →This audit is based on publicly observable website behavior. To request removal from the index, email support@tagleak.com