unashamed/ai
All projects · Chrome extension
Chrome extension · Facebook

Facebook Feed: Only Friends & Follows

Strips your Facebook home feed down to just the content you asked for: posts from friends, Pages and people you follow, and groups you are in. Sponsored ads, Suggested for you, People you may know, Reels and posts from accounts you don't follow are removed.

Version1.0.0
Permissionsstorage only
Runs onwww.facebook.com, HTTPS, top frame
NetworkNone

What gets hidden

SignalHow it is detected
Sponsored / AdsThe reconstructed visible "Ad" / "Sponsored" label, or an ad call-to-action button such as "Shop now".
People you may know, Suggested, Reels, Pages for youThe module header's aria-label.
Accounts you don't followA Follow / Add friend / Join button in the post header.

Everything else, meaning friends, Pages and people you already follow, groups you are in and your own posts, is kept. It also switches the home feed to Most recent (chronological) by redirecting facebook.com/ to facebook.com/?sk=h_chr, once per tab session so it can never loop; that can be turned off in the popup.

Why Facebook is the hard one

Facebook actively fights feed filtering, so naive text matching fails. Three specific tricks are worked around:

Options (toolbar popup)

What it can touch

Manifest entryWhy it is there
permissions: ["storage"]Your popup settings, kept in chrome.storage.sync. That is the only permission requested.
host_permissionsNone. Not requested, not needed.
content_scripts.matches: ["https://www.facebook.com/*"]HTTPS only, and only facebook.com. No other site is touched.
content_scripts.all_frames: falseTop-level document only; nothing is injected into embedded iframes.
run_at: "document_start"So the page is filtered as it renders rather than flashing unfiltered first.
content_security_policyscript-src 'self': no remote code, no eval, no inline script.
Zero network requests, zero data sent anywhere. No analytics, no telemetry, no remote config, no remote script. The only network traffic is the site itself loading, exactly as it would without the extension. Your settings live in chrome.storage.sync (so they follow your Chrome profile) and nothing else is stored.

What it does not do

Honest caveats

Security

Follows the repo's shared security guidelines (the OWASP Browser Extension Vulnerabilities Cheat Sheet): storage is the only permission, the content script runs HTTPS-only in the top frame, a strict CSP forbids remote code, no innerHTML or eval, no network calls, and popup↔page messaging checks sender.id. A static audit (tests/owasp-audit.mjs) enforces all of that on every extension in the repo.

Install

  1. Download or clone the repo.
  2. Open chrome://extensions and turn on Developer mode (top right).
  3. Click Load unpacked and choose the chrome-extensions/facebook-remove-anything-i-dont-follow folder.
View the source and README →