Privacy Policy: Clean Feed for YouTube

Last updated
3 November 2026
Made by
Moulin Intelligence ("we", "us")
Contact
labs@moulinintel.com

The short version

Clean Feed for YouTube (“Clean Feed”) is a browser extension that hides videos you do not want in your YouTube feed. It works on your device.

  • We run no server for Clean Feed. We have no database of users.
  • We collect no data about you. There is no telemetry, no analytics and no account.
  • We never see what you watch, what you hide, your rules or your API key.
  • Data leaves your browser only in the cases listed under “What leaves your browser”.

What Clean Feed stores on your device

In the extension’s own storage (chrome.storage.local)

This storage belongs to the extension. Websites cannot read it. It stays until you remove the extension.

What Why
Your settings: which filters are on, word lists, channel lists (with the display names of channels you always show), thresholds, language, LLM provider and model, your plain-language rules So the filters work the way you set them
Your LLM API key, if you add one So Clean Feed can call the provider you chose. It is stored only on this device, as plain text like other extension settings, and is sent only to that provider, with each request to it
The status of the last LLM call and the last YouTube lookup (for example “invalid key” or “rate limited”) and the time it happened, plus internal stop markers (a paused thumbnail check, a settings load failure) So the settings page and the popup can tell you what went wrong
A count of videos hidden per day, for the last 7 days To show “hidden today”
A counter of how many lookups were made today To keep lookups under a daily limit
A timestamp for the once-a-day cache cleanup So expired results are not swept on every worker wake

In temporary extension storage (chrome.storage.session)

This storage is cleared when you close the browser.

What Why
A “wait before retrying” marker To slow down when YouTube asks us to
Ids of videos YouTube reported as unavailable So Clean Feed does not keep asking for gone videos
A short log of recent errors and warnings (the last 200, with any API key scrubbed out) So problems can be diagnosed if you report a bug. It is never sent anywhere

Caches in your browser (IndexedDB, database “cleanfeed”)

Cache What is in it Used for up to
Lookups For a video: its title, channel name and id, whether YouTube labels it as made with AI and the label’s own text, its description, category and keywords 30 days; 180 days if the video was labelled AI
Thumbnail scores Numbers from the on-device models (faces, surprise, NSFW scores, colour saturation) 30 days; 180 days if a score was high
LLM answers For a video and a rule set: hide or keep, a 2 to 5 word reason, and which of your rules matched 30 days
Hidden videos Video ids Clean Feed decided to hide, the reason, and which channel the video came from Until you remove the extension or clear the browser’s data for it
Hidden today The ids of videos hidden today, so one video is not counted twice Replaced each day

The cache holds ids and results, not your watch history. Failed lookups are not saved as results. Results older than the times above are ignored and fetched again, and a once-a-day cleanup deletes them. The last two rows have no expiry; they and everything else are deleted when you remove the extension or clear the browser’s data for it.

One thing stored on youtube.com itself: yft:cfg

To hide videos before YouTube draws them, Clean Feed has to know your filter settings the moment a YouTube page starts to load. The extension’s own storage is too slow for that. So it keeps a copy of part of your settings in youtube.com’s localStorage, under the key yft:cfg.

YouTube’s own scripts can read this copy. That means YouTube can see it.

What the copy holds: your on/off switches, which feed surfaces are covered, your word lists, channel lists and thresholds, whether blocked videos are hidden or blurred, and whether LLM filtering is on or off.

What it never holds: your API key, your LLM provider, model or address, your plain-language rules, the display names of your allowed channels, or anything about what you watched.

You can see and delete this key in your browser’s developer tools (Application, Local Storage, youtube.com). Removing the extension does not remove it, because the browser keeps site data separately, and Clean Feed has no way to clear it for you. Clear youtube.com’s site data to be sure.

What leaves your browser

1. Requests to YouTube

