ChromeFactCheck is a Chrome extension plus ASP.NET Core backend for fast claim verification. It lets users select text on any page, request a fact check, view a short in-page summary, and open a full report on demand.
- Select text on a page and trigger fact checking.
- Show a short 2-3 sentence summary in a popover.
- Show loading state with spinner while analysis is running.
- Open detailed output only when user clicks
Read more.... - Support configurable LLM provider, endpoint, model, API key, and answer language.
extension/Chrome Manifest V3 extensionsrc/ChromeFactCheck.Api/ASP.NET Core backend (net9.0)ChromeFactCheck.slnsolution file
- .NET SDK 9.0+
- Google Chrome (or Chromium with extension support)
- An LLM API key for configured provider
From repo root:
dotnet run --project src/ChromeFactCheck.Api --urls http://localhost:5053Health check:
curl http://localhost:5053/api/health- Open
chrome://extensions - Enable
Developer mode - Click
Load unpacked - Select the
extensionfolder
Use the extension popup (toolbar icon) or options page:
Backend URL:http://localhost:5053for local developmentProvider:openai,azure_openai, orcustomEndpoint: required forazure_openaiandcustomModel: for examplegpt-4.1-miniAPI Key: stored inchrome.storage.localAnswer Language:autoor explicit locale (en-US,sv-SE, etc.)
- User highlights text on a web page.
- Extension opens the small fact-check prompt/popover.
- Backend receives selection + metadata and runs analysis.
- Extension shows short summary with estimated true/false probability.
- User can click
Read more...to open full report page.
GET /api/healthPOST /api/fact-check/selection
{
"selectedText": "string",
"pageUrl": "string",
"pageTitle": "string",
"locale": "en-US",
"userPreferences": {
"provider": "openai|azure_openai|custom",
"endpoint": "string",
"model": "string",
"apiKeyPresent": true,
"strictness": "low|medium|high",
"answerLanguage": "auto|en-US|sv-SE",
"maxSources": 5,
"trustedDomains": ["wikipedia.org"],
"blockedDomains": ["example.com"]
}
}openai: endpoint optional, defaults tohttps://api.openai.comazure_openai: full chat-completions endpoint required (includeapi-version)custom: OpenAI-compatible endpoint required
- Extension sends key in
X-Llm-Api-Keyheader. - Backend uses it per request and should not persist it.
dotnet build ChromeFactCheck.sln- Edit API and/or extension files.
- Build backend with
dotnet build. - Reload extension in
chrome://extensions. - Re-test by selecting text on a page.
Could not load file 'content.js' ... UTF-8 encoded- Re-save
extension/content.jsas UTF-8 (without BOM recommended).
- Re-save
Cannot find menu item with id ...- Reload extension and ensure context menu is created on startup/install.
- Popup not updating
- Reload extension and check
chrome://extensionsservice worker logs.
- Reload extension and check
- Backend not reachable
- Verify API URL and run
curl http://localhost:5053/api/health.
- Verify API URL and run
- Do not commit real API keys.
- Do not log secrets in API or extension logs.
- Keep provider endpoints explicit in non-default setups.
- Full-page auto-check mode (beyond selected text)
- Retrieval-assisted second pass with source adjudication
- Better citation display and conflict handling between sources