factSocial

Fact-check the feed,
on your terms.

A Firefox extension that adds a Fact-check button to every Threads and Bluesky post. Powered by an LLM you control, running locally in LM Studio or via your own OpenRouter API key, with optional web search. Returns an inline verdict with sources, confidence, and a per-claim breakdown.

Download for Firefox v0.1.1 Add to Firefox Coming soon Setup guide
Signed by Mozilla for self-distribution. Requires Firefox 115 or later.
unreliable poster · 1h
Apparently 81 year old Rudy Giuliani, is in the hospital in critical condition.
696 277 11 3 Fact-check
True 95% confidence
Multiple news sources confirm that on May 3, 2026, former NYC Mayor Rudy Giuliani was hospitalized in critical but stable condition. He is indeed 81 years old (born May 28, 1944).
▼ Claims (2)
  • Rudy Giuliani is 81 years old. True. Giuliani was born on May 28, 1944, making him 81 years old as of May 2026.
  • Rudy Giuliani is in the hospital in critical condition. True. Multiple outlets including CNN, USA Today, and the Chicago Tribune reported on May 3, 2026 that Giuliani's spokesperson confirmed he was hospitalized in 'critical but stable condition.'
Caveats: While the post accurately reflects the initial reports of his condition, the specific cause of his hospitalization was not immediately detailed in the initial breaking news reports.
Sources:

What you get on every check

One click on the Fact-check button next to a post, and an LLM walks through the claims, hits the web, and returns a structured verdict that renders directly under the post.

Structured verdicts

True, MostlyTrue, Mixed, Misleading, False, Unverifiable, or Opinion. Each comes with a confidence score, summary, per-claim breakdown, and caveats.

Web-aware

The model can call a web_search tool to verify time-sensitive claims. The live card shows every query and its top results as the search runs.

Yours, end to end

No middleman server, no telemetry. Post text goes only to the LLM provider you chose. Search queries go only to the search provider you chose.

Set up in three steps

The whole thing takes about five minutes. You'll pick an LLM provider, optionally pick a search provider, then start fact-checking.

Install the extension

Click Add to Firefox at the top of the page. Confirm the install prompt. The Fact-check button will start appearing on every post on threads.net and bsky.app.

Pick an LLM provider

factSocial supports two routes. Pick whichever fits your priorities; you can switch any time in the extension's settings.

LM StudioLOCAL

Runs entirely on your machine. No API key, no usage cost, no third-party transmission of post text.

  1. Install LM Studio. In its model search, grab qwen/qwen3.5-9b: a great tool-calling model that runs comfortably on most laptops.
  2. Open the Local Server tab, load qwen3.5-9b, and click Start Server.
  3. Enable the CORS toggle in server settings.
  4. In factSocial settings, leave provider on LM Studio. Click Test connection.

OpenRouterCLOUD

One API key, 200+ models including free options. Start free with minimax/minimax-m2.5:free. No credit needed, and surprisingly good for fact-checking.

  1. Sign up at openrouter.ai/keys and create a key (no payment method required for free models).
  2. In factSocial settings, switch provider to OpenRouter, paste the key.
  3. Set the model to minimax/minimax-m2.5:free to start. Click Test connection.
  4. Want to upgrade later? Add credit and switch to GPT-4o, Claude 3.5, Gemini 2.0, or any of the 200+ paid models. Pennies per check.

Add a web search provider RECOMMENDED

The model can use search to verify time-sensitive claims (current events, breaking news, recent statistics). Without search, it falls back to whatever's in the model's training data, which may be months or years old.

Tavily (recommended)

Tavily ranks results specifically for LLM consumption, so the model gets relevant snippets without scraping. Free tier covers 1,000 searches per month, far more than typical fact-checking needs.

  1. Sign up at tavily.com and grab an API key from the dashboard.
  2. In factSocial settings, scroll to Web search.
  3. Check Enable web search, choose Tavily as the provider, paste the key.
  4. Click Test search to confirm. You'll see the top result echoed back.

Other options: DuckDuckGo (no API key, default; works without setup but is the most fragile and rate-limit prone), or Brave Search (free 2,000 queries/month with a key from brave.com/search/api).

Where your data goes

The extension has no backend. Two destinations only, both chosen by you, both visible in the live progress card on every check.

Post text Sent to your chosen LLM provider on click: LM Studio (localhost) or OpenRouter. Never to factSocial.
Search queries Sent to your chosen search provider (DuckDuckGo, Brave, or Tavily) when the model invokes web_search.
API keys Stored in browser.storage.local and only sent to the provider they belong to. Not transmitted anywhere else.
Telemetry None. The extension has no server, no analytics, no error reporting service.