Privacy Policy
Last updated 23 October 2026. Covers the Feedray browser extension and this website.
In short
- I never see your Threads password. The extension runs on top of the session you already have open in your browser.
- Private data is not read: no direct messages, no notifications, no drafts, no account email.
- Settings and caches stay in your browser's local storage, on your own machine.
- No analytics, trackers, ads or A/B tests - neither in the extension nor on this page.
- Nothing is sold or handed to third parties.
What the extension reads
It is a Manifest V3 content script running on threads.com and
threads.net. It reads exactly the data Threads already sent to your browser for
the page you have open:
- public usernames, follower and post counts, view counts and profile descriptions - from the responses Threads loads for its own feed, and from the public profile page when those responses don't carry enough;
- the text of the post you are writing yourself, so it can show a character counter and split the draft into a thread when you ask (the draft never leaves your browser);
- your own username, read from the page, for the fair-use limits of the AI analysis.
It does not read your direct messages, notifications, saved posts or account settings.
What is stored locally
In chrome.storage.local, on your device only:
- your settings: feature toggles, interface language, spoiler words, OpenRouter key and the model you chose;
- a 24-hour cache of public author data, so the same profile isn't fetched again on every scroll;
- a 24-hour cache of the AI prompt template;
- a random install ID created on the first run. It is shown at the bottom of the settings panel, so you can see exactly what identifies your copy of the extension.
None of it leaves your device unless you switch the AI analysis on yourself.
Network requests
The extension talks to three external hosts, all listed in the manifest's
host_permissions.
1. threads.com / threads.net
Here the extension runs on the page and reads what the page loaded. When an author's numbers are missing, it fetches that author's public profile page, at most one every 1.5 seconds. It never posts, likes or follows on your behalf.
2. feedray.dev - my analyzer, opt-in
Used only when the AI analysis is enabled and you have not supplied your own OpenRouter key:
POST /api/analyze- sends the username of the author being checked, the text and IDs of their recent public posts, your own username and the install ID (for fair-use limits) and the interface language. Returns a score from 1 to 100, a short explanation and up to 5 tags. The extension keeps the answer in memory for 30 minutes.GET /api/ai-analyze-prompt- only with your own OpenRouter key, at most once a day, to fetch the prompt template. Only a language code is sent.
What the server keeps: the post text is used for the answer and not stored. Your username and install ID are recorded with each check (time, result, number of posts, model and cost; no post text, no name of the checked author) to monitor usage and enforce fair-use limits, and the record is deleted after 90 days. The result (score and tags, no post text) is cached for up to 6 hours, keyed by the checked author and post IDs, so the same author isn't analysed twice. IP addresses are not stored: request logs contain none, and only the server's error log can record the IP of a request that failed. Nothing is used to train models. The site and the API are delivered through Cloudflare, which processes your IP address to route the request. To produce the answer, the server sends the post text to a language model through OpenRouter.
The score is an estimate of how likely the posts were written with an AI tool, not a verdict about a person. Detectors make mistakes, and people who simply write clean, even text can get a high score.
3. openrouter.ai - third party, opt-in
Contacted only when you have entered your own OpenRouter key. In that mode requests go straight from your browser and never pass through my servers:
GET /api/v1/models- the model list with current pricing for the dropdown;POST /api/v1/chat/completions- the analysis itself, through the model you picked, with your key;- a single one-token validation request while you are typing the key, to check that it works.
The key stays with you and is never sent to me. OpenRouter's own privacy policy applies to those requests.
What I don't do
- No telemetry, pings or install reports.
- No analytics SDKs and no cookies of my own.
- No third-party requests: no Google Analytics, no Sentry, nothing of that kind.
- No collection of payment or health data, location, or browsing history outside Threads.
Permissions and why they exist
| Permission | Why |
|---|---|
storage | Keeps settings and caches in the browser's local storage. |
threads.com, threads.net | Run on Threads pages and inject the interface. |
feedray.dev | Server-side AI analysis; switched on by hand. |
openrouter.ai | Analysis through your own model; switched on by hand. |
What you control
- Turn the AI analysis off in the settings and requests to
feedray.devandopenrouter.aistop completely. - Clear your OpenRouter key and analysis falls back to my server, or stops entirely if the feature is off.
- Remove the extension at
chrome://extensions/and the browser wipes all of its local storage for you.
Children
The extension is not directed at anyone under 13, and I do not knowingly process their data.
Contact
Privacy questions go to the project account on Threads: @PLACEHOLDER_THREADS_ACCOUNT_EN.