Six steps from play to verdict.
FactLens runs in your browser and only uses external services you choose. Transcription, AI, and Search are configured separately.
Tab audio capture
Once you press Start, FactLens captures audio from the active tab using the Chrome tab capture API. Nothing is recorded before you press Start or after you press Stop.
Real-time transcription
For audio and video sessions, FactLens turns speech into text with your selected transcription provider. Deepgram, Gladia, OpenAI STT, and custom transcription endpoints are transcription choices, not AI fact-checking providers.
Claim detection
FactLens separates checkable factual claims from opinions, personal-state statements, and uncheckable assertions. Only externally verifiable claims move to the next step.
Source retrieval
When Search is on, FactLens sends a short claim-derived query to your selected search provider and returns source URLs and snippets. Blocked sites are filtered out before evidence is shown, and trusted sites are prioritized.
Evidence verification
FactLens sends detected claims, limited context, and retrieved source snippets only to the cloud, self-hosted, or custom AI provider you select.
Evidence card in the overlay
The result appears in the floating panel as an evidence card with a label, source links, and a short explanation. The overlay stays visible during YouTube fullscreen. You can resize the panel or close it any time.
Set up transcript, AI, and search separately.
FactLens has three independent tracks: speech-to-text for audio/video, AI for reasoning and vision, and Search for evidence retrieval. You can combine provider-hosted, self-hosted, and custom services for your workflow.
Where provider keys are configured
Trial: choose each provider in extension Settings and save its key on that device. FactLens Pro: create a named transcription, AI, or search credential in Console, connect it to the required pipeline stage, then bind the matching key once in the extension. Credential names and routes synchronize; API keys remain encrypted on the device.
Audio/video uses transcription, AI, and optional search. Image/post mode has its own AI and optional image-search routes and never uses a transcription credential.
Transcript / speech-to-text
Used only for audio and video sessions. It converts spoken audio into text for YouTube, podcasts, streams, meetings, lectures, and similar pages. It is not used for image or post scanning.
AI / reasoning / vision
Controls how FactLens understands claims, classifies verdicts, and summarizes source snippets. For screenshots, memes, charts, and visual claims, choose a vision-capable AI model.
Search / evidence retrieval
Retrieves live source material for claims. Search can run with AI or without AI. Without Search, FactLens may still detect claims, but it has no live web evidence to ground them.
Transcript options
| Option | Used for | Key needed? | Notes |
|---|---|---|---|
| Deepgram (recommended) | Audio/video transcription | Yes | Fast live transcription. Audio is sent to Deepgram. Not used for image/post scanning. |
| Gladia | Audio/video transcription | Yes | Cloud live transcription. Audio is sent to Gladia. |
| OpenAI STT | Audio/video transcription | Yes | Cloud speech-to-text chunks. Audio is sent to OpenAI. |
| Custom transcription endpoint | Audio/video transcription | Optional | Connect a Whisper-compatible or custom HTTP transcription service that you operate or choose. |
AI / vision options
| Option | Used for | Key needed? | Notes |
|---|---|---|---|
| Self-hosted Models | AI reasoning through a service you operate | Depends | Connect Ollama, LM Studio, vLLM, or another compatible model server. Models run in that service, not inside the FactLens extension. |
| Gemini | AI reasoning + vision | Yes | Use a vision-capable Gemini model for image/post scanning. |
| OpenAI | AI reasoning + vision depending on model | Yes | Choose a vision model when scanning images, screenshots, or posts. |
| Anthropic Claude | AI reasoning + vision depending on model | Yes | Choose a vision model when visual context matters. |
| Custom endpoint | AI reasoning, optionally vision | Depends | Ollama, LM Studio, vLLM, RunPod, Modal, your own proxy, or another endpoint you control. Vision depends on the selected model and endpoint. |
Search options
| Option | Used for | Key needed? | Notes |
|---|---|---|---|
| Search off | No live evidence retrieval | No | Claims may be detected, but they are not web-grounded. |
| Your Browser | Browser search | No | Easiest evidence retrieval. No search API key required. |
| Serper | Search API | Yes | Consistent API search. |
| Brave Search | Search API | Yes | Independent search API. |
| SerpApi | Search API | Yes | Search API provider. |
| Custom Search | Custom retrieval | Depends | FactLens sends a JSON POST body containing {"q":"query"} and reads a results array with URL, title, and snippet fields. |
Configure transcription
Choose how FactLens turns speech into text. This only affects audio/video sessions. Image and post scanning do not use Deepgram or any speech-to-text provider.
Trial users choose Deepgram, Gladia, OpenAI STT, or Custom transcript in Settings > Transcription. Pro users create a transcription credential in Console, connect it to Speech to text in Workspace, then enter its secret locally in Settings > Console sync.
The popup Transcript control shows only compatible transcription choices. Deepgram is not an AI fact-checking provider; it only turns audio into text.
Configure AI and vision
Choose how FactLens reasons about claims. Connect Gemini, OpenAI, Anthropic, a self-hosted model service, or another compatible custom endpoint.
Trial users configure this in Settings > AI provider. Pro users create an AI credential in Console, connect it to the required audio/video or image/post stage, and bind its key locally in the extension.
For a custom provider, enter the HTTP endpoint, exact model identifier, optional key, and test it before starting a session. Image/post mode requires an endpoint and model that accept image content.
Configure search and source preferences
Choose where FactLens gets evidence. Search can run with or without AI. Your Browser needs no key; API search providers can be more reliable for consistent retrieval.
Trial users choose Search off, Your Browser, Serper, Brave Search, SerpApi, or Custom Search in Settings > Search engine. Pro users create a search credential in Console and connect it separately to Source retrieval for audio/video and Image search for image/post checks.
Open Source preferences to add trusted sites, prioritized sites, and blocked sites. Use the popup Search dropdown to switch quickly.
Configure image and post scanning
Open the popup, choose Check Images and Posts, confirm the image-mode AI and Search choices, then click Scan For Posts/Images. FactLens finds visible items, removes duplicates locally, and lets you review what will be checked.
Image scanning is not an audio workflow. It does not use Deepgram. Use a vision-capable AI model for screenshots, memes, charts, and visual claims. Use Search when you want source-backed evidence.
Multilingual posts/images work best with vision models. Text-heavy images can still work through OCR plus Search, but full visual context requires a vision-capable model.
Custom and self-hosted setup.
Use this section for services you operate on localhost, your network, or a private server. FactLens does not include a local model runtime: the service must already be running and reachable from Chrome. Use HTTPS and authentication for any endpoint exposed beyond your own device.
Custom transcription endpoint
FactLens sends short WebM audio chunks as multipart form data and expects JSON containing transcript text. An OpenAI-compatible service such as Speaches can provide the required /v1/audio/transcriptions endpoint.
Example CPU-only Speaches container:
docker run --rm --detach \
--publish 8000:8000 \
--name speaches \
--volume hf-hub-cache:/home/ubuntu/.cache/huggingface/hub \
ghcr.io/speaches-ai/speaches:latest-cpuIn Settings > Transcription, choose Custom transcript, set URL to http://localhost:8000/v1/audio/transcriptions, and enter the exact model identifier accepted by the server. Leave the key blank only when the endpoint does not require authentication. Advanced fields let you change multipart field names or the response text path.
Custom AI endpoint requirements
The simplest option is an OpenAI-compatible /v1/chat/completions endpoint. FactLens sends a model name, messages, and token limit and reads the assistant message as JSON. Native Ollama /api/chat and /api/generate endpoints are also supported.
Use an instruction-tuned model with enough context for the selected prompt and evidence. For image/post checks, both the server and model must support image content; a text-only model cannot interpret the image itself.
If your server uses a different request or response shape, use the custom body template and response text path in Advanced settings.
Ollama tutorial
Install Ollama using its official instructions, pull an instruction model, and make sure its service is running.
ollama pull <model-name>
ollama serveChoose Custom AI, set URL to http://localhost:11434/v1/chat/completions, enter the same model name you pulled, leave the key blank for an unprotected local server, and run Test provider. Ollama accepts image input through this endpoint when the selected model supports vision.
LM Studio tutorial
Download and load an instruction model in LM Studio, then start its server from the Developer tab. The default OpenAI-compatible chat URL is http://localhost:1234/v1/chat/completions.
Choose Custom AI in FactLens, enter that full URL and the exact loaded model identifier, then run Test provider. LM Studio documents its compatible endpoints in the OpenAI compatibility guide.
For image/post scanning, the loaded model and local server must support image input. Text-only local models can still help with text claims, but they cannot fully understand screenshots, charts, or memes.
vLLM tutorial
vLLM exposes an OpenAI-compatible server for supported chat models. Start it with a model that includes a chat template and protect remote deployments with an API key.
vllm serve <model-name> --port 8000 --api-key <private-key>In FactLens, set URL to http://localhost:8000/v1/chat/completions, use the same model name, enter the configured key, and run Test provider. See the vLLM serving guide for supported APIs and chat-template requirements.
Custom search tutorial
Search is separate from the AI provider. Use Your Browser for no-key search, or configure a provider under Settings > Search engine.
A custom endpoint receives POST {"q":"claim-derived query"} and should return {"results":[{"url":"https://...","title":"...","snippet":"..."}]}. Use HTTPS and authentication for remote endpoints.
Use Search when you want source-backed evidence. Use Search in English when the source content is in a language with fewer fact-checking results; FactLens translates the search query before retrieving evidence.
Privacy designed around clear boundaries.
FactLens separates secrets kept on your device, account preferences synchronized through FactLens, and content processed by the providers you choose.
Provider secrets stay on your device
API keys are stored in protected extension storage and are sent only to the provider or custom endpoint they authenticate. FactLens Cloud synchronizes credential names and routing—not the secret values.
Processing follows your configuration
Audio is sent to the transcription service you select. Claims, relevant context, and source excerpts may be sent to your selected AI service. Chosen images or posts may be sent to the configured vision-capable model.
Search is independent and controllable
When Search is enabled, claim-derived queries are sent to the search method you select. Preferred domains are prioritized when relevant, while blocked domains are excluded from FactLens retrieval and evidence selection.
Cloud sync is purpose-limited
Signed-in accounts can synchronize profile details, appearance, credential names, routing, prompts, verdict presentation, source preferences, devices, and session history needed for Console features. Provider keys are excluded.
Session records remain accountable
Synchronized sessions can include transcripts, prompts, provider responses, sources, claims, and verdicts so activity and speaker history remain useful across devices. Pro users can stop future complete-session uploads from Data controls.
Controls exist at every layer
Clear History removes local session history. Console supports export, retention settings, stopping future Pro uploads, and clearing synchronized history without removing workflows or account configuration. Signing out removes the local account session, and uninstalling removes extension-managed storage through Chrome.