Audit your site for both search engines and AI. OptiQra crawls your entire website and scores it across SEO, performance, accessibility, security, and conversion signals — plus two new categories that matter now: GEO (generative engine optimization) and AEO (answer engine optimization). ChatGPT, Claude, Perplexity, and Google's AI Overviews now send as much traffic as traditional search. OptiQra tells you if your site is set up to be read, cited, and answered by them.
Live demo · Free, no signup, no accounts
- Crawls entire sites through sitemaps and internal links
- Detects duplicate and near-duplicate content (repeated titles, byte-identical pages, thin/templated content)
- Analyzes links (broken links, internal/external, redirect chains)
- Scans images (missing alt text, lazy loading, responsive
srcset/<picture>usage)
- Meta tags (title, description, canonical, Open Graph, Twitter cards)
- Structured data (JSON-LD, schema.org validation)
- robots.txt and sitemap analysis
- Internal linking patterns and anchor text quality
- Entity grounding — checks for authoritative
sameAslinks (Wikipedia, Wikidata, Crunchbase, LinkedIn, GitHub) that help AI models cite and disambiguate your content - Client-side rendering detection — flags content hidden behind client-side JavaScript that generative crawlers (GPTBot, ClaudeBot) can't see
- Citation-friendliness — analyzes whether pages are structured to be easily quoted and attributed in AI answers
- Crawler access — checks whether AI answer-engine crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.) are allowed or blocked by robots.txt
- Answer-liftable content — detects whether key content is structured to be extracted directly into answers, Q&A format, and featured snippets
- Q&A structuring — validates whether content is formatted to answer common questions about your domain
- HTML/response performance characteristics
- Missing alt text, labels, and ARIA attributes
- Color contrast problems
- Keyboard navigation and semantic HTML issues
- Security headers (HSTS, CSP, X-Frame-Options, etc.)
- Conversion signals and trust badges
- AI-generated fixes — paste an API key (yours to keep) and OptiQra suggests fixes for each issue using OpenAI, Anthropic, Google, Groq, OpenRouter, Mistral, DeepSeek, or xAI
- Site-wide AI insights — generates a strategic summary reasoning across all categories and pages
- Visual crawl tree — hover/click any page to see individual stats
- Export to PDF, DOCX, Markdown, CSV, TSV, TXT, JSON
- Periodic scanning — schedule re-scans (hourly to yearly), get browser notifications, auto-compare against previous results
- PWA + offline — installable, past reports visible without internet
- Paste a URL — any website, any size
- OptiQra crawls it — follows internal links, scans every page
- See results in seconds — visual tree of all crawled pages, scores by category, detailed issue list
- Get AI fixes — (optional) paste an API key and OptiQra generates suggested fixes for each issue using your choice of provider: OpenAI, Anthropic, Google, Groq, OpenRouter, Mistral, DeepSeek, or xAI
Everything runs in your browser. No server sees your data. No account needed.
| Feature | OptiQra | Lighthouse | SEMrush | Ahrefs |
|---|---|---|---|---|
| Full-site crawl | ✅ Free | ❌ Single page | ✅ Paid | ✅ Paid |
| GEO/AEO audits | ✅ Yes | ❌ No | ❌ No | ❌ No |
| AI-generated fixes | ✅ Yes (your API) | ❌ No | ❌ No | ❌ No |
| No signup required | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
| Runs in browser | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
| Free forever | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
| Open source | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
OptiQra's edge: Free full-site crawls + AI-native audits (GEO/AEO) + AI-generated fixes, all in your browser. No accounts, no limits, no subscriptions.
SEO isn't just about Google anymore. ChatGPT, Claude, Perplexity, and Gemini now generate answers that cite (or don't cite) your site. Traffic from AI has already surpassed some traditional search channels for content creators. But most auditing tools haven't caught up — they still measure you against Googlebot alone.
OptiQra fills that gap. It tells you:
- Whether your content is visible to AI crawlers (or hidden behind client-side JS)
- Whether AI models can cite you credibly (via entity grounding)
- Whether your content is liftable into direct answers
- Whether you've allowed or blocked AI crawlers in robots.txt
In a world where one well-placed answer-engine citation is worth more traffic than page-two Google rankings, knowing your GEO/AEO score matters.
- Next.js 16
- React 19
- TypeScript 5
- Cheerio for HTML parsing,
image-sizefor image inspection idb(IndexedDB) for local scan history and schedules, backed by a custom PWA service worker for offline support and periodic-sync scansjspdfanddocxfor report exports- ESLint and Next.js linting configuration
- Node.js 20 or newer (see
.nvmrc) - npm
npm install
npm run devOpen http://localhost:3000 in your browser.
The app runs its built-in audits without any configuration. AI-powered fixes and insights use a provider API key you enter in the UI rather than an environment variable, so nothing needs to be set for those either.
Everything below is optional and only matters if you want error monitoring locally. Create a .env.local in the project root (it's gitignored) and set any of:
| Variable | Purpose |
|---|---|
NODE_ENV |
development / production — set automatically by next dev / next start |
NEXT_TELEMETRY_DISABLED |
Set to 1 to opt out of Next.js telemetry |
PORT |
Dev server port (defaults to 3000) |
NEXT_PUBLIC_SENTRY_DSN / SENTRY_DSN |
Sentry DSN — leave unset and Sentry no-ops entirely |
SENTRY_ORG / SENTRY_PROJECT |
Your Sentry project, for source map uploads |
SENTRY_AUTH_TOKEN |
Only needed in CI/production builds, to upload source maps |
Never commit real values for these — .env.local is in .gitignore for exactly that reason.
npm run dev # Start the development server
npm run build # Create a production build
npm run start # Start the production server
npm run lint # Run ESLint
npm run type-check # Run the TypeScript compiler in check-only mode
npm test # Run the Playwright e2e suite (alias: npm run test:e2e)
npm run test:e2e:ui # Run the e2e suite in Playwright's UI modedocker compose up --buildThe app will be available at http://localhost:3000. A docker-compose.dev.yml and Dockerfile.dev are also included for a hot-reloading development container.
Click ⏱ Schedule this scan on a report (or ⏱ Scheduled scans in the header to manage all of them) to have OptiQra re-scan a URL on a recurring cadence — hourly, daily, weekly, monthly, or yearly. Each run:
- Saves a new report to this browser's scan history, same as a manual scan.
- Optionally compares the new report against the most recent previous scan of that URL — score change, new issues, resolved issues.
- Optionally fires a browser notification with a one-line summary once it finishes.
Scope/limitations, to be upfront about them: this app has no server, database, or user accounts — schedules and their history live entirely in this browser's IndexedDB (src/lib/scheduleStore.ts). A background checker (src/lib/scheduler.ts) runs while any tab of the app is open (or installed as a PWA) and checks every minute for schedules that are due, so you don't need to keep the report on screen or babysit a scan — but scans only fire while the browser process itself is running somewhere. There's a best-effort attempt to register the Periodic Background Sync API on browsers/installs that support it, which can extend this a little further, but that API has no guaranteed interval and isn't available in most browsers — treat it as a bonus, not a guarantee. For true "runs even when nothing is open" scheduling you'd want a server-side cron job hitting /api/analyze instead.
If you paste in an API key for one of the supported providers (OpenAI, Anthropic, Google, Groq, OpenRouter, Mistral, DeepSeek, or xAI), OptiQra can:
- Generate a suggested fix for any individual issue in a report
- Generate a site-wide AI insights summary that reasons across every category and page
Keys are entered per-session in the browser and sent straight to the provider you chose to make the request — OptiQra's own server never sees or stores them.
OptiQra is installable as a Progressive Web App. Completed scans and schedules are saved locally in IndexedDB, so past reports remain viewable offline and survive reloads; a lightweight pointer to your recent scan history is also kept in a capped cookie for fast, synchronous access. See PWA_SETUP.md for the full breakdown of caching strategy, service worker behavior, and what does and doesn't work offline.
Send a JSON body containing a URL:
{
"url": "https://example.com"
}The endpoint returns a report with categories such as SEO, GEO/AEO, performance, accessibility, security, and conversions, along with issue details and scores. Outbound requests are validated against SSRF (blocked private/loopback/link-local IP ranges, including DNS rebinding checks) before being fetched — see src/lib/urlSafety.ts.
Generates an AI-written fix for a single issue, given a provider, API key, and issue details.
Generates a site-wide AI insights summary across a full report.
Verifies that a given provider/API key/model combination is reachable and working.
src/app/page.tsx: the main diagnostic UIsrc/app/api/analyze/route.ts: the analysis orchestration endpointsrc/app/api/ai-fix,ai-insights,ai-test: AI-backed endpointssrc/lib: audit modules — crawler, SEO, GEO, AEO, structured data, performance, accessibility (via HTML audit), security headers, links, images, and duplicate contentsrc/lib/aiFix.ts,aiProviders.ts,aiInsights.ts: multi-provider AI fix and insights generationsrc/lib/reportExport: PDF, DOCX, Markdown, CSV, TSV, TXT, and JSON report exporters, built on a shared format-agnostic report modelsrc/lib/scanStore.ts,scanCookies.ts: local (IndexedDB + cookie) scan historysrc/lib/scheduler.ts,scheduleStore.ts,scanCompare.ts,notifications.ts: periodic re-scan engine (see "Periodic scans" above)src/lib/urlSafety.ts: SSRF protection for outbound crawl/analyze requestsworker/index.ts: custom service worker logic (periodic sync, notification clicks) layered on top of next-pwa
Outbound scan requests are guarded against SSRF, and API keys for AI providers are never persisted server-side. See SECURITY.md for the full policy and how to report a vulnerability.
- Consistent OptiQra branding across package metadata, Docker, and deployment docs
-
.gitignoreand build-artifact cleanup for a clean production checkout -
type-checkscript wired up alongsidelintfor CI/pre-deploy checks - Automated test suite (Playwright e2e —
npm test)
- SEO audit
- Accessibility audit
- Performance audit
- Conversion analysis
- Security header analysis
- robots.txt analysis
- Sitemap analysis
- Structured data detection
- Google Lighthouse integration
- Advanced link analyzer
- Advanced image analyzer
- Open Graph preview
- Twitter card preview
- Security score improvements
- HTTP/2 and HTTP/3 detection
- Core Web Vitals visualization
- Whole website crawler
- Multi-page SEO reports
- Duplicate content detection
- Internal linking analysis
- Broken link detection
- Crawl visualization
- AI website review
- AI generated fixes
- Multi-provider AI support (OpenAI, Anthropic, Google, Groq, OpenRouter, Mistral, DeepSeek, xAI)
- GEO (generative engine optimization) audit
- AEO (answer engine optimization) audit
- PWA / offline support
- Report export (PDF, DOCX, Markdown, CSV, TSV, TXT, JSON)
- Competitor comparison
- Historical scan tracking
- Periodic (scheduled) scans with change detection and notifications
- CI/CD integration
- GitHub pull request fixes
OptiQra aims to grow from a single-page auditing tool into a complete AI-powered website optimization platform — capable of crawling entire websites, identifying issues across both traditional search and generative-engine visibility, prioritizing improvements, generating fixes, and helping developers build faster, more secure, more accessible, and more AI-discoverable web experiences.
Contributions are welcome. Pick up an open issue, start on the next item on the roadmap, or add something you think would make the app better. See CONTRIBUTING.md for setup notes. If you make changes, please keep the audit output shape consistent and verify the app still builds locally.
MIT © ArminNX
