A browser extension that tells you whether an image was AI-generated, as you browse. Runs entirely in your browser — no images are uploaded, no account needed.
Download lens-1.1.0.xpi — direct install, no store account needed.
Our Chrome Web Store listing is under review. In the meantime:
- Download and unzip lens-1.1.0.zip to a permanent folder
- Go to
chrome://extensions/and enable Developer mode - Click Load unpacked → select the unzipped folder
- You can turn Developer mode off again after installing
Requires Xcode packaging via xcrun safari-web-extension-converter. We're working on an App Store submission.
Lens overlays a small badge on every image it analyses. Hover the badge to see why.
| Badge | Meaning | Confidence |
|---|---|---|
| 🔴 AI Generated | Strong evidence — verified C2PA metadata, known AI tool signature, or frequency watermark | ≥ 90% |
| 🟠 Likely AI | Multiple corroborating signals | ≥ 70% |
| 🟡 Possible AI | One or more weak signals | ≥ 45% |
| 🟢 Probably Real | Very weak signals, likely a false alarm | ≥ 20% |
| 🔵 No AI signals | Nothing detected | < 20% |
Lens runs up to four checks on every image, stopping as soon as it's confident:
- URL & filename — recognises known AI image CDNs (OpenAI, Midjourney, Stability AI, Adobe Firefly, xAI, Bing Image Creator, etc.) and filename patterns
- Metadata — reads EXIF software tags, XMP
CreatorTool, IPTCDigitalSourceType, and embedded C2PA Content Credentials - Pixel statistics — analyses noise patterns, gradient smoothness, and inter-block noise correlation to catch AI generation artifacts without metadata
- Frequency analysis — detects spread-spectrum watermarks including Google SynthID
For a detailed technical explanation see WHITEPAPER.md.
- Social media (Twitter/X, Instagram, Facebook) strips metadata on upload — pixel and frequency checks still run but are weaker
- FLUX and untagged SDXL produce pixel statistics that overlap with real photographs — without C2PA or a telltale filename, Lens may not flag them
- Images behind strict CORS policies may not be decodable for pixel analysis
- No images or data ever leave your browser
- No account, no telemetry, no analytics
- Image bytes are analysed in memory and immediately discarded
- Only URL hashes are cached for the duration of your browser session
No build step. Plain ES modules that run directly in the browser.
npm install # test dependencies only
npm run fixture:download # download test images
npm test # unit tests (no browser needed)
npm run test:integration # full integration testsSee CLAUDE.md for architecture details and how to add new detection signals.
Issues and PRs welcome, especially:
- Detection signals for models not currently caught (FLUX, untagged SDXL)
- False positive reports with a URL or image
- New AI model fixture images for the test suite
Please open an issue before a large PR.
MIT — see LICENSE
Built by The Vger Group