A quieter X timeline.
Hide rage-bait, hustle-bro money posts, AI doom, crypto shilling and engagement-farming from your X/Twitter feed — with one click, or your own plain-language rules.
No account. No tracking. Nothing leaves your browser.
Your feed shapes your mood. But X is full of posts engineered to provoke you — "I made $10k in 30 days", "AGI is here, RIP your job", "repost if you agree", rage-bait, token pumps. You didn't choose to see them; the algorithm did.
calmfeed quietly hides them while you scroll, so your timeline is the one you want — not the one designed to keep you angry and addicted.
Toggle the categories you're tired of:
- Hustle-bro / get-rich — money gurus, grindset threads, "passive income"
- Rage-bait / outrage — posts built to make you angry
- AI doom / hype panic — "this changes everything", "RIP your job"
- Crypto shilling — 100x calls, token pumps, NFT promos
- Engagement bait — "repost if you agree", reply-farming
…and add your own rules in plain words:
football→ hides any post mentioning footballelon + mars→ hides posts that mention both elon and marstaylor swift, world cup→ add several rules at once
Hidden posts collapse into a slim "🌿 hidden by calmfeed" line you can click to reveal — nothing is deleted, you stay in control.
calmfeed isn't on the Chrome Web Store yet. To use it today:
- Download this repo (green Code button → Download ZIP) and unzip it.
- Open
chrome://extensionsin Chrome (or Edge / Brave). - Turn on Developer mode (top-right).
- Click Load unpacked and select the unzipped
calmfeedfolder. - Open x.com — pin the 🌿 icon and choose what to hide.
Works on Chrome, Edge, Brave, and any Chromium browser.
calmfeed runs entirely in your browser. It reads the text of tweets only to
decide whether to hide them, and it stores your settings locally
(chrome.storage). It has no server, sends no data anywhere, and has no
analytics. The code is right here — read it.
It's rule-based, not an AI call — so it's instant, free, and offline. Each
category is a small set of weighted signals; a post is hidden when it crosses a
threshold. That keeps false positives low and every decision explainable. See
filters.js.
This also means it's not magic: it catches the obvious stuff, not every clever variation. That's the honest trade for being instant and private.
- It matches text, so image-only bait slips through.
- A determined poster can phrase around the signals.
- It's tuned for English out of the box (custom rules work in any language).
- A future version may add optional smarter matching — see issues.
Seeing something that should be hidden but isn't (or the reverse)? Open an issue with the post text and the category. Signal tuning is the most useful contribution.