(Update 9 Nov 2025:) Notice of API deprecation and repo archiving The Topics API is deprecated and planned for removal from Chrome. As a result, this repository will be archived and will no longer be updated. (I’ll keep these notes here just in case someone comes up with a similar idea. More: the end(ish) of Google “Privacy Sandbox”. There is still at least one adfraud in the browser proposal at W3C: Performance Max Preserving Attribution)

(Update 15 Jun 2024: add link to noyb.eu)

(Update 10 Aug 2023: add links to recent issues.)

(Update 5 Jul 2023: add “Topics API enables advertisers to discriminate against legally protected groups without an incriminating paper trail.”)

(Update 26 Apr 2023: add screenshot.)

(Update 15 Apr 2023: add some more recent links and explanation)

(Update 31 Jan 2023: Google has made a commitment to the Competition and Markets Authority in the UK that Google Search will not use a site’s decision to opt-out from the Topics API as a ranking signal.)

(Update 14 Sep 2022: add non-sensitive but possibly user-unacceptable use cases)

Some notes on how Google Topics API is likely to affect various web stakeholders, in order by priority of constituencies. Numbered links are to issues in the GitHub repository.

Google Topics API is in Google Chrome but not in the Chromium browser.

Users

Topics API rewards deceptive sites and traffic sourcing practices. Topics API leaks valuable audience data from one site to another. As I wrote on AdExchanger, this is a problem that it shares with third-party cookies—enabling the monetization of low-value sites of little interest to users. As the proposal currently stands, any site that a user can be tricked into visiting, or that their device can be manipulated into visiting, is in a position to collect ad revenue based on Topics API data that the browser supplies.

Topics API gives people an additional incentive to create deceptive sites and drive traffic to them by deceptive or harmful means. Operators of deceptive sites will see users as Topics piñatas—hit them with something like email spam or a deceptive link, get them to drop valuable Topics, profit. Technically this is no worse than third-party cookies, but third-party cookies are on the way out for a reason, and Topics API is positioned as a longer-term thing.

A new Topics API feature makes it even more friendly to monetizing problem sites. Adtech intermediaries can now obtain valuable topic data on illegal and/or low-reputation sites without allowing the browser to see those sites’ topics. See #92 (comment)

Topics API will enable price discrimination. Topics API would help retail, travel, and other sites identify more or less price-sensitive users based on their interests. And Topics API is more likely to be used for personalized pricing than other data sources, because it looks safer.

