Technical audit · 15.06.2026

rai.it

Website of Italian Public Broadcasting

Rai.it is the website of RAI, Italian public broadcasting. Home-page capture: 159 requests, 11 domains. For a media portal the picture is restrained: there is no commercial advertising-and-analytics layer — no Google Analytics, no Meta, no advertising, no social plugins, not a single cookie was set during the session. RAI's analytics is its own and goes to a European cloud region. But there is one problem: the Nielsen audience-measurement system activates before consent — it loads the SDK, sends measurement requests and assigns a persistent unique identifier, although there is a consent banner on the site and the policy promises to process data only after prior consent. For a public broadcaster, audience measurement is a lawful function acknowledged in the policy, but an identifier assigned before consent is a violation in essence.

Request timeline

100–260 ms · consent banner (CMP)
RAI's own consent banner based on OIL (the TCF v2 standard) loads. That is, a consent-collection mechanism is provided on the site.
101–183 ms · Google Fonts
Fonts load from the Google domain. A static resource, but the visitor's IP goes to Google.
719–826 ms · Nielsen SDK load
The set of scripts of the Nielsen audience-measurement system loads (configuration, SDK, utility page). This happens before consent.
1203–1206 ms · Nielsen request and unique identifier
Nielsen sends a measurement request and assigns the visitor a persistent unique identifier (via a separate subdomain). That is, the audience is measured not de-identified, but with a stable identifier — and before consent.
2770 ms · RAI's own analytics in the cloud
Events are sent to RAI's own analytics on the Azure cloud bus in a European region. This is first-party, EU-hosted analytics — the least problematic part.
3184–9132 ms · repeated Nielsen requests
The Nielsen system repeatedly sends measurement requests over the course of the session. Still without consent.
there is a banner, but Nielsen does not wait for it
The consent-collection platform is present on the site, but the Nielsen audience measurement with identifier assignment starts before any decision. No cookie, meanwhile, was set during the session.

Declared versus actual

+ Nielsen — not declared
+ RAI analytics on Azure — not declared

Detected trackers

Indicators of GDPR non-compliance

Context

www.rai.it is the official website of RAI, Italian public broadcasting. The data controller is RAI. This is a media portal: news, programmes, links to the RaiPlay (video) and RaiPlay Sound (audio) platforms. As a public broadcaster, RAI has a lawful audience-measurement function (participation in the Auditel system). Capture: 159 requests to 11 domains, the home page, taken on a clean Edge browser with no VPN and no blocker. There is its own consent banner (a CMP based on OIL, the TCF v2 standard). There is no commercial advertising-and-analytics layer in the capture.

Who receives the data

Spotted here was: Nielsen. Nielsen (via the imrworldwide.com domains) is an audience-measurement system: it loads its SDK, sends measurement requests and assigns the visitor a persistent unique identifier. Besides it, RAI’s own analytics is sent to the Azure cloud bus in a European region — this is first-party, EU-hosted processing, nothing goes to advertising third parties. The fonts are loaded from Google Fonts. Importantly, to be honest: there is no Google Analytics, no Meta, no advertising networks, no social-network pixels and no third-party exchanges in the capture. By a media portal’s standards this is a very restrained set.

Yes, RAI has its own consent banner (a CMP based on OIL, the TCF v2 standard), it loads in the very first hundreds of milliseconds. No «accept/decline» decision was made in this visit — the capture was taken in a clean session. The policy itself explicitly promises to process personal data only after prior consent. And it is precisely against this backdrop that the mismatch is visible: consent is not given, the banner has not yet been passed, while the Nielsen audience measurement already fires and assigns an identifier.

Before any user decision, the following manage to fire:

  • the Nielsen audience-measurement system — SDK load, measurement requests and assignment of a persistent unique identifier;
  • RAI’s own analytics on the Azure cloud (European region, first-party — the least problematic);
  • the loading of Google Fonts. The key point is Nielsen. De-identified aggregate statistics can work without consent, but here the audience is measured with a stable unique identifier, and that is no longer an aggregate. Such measurement falls under the rules on prior consent — and it fires before consent.

On the acknowledgement in the policy

Worth noting separately for precision. RAI’s policy acknowledges participation in audience measurement — it mentions the Auditel measurements of television viewing, whose technology partner is precisely Nielsen. That is, the function itself is not hidden. But the technical recipients by name (Nielsen, the analytics cloud) are not named in the provided policy text — their detailing is moved to a separate Cookie Policy, which was not examined in this check. So we leave the question of naming the recipients open, and formulate the main complaint on timing: the audience identifier is assigned before consent, which the policy declares obligatory.

Conclusion

Rai.it is a predominantly restrained case for media with one substantial caveat. The positive is real: there is no commercial advertising-and-analytics layer — no Google Analytics, no Meta, no advertising, no social plugins; cookies are not set; the own analytics stays in a European cloud region; and a consent banner is provided. But the Nielsen audience-measurement system activates before consent and assigns the visitor a persistent unique identifier — and this is not a de-identified aggregate, and consent for it is required in advance, all the more so since the policy itself promises prior consent. The main takeaway for the reader: even for a public broadcaster, where audience measurement is a lawful function, it should wait for consent and be transparent about the recipients. It would be enough to place the audience measurement behind the consent banner — the infrastructure for this is already on the site.

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: it/rai-it-2026-06-15.har
SHA-256: fc14943352d991f6b20461e33bb2bd98900642813c646701c09ed752f1b6a41a
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.