Clean Feed makes some requests to YouTube from your browser. We do not see them.

  • Video lookups. For feed videos on or near the screen, Clean Feed asks YouTube’s internal API (youtube.com/youtubei/v1/next) for the video’s AI label and description. This is how it finds videos YouTube marks as made with AI. To make these calls it reads the page settings YouTube gives its own page (client name and version, region, interface language, and the public web-client key) and holds them in memory while the background worker runs; they are never written to storage. These lookups are anonymous: they are sent without your YouTube cookies or sign-in and without YouTube’s visitor identifier, so they are not linked to your YouTube account. Each lookup carries the video’s id, YouTube’s public web-client name and version, the language English, your region code, and YouTube’s public web key, which is the same for everyone. Like any web request, a lookup still reaches YouTube from your IP address with your browser’s standard headers. Lookups are limited to 1,500 a day, and they slow down and stop when YouTube throttles them or they keep failing.
  • Thumbnails. Clean Feed loads thumbnail images from YouTube’s image host (i.ytimg.com) to score them on your device. If you turn on the option to swap clickbait thumbnails for real video frames, it loads those frames too.

2. Your chosen LLM provider (optional, off until you add a key)

If you add an API key and turn on plain-language rules, Clean Feed sends batches of videos from your feed to the provider you choose, using your key, to ask whether each one matches your rules. For each video it sends:

  • the video’s id, title, channel name, a short piece of the description, the length and any YouTube badges, all read from YouTube’s own data rather than what is on screen;
  • the thumbnail, only if you allow “Also send thumbnail images” and the provider accepts images;
  • your plain-language rules.

It does not send your name, your account, your watch history or anything else. Each provider has its own privacy policy, and it applies to what you send. Clean Feed does not control it.

Provider Address Clean Feed calls Privacy policy
Google Gemini generativelanguage.googleapis.com https://policies.google.com/privacy and https://ai.google.dev/gemini-api/terms
Anthropic api.anthropic.com https://www.anthropic.com/legal/privacy
OpenAI api.openai.com https://openai.com/policies/privacy-policy
OpenRouter openrouter.ai https://openrouter.ai/privacy
A compatible model on your own computer (Ollama, LM Studio) localhost or 127.0.0.1 Nothing leaves your machine

Clean Feed asks the browser for permission to reach a provider only when you pick it.

3. Nothing else

Clean Feed sends nothing to Moulin Intelligence or any other third party. There are no analytics, no crash reports and no advertising. We do not sell your data or transfer it to anyone. What Clean Feed sends goes only where this page says, and only to filter your feed. Clean Feed’s use of data follows the Chrome Web Store User Data Policy, including its Limited Use requirements.

What runs on your device only

The models that look at thumbnails (a face and expression detector and an NSFW detector) are included inside the extension and run in your browser. Thumbnails are not uploaded for this. If a model cannot run or keeps failing, that check is skipped and videos stay visible rather than being hidden on a guess.

Debug info and feedback

  • Copy debug info puts text on your clipboard: the extension version, your browser and interface language, your settings without your API key, and the last few errors. It sends nothing anywhere. What you do with it is up to you.
  • Send feedback opens your own mail app with a new message to us. Nothing is sent unless you send it. If you do, we receive what you wrote and your email address.

Permissions and why

Permission Why
storage Save your settings, key, counters and caches on your device
offscreen Run the on-device thumbnail models in a hidden extension page, because the background worker cannot
declarativeNetRequestWithHostAccess Adjust the sender label (the Origin header) on the extension’s own background requests: set it on lookups to YouTube’s video-details endpoint, which rejects requests that come from an extension, and remove it on calls to a compatible model server on your own computer, which rejects extension origins. It applies to no web page, tab or other traffic, and it blocks nothing
Access to www.youtube.com Read and filter the feed on YouTube pages and ask YouTube for AI labels
Access to i.ytimg.com Load thumbnail images to score them
Optional: api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai Reach the LLM provider you choose. Asked for only when you pick one
Optional: localhost and 127.0.0.1 Reach a model running on your own computer

Your choices and deleting your data

  • Pause Clean Feed or turn the main filters off from the toolbar popup; the rest is in the settings page.
  • Clear your API key in the settings page at any time.
  • Remove the extension to delete its storage, key, caches and counters.
  • Clear youtube.com’s site data (or delete yft:cfg) to remove the settings copy described above.

Children

Clean Feed is not directed at children and does not knowingly collect any data.

Changes

If we change this policy we will update this page and the date at the top. If a change affects what leaves your browser, we will say so in the extension’s release notes.

Contact

Moulin Intelligence, labs@moulinintel.com