Duolingo

duolingo.com

Compare

https://duolingo.com

Scanned Apr 15, 2026 · 39.9s

Your website score is

0/100
Critical

Grade

F0

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 present

Strict-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 Detected

Google 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.

No tracking vendors detected firing after rejection

Consent Record Audit

Issues detected

Consent 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

Advertising2 vendors
Analytics2 vendors
Marketing1 vendor
Security5
Functional1 vendor
Tag Management1 vendor
Critical18
Google Analytics
Google Analytics6 findingsID tracked

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

GA4
criticalNetworkAnalyticsGA4

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

ID: G-CSFDVCPQ4FHost: region1.analytics.google.comFired: 4561ms after load
GA4
criticalNetworkAnalyticsGA4

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

Host: www.google-analytics.comFired: 3774ms after load
Google Analytics
criticalCookieAnalyticsGoogle Analytics

Google Analytics cookie "_gid" set before consent

Cookie: _gidDomain: .duolingo.com
Google Analytics
criticalCookieAnalyticsGoogle Analytics

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

Cookie: _gat_UA-21595814-1Domain: .duolingo.com
Google Analytics
criticalCookieAnalyticsGoogle Analytics

Google Analytics cookie "_ga_CSFDVCPQ4F" set before consent

Cookie: _ga_CSFDVCPQ4FDomain: .duolingo.com
Google Analytics
criticalCookieAnalyticsGoogle Analytics

Google Analytics cookie "_ga" set before consent

Cookie: _gaDomain: .duolingo.com
Google (Tracker Tracker)
Google (Tracker Tracker)2 findingsID tracked

stats.g.doubleclick.net, www.recaptcha.net

Google (Tracker Tracker)
criticalNetworkGoogle (Tracker Tracker)

Google (tracker) loaded before consent

ID: G-CSFDVCPQ4FHost: stats.g.doubleclick.netFired: 4562ms after load
Google (Tracker Tracker)
criticalNetworkGoogle (Tracker Tracker)

Google (tracker) loaded before consent

Host: www.recaptcha.netFired: 650ms after load
Meta Pixel
Meta Pixel4 findingsID tracked

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

Meta Pixel
criticalNetworkAdvertisingMeta Pixel

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

ID: 1735692093320310Host: www.facebook.comFired: 5105ms after load
Meta Pixel
criticalNetworkAdvertisingMeta Pixel

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

Host: connect.facebook.netFired: 3774ms after load
Facebook
criticalCookieMarketingFacebook

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.)

Cookie: luDomain: .duolingo.comRetention: 2 year
Meta Pixel
criticalCookieAdvertisingMeta Pixel

Meta Pixel cookie "_fbp" set before consent

Cookie: _fbpDomain: .duolingo.com
Google Ads
Google Ads5 findings

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

Google Ads
criticalNetworkAdvertisingGoogle Ads

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

Host: www.google.comFired: 3949ms after load
Google Ads
criticalNetworkAdvertisingGoogle Ads

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

Host: www.googleadservices.comFired: 5061ms after load
Google Ads
criticalNetworkAdvertisingGoogle Ads

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

Host: googleads.g.doubleclick.netFired: 5156ms after load
Google Ads
criticalCookieAdvertisingGoogle Ads

Google Ads cookie "_gcl_au" set before consent

Cookie: _gcl_auDomain: .duolingo.com
Google Ads
criticalStorageAdvertisingGoogle Ads

Google Ads (Google) wrote "_gcl_ls" to localStorage before consent

Key: _gcl_lsType: localStorageFired: 3927ms after load
criticalConsent Record

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 Manager
Google Tag Manager2 findingsID tracked

www.googletagmanager.com

Google Tag Manager
warningNetworkTag ManagementGoogle Tag Manager

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

ID: GTM-TX6Z97CHost: www.googletagmanager.comFired: 2130ms after load
Google Tag Manager
warningGTMTag ManagementGoogle Tag Manager

GTM loaded before consent banner — IP address transmitted to Google pre-consent (container: GTM-TX6Z97C)

Analytics proxy
warningNetworkAnalytics proxy

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.

Host: excess.duolingo.comFired: 2138ms after load
vendor logo
warningNetwork

Unknown third-party request to accounts.google.com before consent

Host: accounts.google.comFired: 2138ms after load
warningStorage

localStorage key "Wed Apr 15 2026 19:46:19 GMT+0000 (Coordinated Universal Time)" written before consent

Key: Wed Apr 15 2026 19:46:19 GMT+0000 (Coordinated Universal Time)Type: localStorageFired: 1674ms after load
warningStorage

localStorage key "duo.loggedOutExperiments" written before consent

Key: duo.loggedOutExperimentsType: localStorageFired: 2992ms after load
warningStorage

localStorage key "duo.state" written before consent

Key: duo.stateType: localStorageFired: 3252ms after load
warningStorage

localStorage key "lastExternalReferrer" written before consent

Key: lastExternalReferrerType: localStorageFired: 5075ms after load
warningStorage

sessionStorage key "__sak" written before consent

Key: __sakType: sessionStorageFired: 5314ms after load
Info10
Google (Cdn)
Google (Cdn)3 findingsID tracked

www.google.nl, www.gstatic.com, fonts.gstatic.com

Google (Cdn)
infoNetworkGoogle (Cdn)

Google (cdn) loaded before consent

ID: G-CSFDVCPQ4FHost: www.google.nlFired: 4562ms after load
Google (Cdn)
infoNetworkGoogle (Cdn)

Google (cdn) loaded before consent

Host: www.gstatic.comFired: 698ms after load
Google (Cdn)
infoNetworkGoogle (Cdn)

Google (cdn) loaded before consent

Host: fonts.gstatic.comFired: 3355ms after load
OneTrust
OneTrust2 findings

cdn.cookielaw.org, OptanonConsent

OneTrust
infoNetworkConsent MgmtOneTrust

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

Host: cdn.cookielaw.orgFired: 647ms after load
OneTrust
infoCookieConsent MgmtOneTrust

OneTrust cookie "OptanonConsent" set before consent

Cookie: OptanonConsentDomain: .duolingo.com
Amazon (Cdn)
infoNetworkAmazon (Cdn)

Amazon (cdn) loaded before consent

Host: d35aaqx5ub95lt.cloudfront.netFired: 650ms after load
OneTrust CMP
infoNetworkConsent MgmtOneTrust CMP

OneTrust CMP (OneTrust) loaded before consent: OneTrust geo-lookup — determines which consent banner to show based on user location

Host: geolocation.onetrust.comFired: 757ms after load
LinkedIn
infoCookieFunctionalLinkedIn

LinkedIn cookie "lang" set before consent — Used to remember a user's language setting

Cookie: langDomain: .duolingo.comRetention: session
infoCookieFunctional

AWS Application Load Balancer — necessary for infrastructure

Cookie: AWSALBDomain: www.duolingo.com
infoCookieFunctional

AWS Application Load Balancer — necessary for infrastructure

Cookie: AWSALBCORSDomain: www.duolingo.com
Compliant1
OneTrust
CompliantCookieConsent MgmtOneTrust

OneTrust cookie "OptanonAlertBoxClosed" set correctly after consent

Cookie: OptanonAlertBoxClosedDomain: .duolingo.com

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