Free GEO & SEO Website Checker
Audit any site against 50+ checks across SEO fundamentals, structured data, AI-search readiness (GEO), and email security — graded A–F with a prioritized fix list. Free, no signup.
What is GEO (Generative Engine Optimization)?
GEO is the practice of structuring a website so AI search engines — Google AI Overviews, ChatGPT, Perplexity, Claude — can accurately cite it in their answers. Traditional SEO wins the blue links; GEO determines whether your content appears when someone asks an AI assistant a question your site should answer. This checker audits both in one pass.
How the scoring works
Every check is pass/fail with an impact weight — Severe 3, Medium 2, Low 1. Your score is the weight of passing checks divided by the weight of all applicable checks; N/A checks are excluded. Grades: A 90%+, B 75%+, C 60%+, D 40%+, F below 40%. Blocker failures (noindex, unreachable, no indexable content) cap the grade at D. Email security is shown for context and does not affect the score.
What we check
- SEO: HTTPS, title/meta description, canonical, Open Graph, heading structure, image alt & lazy-loading, favicon, manifest
- GEO: llms.txt, AI crawler rules in robots.txt (GPTBot, ClaudeBot, OAI-SearchBot, PerplexityBot and more), content-in-HTML, question headings, sitemap
- Structured data: valid JSON-LD, Organization (name/url/logo/sameAs/knowsAbout), WebSite, Article, BreadcrumbList, FAQPage
- Technical: security headers (when readable), mixed content, HTML size, security.txt, robots.txt health
- Email: DMARC, SPF, MTA-STS via DNS-over-HTTPS — informational, not scored
Privacy & limitations
Checks run entirely in your browser. In production, page fetches route through a small serverless function on our domain that returns the real status code and response headers; public CORS proxies are the fallback when it isn't available (e.g. local dev). Either way, don't audit non-public pages containing secrets. If fetch still fails, use the paste-HTML mode — analysis is identical. Response-header checks show N/A when headers can't be read through the proxy.
