What the extension can see#
The extension is a content script: it runs inside the page you are looking at, on the sites below and nowhere else, and it reads what that site has already rendered for you — the posts, comments or chat turns on screen, their authors, timestamps, permalinks and attached media references. It reads the page the way your eyes do. It does not open other pages, does not follow links, and does not run in the background on a site you are not looking at.
On any other website it runs only when you explicitly summon it (the toolbar popup's “Annotate this page” or its keyboard shortcut), for that one page, to label the article, a passage you highlight, or a reader comment under it.
The sites#
| Platform | Sites |
|---|---|
| X | x.com, twitter.com |
| YouTube | youtube.com |
| Rumble | rumble.com |
| TikTok | tiktok.com |
| reddit.com, old.reddit.com | |
| instagram.com | |
| facebook.com | |
| 4chan | boards.4chan.org, boards.4channel.org, archive.4plebs.org |
| 8kun | 8kun.top |
| Bluesky | bsky.app |
| linkedin.com | |
| Mastodon and Truth Social | mastodon.social, truthsocial.com |
| Platform | Sites |
|---|---|
| ChatGPT | chatgpt.com |
| Claude | claude.ai |
| Grok | grok.com |
| Gemini | gemini.google.com |
| DeepSeek | chat.deepseek.com |
| Qwen | chat.qwen.ai |
When anything is sent#
Nothing leaves your browser until you act. Three actions send something, and only these three:
- Annotate — you label a post and press Submit.
- Flag — you mark a post for someone else to look at.
- Share — you add a post's link to your team's queue.
Scrolling, reading, searching and opening pages send nothing. The one read the extension makes on its own is a lookup of the identifiers of the posts on screen, so it can show you which are already annotated — numbers only, never content, and not kept as a history. An optional coverage counter (off unless you switch it on in Settings) sends how many posts you scrolled past, as a number.
What is sent#
When you annotate, flag or share, one record goes to the project's service:
- The post — its text, its URL, its platform id, its timestamp.
- Its public author — the handle and display name shown on the page.
- The context you selected — the replies above it that you chose to attach, when you chose any, so a label about a reply can be read against what it answers.
- References to its media — the addresses of images or video on the post, so a reviewer can see what was actually posted. For an image or video an AI assistant generated, the file itself, read from the page at the moment you annotate it, because its address works only in your browser.
- Your annotation — the answers you gave to your organization's question set, and any note you typed.
- Your account identity — who made the record, the team and project it was filed under, and the build of the extension that made it.
You see all of it before you submit: the editor shows the post it captured and every question it is going to record.
What is never sent#
- Your cookies, sessions or passwords for any site.
- Who you follow, your feed, your bookmarks, your account settings.
- Your browsing — what pages you visit, or when.
- Private messages: the extension does not run in DMs or inboxes, and it refuses to be summoned onto them.
- Your own prompts to an AI assistant, unless you flag a conversation — then, and only then, the flagged passage and the prompt that elicited it travel with the flag, because nobody else could open that conversation to see them. The extension asks you first.
- Anything from a site you did not ask it onto.
Where it goes and who reads it#
Records go to one place: the AddressHate project's own service, into your organization's own tenant — a separate database partition that other organizations using the tool cannot read. Within it:
- You see your own work, and your team's, where your organization lets annotators see each other's.
- Reviewers and leads in your organization see the team's work to review, compare and export it.
- AddressHate administrators operate the service and can reach every tenant for support and maintenance; they do not annotate or publish your organization's data.
Nothing is sold, shared with a data broker, or used for advertising. Publication of research findings is described in the Terms of use.
AI features#
Two optional features send a post to an AI model: Explain (a plain-language reading of why a post might be hateful) and Pre-annotate (a suggested label you can compare against). Both run only when you press their button, on the one post you pressed it for, and their answers are shown to you as a second opinion — they never fill in your annotation and never submit anything.
On this deployment the model behind them is HateAPI. Providers are used under settings that exclude your submissions from model training, and what is sent is the post's text and its selected context — never your account identity.
Retention and deletion#
Account data is kept while your account is active and removed when you delete it. Annotations are kept for the life of the research project, because removing them retroactively would invalidate published findings; when you delete your account they are detached from you and attributed to a random pseudonym instead, and you can ask for full erasure. Every route is on the Data deletion page, and the detail is in the Privacy policy.
Annotator accounts and ethics review#
The extension annotates in place, so it sees whatever the platform shows the account you are signed into on that site — and the platform, in turn, sees that account reading the posts. For a study, that account should be the study's, not the annotator's own. We recommend:
- An institutional platform account per study, registered to the lab or department rather than to a person, used only for annotation work. What the platform records is then a research account's activity.
- A dedicated browser profile for that account, with the extension installed there and nowhere else, so the annotator's personal sign-ins, history and cookies are in a different profile the extension cannot see.
- An annotator account with us under an institutional email, created by your organization's lead. That identity is what appears on your records; your organization decides who else may see it named.
For an ethics review: the material collected is public posts and the annotator's own judgement of them, plus — only when an annotator flags an AI conversation — a passage of that conversation. No platform account credentials are read or stored, no private messages are collected, and annotators are adults who have accepted the Terms of use and completed a short setup questionnaire (education level, field, organization) that describes the annotator pool in aggregate.
Methods, in one paragraph#
Annotators label posts in situ: the extension captures the post as rendered, together with the thread context the annotator selects, and the annotator answers the organization's question set in an on-page editor. A post may be annotated by any number of annotators independently; each keeps one current annotation per post, and re-annotating supersedes rather than duplicates it. Reviewers see disagreements post by post, approve or return annotations with feedback, and every annotation is retained rather than resolved to a single winner. Inter-rater reliability is computed by the service from the current annotations — Cohen's κ for two raters, Fleiss' κ for a fixed rater count, and Krippendorff's α where raters are missing per item — and reported per field of the question set, with an undefined statistic reported as such rather than as zero.