Many existing sources of data, such as geolocation or device info, might be correlated with membership in legally protected groups of people. However, Topics API is carefully intended not to be tied to sensitive information, which lowers the perceived risks of using the API for personalized pricing. (see #34)

Topics API discrimination does have some public sector uses that might be acceptable in some jurisdictions but not others. Users in the USA might accept the TSA using Topics API to optimize passenger screening, the IRS using it to select taxpayers for audits, or the CDC using it for public health data collection. (Update 13 Mar 2025) No, wait, they would probably freak out. But some other countries might use it for purposes that are not acceptable to some users there.

Some uses of Topics API outside the conventional publisher/advertiser use cases would be more or less acceptable to users, even if Topics API is successful in removing the ability of a caller to detect a sensitive user characteristic. And some jurisdictions might require use of a public-sector caller by sites—so not all callers are necessarily chosen or approved by the first party.

  • HMOs or public health services classifying patients by healthy/unhealthy habits

  • LMSs classifying diligent and distracted students

  • Tax authorities classifying likely big-spending users for tax audits

More on non-advertising use cases: #216

Topics API could reveal sensitive information or identify individuals in combination with other data. Some privacy concerns for users are covered in a blog post from DuckDuckGo. There are some users who prefer personalized advertising, but a future personalize my ads feature would need to be designed to avoid user harms that would affect both personalizers and non-personalizers.

Inferring Users’ Demographics and Sensitive Interests Using the Topics API by Athicha Srivirote, Muhammad Abu Bakar Aziz, Jeffrey Gleason, Desheng Hu, and Christo Wilson. In this work, we investigate whether the Topics API can be abused to implement a different privacy attack: accurate inferences of users’ demographics and sensitive interests. To answer this ques- tion, we use a real-world dataset of browsing histories—containing over 250,000 unique domains over a span of eight months—to train machine learning models that take topics from the Topics API as input. Of the 19 demographic traits and sensitive interests that we evaluate, we find that all but two show predictive signals. Our findings add to the growing body of evidence that the Topics API is privacy-revealing, not privacy-preserving.

Topics API enables machine learning systems to build profiles of users over time. Private Browsing 2.0 covers why Apple WebKit does not implement this API. You haven’t told any website with access to your email address anything that’s been going on in your family life. But the data broker has been able to read your shifting interests and store them in their permanent profile of you — while you were reading the news. Now imagine what advanced machine learning and artificial intelligence can deduce about you based on various combinations of interest signals. What patterns will emerge when data brokers and trackers can compare and contrast across large portions of the population? Remember that they can combine the output of the Topics API with any other data points they have available, and it’s the analysis of all of it together that feeds the algorithms that try to draw conclusions about you. Apple Safari doesn’t have this specific feature but you still need to turn off advertising measurement

Topics API enables advertisers to discriminate against legally protected groups without an incriminating paper trail. Consider a hiring manager who discriminates against job applicants who have a particular disability. This is illegal in the USA, and an online advertising service that offers advertisers the ability to explicitly discriminate by disability would face consequences.Facebook had to eliminate some targeting features over explicit discrimination—but biased advertisers still exist, and will tend to seek out systems that facilitate discrimination where available. And users who are searching for a job would likely choose not to share information on their disability with web sites.

Topics API will allow a biased advertiser to bypass both legal and user choice protections. A Topics API caller can feed the topics received from a user into a machine learning (ML) system that is simply optimized to get conversions, which in this case are hiring decisions by the biased manager. Using the presence or absence of particular topics for a user, the ML system learns to identify people whose disability would stop them from being hired if they clicked on the ad, applied, and got an interview. And no particular topic would appear sensitive to the user, so even if the user did decide to manually filter their Topics API list, they might not be aware of how the ML system uses apparently non-sensitive topics (or the absence of them) to determine that they should not receive a job ad from a particular company.

In this case the hiring manager does not expect to be able to track any one user individually, or even to receive no applicants with a disability—but is willing to pay extra for an opportunity to advertise in a way that results in reaching fewer applicants with the disability. And the only record of a discriminatory ad placement on either the advertiser or Topics API caller side is inside the ML system, which can be prohibitively difficult to interpret. (More on this problem: browser topics tracking and the prejudiced landlord problem) Related: #221

Martin et el. Respondents did not judge the privacy solution proposed—to have a browser collect data, keep the data on the local device, create inferences for use in advertising —to be a privacy solution over third-party tracking and the use of data brokers in advertising.

Topics API is misrepresented to users. How Google describes Topics API to users: Google Chrome dialog Not disclosed is the fact that it’s an experimental system with unknown discrimination risks. See Google’s own FAQ. Chrome can and will take steps to avoid topics that might be sensitive (i.e. race, sexual orientation, religion, etc.). However, it is still possible that websites calling the API may combine or correlate topics with other signals to infer sensitive information, outside of intended use. Chrome will continue to investigate methods for reducing this risk.

Update: The misrepresentation problem is the subject of a complaint with the Austrian data protection agency from noyb.eu. Google’s internal browser tracking was introduced to users via a pop-up that said “turn on ad privacy feature” after opening the Chrome browser. In the European Union, users are given the choice to either “Turn it on” or to say “No thanks”, so to refuse consent. In a letter to noyb, Google argued that choosing to click on “Turn it on” would indeed be considered consent to tracking under Article 6(1)(a) of the GDPR. In reality, the company concealed the fact that selecting this option would turn on first-party tracking. Full complaint (PDF)

Update: it seems like regulators are on to this one. A recent CMA report recommends a redesign and says, Surface the Topics dialogue box periodically and consider approaches, based on user research, to remind or prompt users to revisit other Privacy Sandbox settings. In a subsequent report, the CMA states:

We are concerned that the Topics consent user interface may not adequately inform users about how their personal data is used or how the topics generated may be used for purposes wider than interest-based advertising (e.g. as determined by organisations that decide to use the API). To address this concern, Google has agreed to update the Topics API consent interface and to strengthen developer guidance to highlight the requirement to obtain purpose-specific consent prior to calling the API. We are awaiting the results of these updates

Topics API does not provide the same privacy guarantees to all users. Beugin and McDaniel: We find that 46%, 55%, and 60% of the 1207 users in the dataset are uniquely re-identified across websites after only 1, 2, and 3 observations of their topics by advertisers, respectively. More literature:

Web page authors

Topics API enables leakage of audience information across sites. The main beneficiaries of Topics API audience data leakage would be sites that advertisers would not choose to support, along with the adtech intermediaries that enable them. Ad revenue that goes to sanctioned, copyright-infringing, brand-unsafe or other problem sites is not available to the authors of legit web pages (and a waste for advertisers, but they’re not on the list of constituencies that I’m using). (More on the persistent problem of ads on copyright-infringing sites)

Example of a copyright-infriging site Topics API is designed to allow Google to continue to transfer valuable audience info from legit sites to confidential sites like this one, which accept less ad money because they use other people’s content. (URL and logo blurred because it’s confidential. Their ads.txt is one line, and their Google ad account id is a multiple of 19.)

Cross-site data leakage is a problem for users because of the incentives covered above, but also a problem for legit web sites because of revenue. (And yes, it is better for users when ad revenue goes to sites they like, and not sites they got tricked into clicking through to.)

Users and legit ad-supported sites share an interest in having advertising pay for the largest possible value in ad-supported content. Meanwhile, Google wants to maximize ad revenue while minimizing the amount paid for content. Topics API is part of a set of projects to help Google come off ahead in this contest. The other parts are a Google service called Performance Max that hides information about what site an ad appeared on from the advertiser, and Google’s decision to run a large number of ads on confidential infringing or brand-unsafe sites without disclosing the domains on an industry-standard file called sellers.json. (IMHO it’s impossible to understand Topics API outside the context of Performance Max and confidential crap sites, but we won’t see the slide that has all three on it until it comes out in discovery in an antitrust case, or gets leaked.)

Topics API is biased in favor of large, general-interest sites. Topics API assigns only one or a few topics to each domain. A niche site that covers one or a few topics would provide significant commercially valuable data to the system, while a large site such as YouTube, that covers every topic, would provide no usable information. This is a pretty obvious problem for competition policy, so I’m kind of surprised they left it in. (See #206 and #224.)

Topics API encourages consolidation of third party services. The more sites that a third-party service runs on, the more useful information it can collect from Topics API. Since an individual site can’t get usable information out of Topics API, sites will have to A/B test different combinations of third-party iframes as callers. Sites will keep callers that provide more good Topics, and drop others. After repeated cycles of A/B tests, where callers that get dropped by one site start providing worse data to other sites and get dropped there too, we would be left with one domain doing all the Topics API calls. (see #82) This is also a pretty glaring antitrust issue.

See also a Google comment on the W3C TAG review: Note that the number of sites that can both call the API, and receive an unfiltered response, is quite small. This is because the caller would have to have observed the user on a site about that topic in the past to get through the filter. The vast majority of sites that can call the API will actually receive an empty list. Topics API is noisy enough to be much more useful for a large third-party caller than for a smaller one. (Is the noise level deliberately tuned to be too noisy to be useful for companies much smaller than Google, but usable at Google’s size?) More discussion of Topics API as a driver of consolidation and centralization in issue #73 Toward an oligopoly of “Topic providers”?.

The Topics API README states that,

One of (Interest-based advertising)’s benefits is that it allows sites that are useful to the user, but perhaps could not be easily monetized via contextual advertising, to display more relevant ads to the user than they otherwise could, helping to fund the sites that the user visits.

This goal can be achieved without the extensive leakage of site audience data made possible by Topics API. (Alternatives moved to a separate section, below.) Web authors and publishers might be able to ameliorate some of the effects of Topics API by, for example, opting out their signed-in users, or opting out of Topics API data collection entirely until YouTube channels are treated as separate areas with their own topic sets, on an equal footing with domains (see #17).

Topics API is designed to be difficult to A/B test. Ad-supported web publishers, and ad services that manage ads for them, generally make a practice of testing the revenue impact of turning different data sources on and off. Unlike other data sources, Topics API is controlled only by a Permissions-Policy HTTP header, which means that turning it off can only be done at page load time, and only with access to the web server or CMS code or configuration. In theory a publisher could choose not to load a script that only called Topics API, but Topics API so far has been combined with other third-party functionality, so needs its own A/B testing control. (#208).

Update 31 Jan 2023: The SEO problem is fixed. (Opting Out Of Google’s Topics API Won’t Affect Search)

User agent implementors

User agent implementors have limited developer and tester time available to implement and support new features. All software projects must leave some good ideas un-implemented in order to devote time to the features they decide to do. And as the feature set of a browser grows, so does the required ongoing maintenance. Choosing to implement and support Topics API, even for a large company, would mean failing to do a useful feature. Some Google Chrome features are good, and out ahead of other browsers. It would be a waste to keep putting time into this one.

Alternatives

There are two alternatives to Topics API that also support the proposal’s intended functionality, that might be wanted by the users who prefer personalized ads.

The main difference is that SDA and FLEDGE both give a gatekeeper role to a party with an incentive to avoid problematic ad placements and data leakage. With SDA, one publisher can control use of data to place ads on other publishers’ sites (audience extension). Depending on how the final version of FLEDGE comes out, a variety of parties could be interest group owners. None of these proposals are complete or perfect, but Topics API appears to be too friendly to good ad/bad site placements to keep pursuing.

What do do about it

How to protect yourself—and also protect desktop users you support and visitors to your web site: Google Chrome ad features checklist