Technical audit · 11.04.2026

riigikogu.ee

Estonia's Supreme Legislative Body

The website of the body that passes laws — including personal data protection laws. Google Tag Manager fires at +2.7 seconds, while the consent banner only loads at +173 seconds. A 170.5-second gap: throughout that time, Google is already receiving visit data, while the user hasn't even seen the banner yet.

Request timeline

+2.6–2.7 sec · before the banner
Google reCAPTCHA (+2.6 sec, 42 requests to gstatic.com and 26 to google.com) and GTM (GTM-5BFRTZC, +2.7 sec) fire. Data goes to the USA. There is no banner yet.
+173 sec · consent banner
The GDPR plugin loads almost 3 minutes in. There is a 'Reject all' button (better than many sites), but the 'Functional' category is enabled by default — a pre-checked toggle is invalid.
+173.3 sec · after the banner
Cloudflare Insights (6 requests) and AddToAny (2 requests) transmit data to the USA. Google Fonts — 46 requests, each transmitting the IP address to Google. None are declared.

Declared versus actual

✓ Cloudflare (_cf_bm, _cfuvid) — declared
✓ Google Analytics (_ga, _gid, _gat) — declared
✓ PHPSESSID — declared
+ Google Tag Manager (GTM-5BFRTZC) — not declared
+ Google reCAPTCHA — 68 requests per session — not declared
+ Cloudflare Insights, AddToAny, Google Fonts (46 requests) — not declared
+ Actual Google cookies — _Secure-1PSID, SAPISID, NID (745 bytes), HSID, and others — not declared

Transfer timings

+2.6 sec www.gstatic.com / www.google.com

Google reCAPTCHA — 42 + 26 requests per session

+2.7 sec www.googletagmanager.com

GTM-5BFRTZC — 170 sec before the banner. Data to the USA

+173.2 sec GDPR plugin (banner)

The banner appears after 173 seconds. Gap with GTM — 170.5 sec

+173.3 sec static.cloudflareinsights.com

Cloudflare Insights, 6 requests. Absent from the policy

+173.3 sec AddToAny

'Share' buttons, 2 requests to the USA. Absent from the policy

Detected trackers

Indicators of GDPR non-compliance

Context

riigikogu.ee is the official website of Estonia’s supreme legislative body. HAR: 587 requests per session, 7 unique external domains, 129 third-party requests. This is the website of the body that passes laws — including personal data protection laws.

The site has “Accept,” “Reject all,” and “Save” buttons — a reject option exists, which is better than mil.ee. But the “Functional cookies” category is enabled by default: the toggle is green with no user action whatsoever. Under Art. 7(2) and Art. 4(11), consent must be an active action, and pre-checked toggles are invalid — directly confirmed by the CJEU’s Planet49 ruling (2019). Additionally, the “Performance” category (which includes Google Analytics) is described as “not storing personal data,” which is legally incorrect: GA transmits the IP address and assigns a unique identifier, both of which are personal data.

A 170-second gap

Google Tag Manager (GTM-5BFRTZC) fires 2.7 seconds after load, reCAPTCHA at +2.6 seconds (42 requests to gstatic.com, 26 to google.com). Meanwhile, the consent banner (the GDPR plugin) only loads at +173 seconds — nearly three minutes in. GTM and reCAPTCHA beat the banner’s appearance by 170.5 seconds. While the user is reading the page, having not yet seen any banner, Google has already received data about their visit. After interacting with the banner, Cloudflare Insights, AddToAny, and Google Fonts (46 requests, each transmitting the IP address to Google) are added — not one of them declared.

Declaration versus fact

The cookie policy declares Cloudflare (_cf_bm, _cfuvid), Google Analytics (_ga, _gid, _gat), and PHPSESSID. Absent: Google Tag Manager, reCAPTCHA, Cloudflare Insights, AddToAny, Google Fonts, and the actual full list of Google cookies (_Secure-1PSID, _Secure-3PSID, SAPISID, NID — 745 bytes, HSID, APISID, SID, SSID, SIDCC) — not one is listed. Under Art. 13(1)(e), the data subject is entitled to know all recipients of their data.

The eID context

Estonian electronic identification is integrated into the Parliament’s website — citizens can authenticate via ID card or Mobile-ID. In the same session where a citizen logs in under their real name, undeclared Google trackers are running, and GTM fires 170 seconds before the consent banner. This requires separate legal justification under GDPR Art. 9.

Conclusion

Estonia teaches the whole world about digital government — other countries come to study its experience, journalists write articles, conferences and awards follow. And on the website of this country’s Parliament, Google receives visitor data 170 seconds before visitors even see the consent banner. GTM at +2.7 sec, the GDPR plugin at +173.2 sec — a 170.5-second gap; it’s simple arithmetic, and that’s the power of a HAR file. A country that exports the model of digital government should be able to configure a consent banner on the website of its own Parliament.

Evidence

How to verify: download the file and compute its checksum — sha256sum file.har (Linux, macOS) or certutil -hashfile file.har SHA256 (Windows); it must match the one shown. The conclusions apply to the scope of this measurement — see the limitations of the method.

Original (audit)
HAR file: ee/riigikogu-ee-2026-04-11.har
SHA-256: 923598723b82f8ca61bff3d879be5f00098f86783e76ad91e1a30f084c0c3eff
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.