Chrome extension · Persian-language news
Reads the article.
Marks the loaded words.
Shows its work.
Redline scans the Persian news article you're reading, flags language written to sway rather than inform, and swaps it for neutral phrasing in place — with the reason visible on hover. Nothing about the underlying facts changes, only the wording.
How it works
Two passes, doing two different jobs
A word list can safely judge a blanket label. It can't judge a whole sentence built on a slanted premise. So Redline doesn't ask one system to do both.
A public, editable dictionary
A curated list of unambiguous label swaps — the kind that don't need sentence context to judge — applies the moment the page loads. No network call, no API key, no waiting. Kept deliberately symmetric: labels from state-aligned coverage and from opposition/diaspora coverage both appear in it.
An AI pass for judgment calls
Loaded adjectives, unverified claims stated as fact, a sentence built on a slanted framing — these need context a static list can't have. With a Gemini API key (yours, stored only on your device), Redline reviews the full article and reports what it finds, flagged separately from the instant pass.
Transparency
The dictionary is public, and it's not a black box
"Bias" is a word worth being suspicious of in a tool that claims to detect it. So the instant-pass word list ships as a plain, readable file in the repository — every entry, every reason, editable by anyone. A few real rows from it:
"rioters"
"protesters"
assumes guilt instead of describing neutrally
"the regime"
"the government"
political label instead of a neutral one
a slur for clergy
"cleric"
derogatory label instead of a neutral one
"fugitive"
"resident abroad"
derogatory label instead of a neutral one
210 entries as of this writing, across government-legitimacy, protester, loyalty, identity, media, and security labels — deliberately limited to blanket labels rather than context-dependent claims, and deliberately excluding swaps that would themselves assert a contested position rather than remove one. The full list and the reasoning behind what's excluded are in dictionary.js.
Privacy
Nothing leaves your browser unless you turn it on
- Phase 1 is fully local. The dictionary pass never makes a network request.
- Phase 2 only runs if you add your own Gemini API key. That request goes straight from your browser to Google — the article text is never sent to, seen by, or stored by Redline's developer.
- Your API key stays on your device, in Chrome's local extension storage. It's never synced or transmitted anywhere except to Google's API, by you, when you use Phase 2.
- No analytics, no tracking, nothing sold.
Install
Get it running
- From the Chrome Web Store (once published) — click Add to Chrome above.
- Or load it unpacked — download the latest release zip, unzip it, open
chrome://extensions, enable Developer mode, and click Load unpacked. - Turn it on from the toolbar icon. The dictionary pass runs immediately; add a free Gemini API key in the popup for the deeper AI review.