Who's Who Privacy Policy
Effective
Who’s Who does not send your data to any server. This is not a promise not to upload — the extension simply contains no code path capable of making a network request, and 27 automated assertions verify that continuously.
In one sentence
All data stays in a local database inside your own browser. No account, no server, no analytics, no third-party SDKs. The developer cannot see any of your data.
What is stored, and where
Data is kept in the extension’s own IndexedDB (database name whoswho), not in x.com’s storage. That means X’s page scripts can neither read nor delete your records, and clearing x.com site data will not wipe them.
| Data | Location | Who can read it |
|---|---|---|
| Private labels and notes | The extension’s IndexedDB | Only this extension |
| Saved opinions (including post snapshots) | The extension’s IndexedDB | Only this extension |
| Interaction records (reply / quote / repost / like counts) | The extension’s IndexedDB | Only this extension |
| Display settings | The extension’s IndexedDB | Only this extension |
| Username → numeric ID mapping | Memory only; gone when the tab closes | Only this extension |
| Post ID → author mapping | Memory only; gone when the tab closes | Only this extension |
What is never stored
- Unrecorded accounts you merely scroll past — nothing is captured automatically. A record is created only when you act deliberately, such as adding a label or saving an opinion.
- Interactions from unrecorded accounts in your notifications — not saved by default. Widening that scope requires an explicit choice in settings.
- Your X password or login credentials — never requested. There is no password field anywhere in the source.
- Cookies, Authorization headers and CSRF tokens — never read. A static assertion enforces this.
Permissions requested, and why
| Permission | Purpose |
|---|---|
storage | To keep your labels, notes and counts on your device. This is the only browser permission requested. |
https://x.com/* | The extension runs on X only. It never activates on any other site. |
The extension does not request cookies, tabs, webRequest, history or other broad permissions, and declares no web_accessible_resources (it exposes no extension resources to arbitrary sites).
About the read-only patch on network APIs
Stated plainly: this is the only place in the extension that references a network API. Its boundaries are covered by 14 unit tests, including an assertion that it applies to X’s endpoint alone.
To attach labels to a person rather than to a username they can change at any time, the extension needs the numeric ID behind a username. X only exposes that mapping inside its own API responses, so the extension applies a read-only patch to the page’s fetch and XMLHttpRequest in order to parse responses to requests X’s own page has already sent.
- It calls the original API and returns its result unchanged, altering neither timing nor content.
- It initiates no network requests of its own.
- It reads no request headers, and therefore never touches cookies or Authorization.
- It applies only to X’s GraphQL endpoint and ignores every other address.
- What it parses is used inside the extension only and is sent nowhere.
What “backfill past interactions” does
Only when you press the button, the extension opens an inactive background tab loading X’s own site search page, reads the publicly visible replies and mentions there, and closes it.
Throughout, the page making requests is X’s, not the extension’s. The address is assembled by the extension itself and can only ever be an X search page. The feature needs no extra permission and runs only when you trigger it.
Sharing, sale, and limits on use
- Your data is never sold, nor transferred for advertising or any other form of monetisation.
- It is never shared with any third party — which is also technically impossible, as the extension has no way to transmit anything.
- It is never used for anything unrelated to the extension’s function, including creditworthiness, lending decisions or similar assessments.
- The extension contains no analytics, telemetry, crash reporting or advertising SDK.
- It loads no executable code from remote sources (no
eval, no dynamic script injection).
Your control over the data
- Export: the settings page writes all of your local data to a single JSON file.
- Delete: the settings page wipes all local data in one step.
- Uninstall: removing the extension makes the browser delete its local database along with it.
- Because the data never leaves your device, there is no such thing as “requesting deletion from the developer”. You hold complete control already.
About the information you record on other people
This extension exists so you can keep private notes on accounts you encounter on X. Those notes live only on your own device. Nobody else can see them, and the people you label are never notified.
Please also keep in mind that you are recording information about other people. What you record, and how you use it, is your decision. If you are in a jurisdiction with specific requirements around handling personal data, please assess for yourself whether your use complies with local law. The developer has no access to this content and cannot manage it on your behalf.
Changes to this policy
If this policy changes materially, the effective date at the top of the page will be updated and the change will be noted in the extension’s release notes. Previous versions remain available in this site’s version history.
Contact
If you have questions about this policy or how data is handled, email me directly.
geluu.dev@gmail.com