Agent readiness report

example.com

Scanned 2026-08-23 21:04 UTC 1 pages checked of 1 discovered wvjyzpwf0hw2 Engine v2.0
Rescan Compare
Agent Readability vercel
28/100Needs Improvement
Better than 43% of 7 sites scanned · 10 of 36 checks passed
llms.txt llmstxt.org
0/100Needs Improvement
0 of 10 lint rules
Accessibility A1–A23
89/100Good
8 of 9 rules · homepage static DOM · does not affect main score
Markdown readiness accept-md
0/100No Markdown
Accept: text/markdown → HTTP 200 text/html
L0 Not Agent Ready Not yet discoverable by agents. Next: Publish robots.txt.

Next level Level 1 · Basic Crawlability

3 changes unlock Level 1.

  1. Publish robots.txtAdd /robots.txt with a User-agent: * group and a Sitemap: line (any 2 of 3 missing basics) S7
  2. Publish a valid sitemap.xmlServe /sitemap.xml as a valid urlset with <loc> and <lastmod> per page (any 2 of 3 missing basics) S8
  3. Send Link headers on the homepageSend an HTTP Link header on / advertising the markdown alternate and llms.txt (rel=alternate/describedby) (any 2 of 3 missing basics) B3

Site-wide

3 passed · 11 failed · 1 n/a

llms.txt

/llms.txt
4 failed
Failed llms.txt exists S1 No llms.txt found at /llms.txt, /.well-known/llms.txt, /docs/llms.txt or /llms-full.txt

How to fix

# example.com

> One-paragraph summary of what the site offers.

## Docs

- [About](https://example.com/about.md): What we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude No llms.txt found at /llms.txt, /.well-known/llms.txt, /docs/llms.txt or /llms-full.txt
Required · siteSpec: llmstxt.org
Failed llms.txt served as text/plain S2 llms.txt not found

How to fix

# example.com

> One-paragraph summary of what the site offers.

## Docs

- [About](https://example.com/about.md): What we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Required · siteSpec: llmstxt.org
Failed llms.txt is non-empty S3 llms.txt not found

How to fix

# example.com

> One-paragraph summary of what the site offers.

## Docs

- [About](https://example.com/about.md): What we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Required · siteSpec: llmstxt.org
Failed llms.txt links do not point at .html files S4 llms.txt not found

How to fix

# example.com

> One-paragraph summary of what the site offers.

## Docs

- [About](https://example.com/about.md): What we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Recommended · siteSpec: llmstxt.org

robots.txt

/robots.txt
2 passed1 failed
Passed robots.txt allows AI crawlers S5 No robots.txt — all crawlers allowed by default

Evidence

  1. fetch GEThttps://example.com/robots.txt → 404 · Content-Type: text/html · 11 ms — GET /robots.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse robots.txt not available (HTTP 404); nothing restricts AI crawlers
  3. conclude No robots.txt — all crawlers allowed by default
Required · site
Passed /llms.txt is not blocked by robots.txt S6 No robots.txt — /llms.txt is reachable

Evidence

  1. fetch GEThttps://example.com/robots.txt → 404 · Content-Type: text/html · 11 ms — GET /robots.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse robots.txt not available (HTTP 404); nothing can block /llms.txt
  3. conclude No robots.txt — /llms.txt is reachable
Required · site
Failed robots.txt exists S7 robots.txt returned HTTP 404

How to fix

User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

Evidence

  1. fetch GEThttps://example.com/robots.txt → 404 · Content-Type: text/html · 11 ms — GET /robots.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse robots.txt not available (HTTP 404) · https://example.com/robots.txt
  3. conclude robots.txt returned HTTP 404

Sitemap

/sitemap.xml · /sitemap.md
4 failed
Failed sitemap.xml is valid S8 sitemap.xml returned HTTP 404

How to fix

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://example.com/</loc><lastmod>2026-01-01</lastmod></url>
</urlset>

Evidence

  1. fetch GEThttps://example.com/sitemap.xml → 404 · Content-Type: text/html · 19 ms — GET /sitemap.xml<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/sitemap_index.xml → 404 · Content-Type: text/html · 16 ms — GET /sitemap_index.xml<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse No sitemap candidate returned 2xx (last status HTTP 404) · https://example.com/sitemap.xml
  4. conclude sitemap.xml returned HTTP 404
Failed sitemap entries have lastmod S9 No sitemap entries to evaluate

How to fix

<lastmod>2026-01-15</lastmod>

Evidence

  1. fetch GEThttps://example.com/sitemap.xml → 404 · Content-Type: text/html · 19 ms — GET /sitemap.xml<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/sitemap_index.xml → 404 · Content-Type: text/html · 16 ms — GET /sitemap_index.xml<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse No sitemap candidate returned 2xx (last status HTTP 404) · https://example.com/sitemap.xml
  4. conclude No sitemap entries to evaluate
Failed sitemap.md exists S10 No sitemap.md at /sitemap.md, /docs/sitemap.md or /.well-known/sitemap.md

How to fix

# Sitemap

## Pages

- [Home](https://example.com/)
- [About](https://example.com/about)

Evidence

  1. fetch GEThttps://example.com/sitemap.md → 404 · Content-Type: text/html · 33 ms — Probe /sitemap.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/docs/sitemap.md → 404 · Content-Type: text/html · 9 ms — Probe /docs/sitemap.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/.well-known/sitemap.md → 404 · Content-Type: text/html · 11 ms — Probe /.well-known/sitemap.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. parse None of the 3 candidate locations returned a 2xx text/markdown document
  5. conclude No sitemap.md at /sitemap.md, /docs/sitemap.md or /.well-known/sitemap.md
Failed sitemap.md has headings and links S11 sitemap.md not found

How to fix

## Pages

- [Home](https://example.com/)

Evidence

  1. fetch GEThttps://example.com/sitemap.md → 404 · Content-Type: text/html · 33 ms — Probe /sitemap.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/docs/sitemap.md → 404 · Content-Type: text/html · 9 ms — Probe /docs/sitemap.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/.well-known/sitemap.md → 404 · Content-Type: text/html · 11 ms — Probe /.well-known/sitemap.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. parse No sitemap.md to inspect (see S10)
  5. conclude sitemap.md not found

AGENTS.md

/AGENTS.md
2 failed
Failed AGENTS.md exists S12 No AGENTS.md at /AGENTS.md, /agents.md, /.well-known/agents.md, /docs/AGENTS.md, /CLAUDE.md or /.cursorrules

How to fix

# AGENTS.md

## Getting started

…

## Configuration

…

## Usage

…

Evidence

  1. fetch GEThttps://example.com/AGENTS.md → 404 · Content-Type: text/html · 27 ms — Probe /AGENTS.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/agents.md → 404 · Content-Type: text/html · 8 ms — Probe /agents.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/.well-known/agents.md → 404 · Content-Type: text/html · 9 ms — Probe /.well-known/agents.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/docs/AGENTS.md → 404 · Content-Type: text/html · 8 ms — Probe /docs/AGENTS.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. fetch GEThttps://example.com/CLAUDE.md → 404 · Content-Type: text/html · 8 ms — Probe /CLAUDE.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  6. fetch GEThttps://example.com/.cursorrules → 404 · Content-Type: text/html · 9 ms — Probe /.cursorrules<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  7. parse None of the 6 candidate locations returned a 2xx text document
  8. conclude No AGENTS.md at /AGENTS.md, /agents.md, /.well-known/agents.md, /docs/AGENTS.md, /CLAUDE.md or /.cursorrules
Recommended · siteSpec: agents.md
Failed AGENTS.md has required sections S13 AGENTS.md not found

How to fix

## Getting started

## Configuration

## Usage

Evidence

  1. fetch GEThttps://example.com/AGENTS.md → 404 · Content-Type: text/html · 27 ms — Probe /AGENTS.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/agents.md → 404 · Content-Type: text/html · 8 ms — Probe /agents.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/.well-known/agents.md → 404 · Content-Type: text/html · 9 ms — Probe /.well-known/agents.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/docs/AGENTS.md → 404 · Content-Type: text/html · 8 ms — Probe /docs/AGENTS.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. fetch GEThttps://example.com/CLAUDE.md → 404 · Content-Type: text/html · 8 ms — Probe /CLAUDE.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  6. fetch GEThttps://example.com/.cursorrules → 404 · Content-Type: text/html · 9 ms — Probe /.cursorrules<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  7. parse No AGENTS.md to inspect (see S12)
  8. conclude AGENTS.md not found
Recommended · siteSpec: agents.md

Transport

1 passed
Passed Site is served over HTTPS S14 Root URL is HTTPS

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Root scheme: https; homepage final URL: https://example.com/ · https://example.com/
  3. conclude Root URL is HTTPS
Required · site

API

/openapi.json
1 n/a
Not applicable Root OpenAPI document (API-first sites) S15 Site does not look API-first (no OpenAPI/Swagger links or /api paths found)

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse API-first heuristic: inspected 0 sitemap URL(s) and the homepage links for /api, openapi or swagger — no match · https://example.com/
  3. conclude Site does not look API-first (no OpenAPI/Swagger links or /api paths found)
Optional · site

Pages

1 checked · avg 7/22 · P1–P24 per page
Failed example.com/ 7/22
Passed P1 Returns HTTP 200 HTTP 200
Passed P2 At most one redirect No redirects
Passed P3 Content-Type is text/html Content-Type: text/html
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Failed P5 Canonical link No <link rel="canonical">
Failed P6 Meta description (≥ 50 chars) No <meta name="description">
Failed P7 og:title No og:title
Failed P8 og:description No og:description
Passed P9 html lang attribute lang="en"
Failed P10 JSON-LD structured data present No <script type="application/ld+json"> blocks
Failed P11 JSON-LD has required fields No JSON-LD to validate
Failed P12 At least 3 headings (h1–h3) Only 1 h1–h3 heading(s)
Passed P13 Text-to-HTML ratio Text-to-HTML ratio 22.4% (125 text chars / 559 HTML chars)
Failed P14 Links to a glossary No link to /glossary, /terminology or /definitions
Failed P15 Markdown mirror ({path}.md) https://example.com/index.md → HTTP 404 text/html
Failed P16 Markdown frontmatter (title, description, last_updated) No markdown version available to inspect
Failed P17 link rel=alternate type=text/markdown No alternate markdown link in <head> or Link header
Failed P18 Markdown endpoint sends Link rel=canonical No markdown version available
Failed P19 Accept: text/markdown negotiation Accept: text/markdown → HTTP 200 text/html
Failed P20 Markdown has a ## Sitemap section No markdown version available
Not applicable P21 Code blocks declare a language No code blocks on the page
Not applicable P22 API pages link an API schema Not an API documentation page
Passed P23 Content does not depend on JavaScript rendering 125 chars of server-rendered text
Failed P24 llms.txt describedby link No rel="describedby" link to llms.txt

llms.txt lint

0 passed · 10 failed · does not affect the main score

llms.txt

/llms.txt
10 failed
Failed llms.txt returns HTTP 200 L1 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned HTTP 200 with a text body
  6. conclude llms.txt not found
Required · llmstxtSpec: llmstxt.org
Failed First line is an H1 title L2 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Required · llmstxtSpec: llmstxt.org
Failed Content is parseable markdown (not an HTML shell) L3 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Required · llmstxtSpec: llmstxt.org
Failed Blockquote summary follows the H1 L4 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Recommended · llmstxtSpec: llmstxt.org
Failed At least one H2 section with a link list L5 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Recommended · llmstxtSpec: llmstxt.org
Failed Link lines use - [name](url): notes format L6 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Recommended · llmstxtSpec: llmstxt.org
Failed Sampled links resolve (2xx) L7 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Recommended · llmstxtSpec: llmstxt.org
Failed ## Optional section used correctly L8 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Optional · llmstxtSpec: llmstxt.org
Failed Served as text/plain L9 llms.txt not found

How to fix

# example.com

> Summary of the site.

## Docs

- [About](https://example.com/about.md): what we do

Evidence

  1. fetch GEThttps://example.com/llms.txt → 404 · Content-Type: text/html · 34 ms — Probe /llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/llms.txt → 404 · Content-Type: text/html · 10 ms — Probe /.well-known/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/docs/llms.txt → 404 · Content-Type: text/html · 11 ms — Probe /docs/llms.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. fetch GEThttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 9 ms — Probe /llms-full.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  5. parse None of the 4 candidate locations returned a 2xx llms.txt
  6. conclude llms.txt not found
Recommended · llmstxtSpec: llmstxt.org
Failed llms-full.txt exists L10 No /llms-full.txt or /llms-ctx-full.txt

How to fix

https://example.com/llms-full.txt

Evidence

  1. fetch HEADhttps://example.com/llms-full.txt → 404 · Content-Type: text/html · 6 ms — Probe /llms-full.txt
  2. fetch HEADhttps://example.com/llms-ctx-full.txt → 404 · Content-Type: text/html · 7 ms — Probe /llms-ctx-full.txt
  3. parse Neither /llms-full.txt nor /llms-ctx-full.txt answered 2xx with a text body
  4. conclude No /llms-full.txt or /llms-ctx-full.txt
Optional · llmstxtSpec: llmstxt.org

Markdown negotiation

0 passed · 3 failed · 1 n/a · does not affect the main score

Accept: text/markdown

1 page(s) sampled
3 failed1 n/a
Failed Serves markdown for Accept: text/markdown M1 Accept: text/markdown → HTTP 200 text/html

How to fix

GET / HTTP/1.1
Accept: text/markdown

-> HTTP/1.1 200 OK
   Content-Type: text/markdown; charset=utf-8
   Vary: Accept

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 9 ms — GET / with Accept: text/markdown<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Response to Accept: text/markdown: HTTP 200, Content-Type text/html, Vary (none) → not a text/markdown 2xx · https://example.com/
  3. conclude Accept: text/markdown → HTTP 200 text/html
Required · markdownSpec: acceptmarkdown.com
Failed Responds with Vary: Accept M2 No Vary header

How to fix

Vary: Accept

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 9 ms — GET / with Accept: text/markdown<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Vary header on the negotiated response: (none) → does not list Accept or * · https://example.com/
  3. conclude No Vary header
Not applicable Returns 406 for an unsatisfiable Accept M3 Skipped — the site does not negotiate markdown (M1 failed)

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 9 ms — GET / with Accept: text/markdown<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Accept: text/markdown → HTTP 200, Content-Type text/html, Vary (none); a 406 test only makes sense once markdown negotiation works · https://example.com/
  3. conclude Skipped — the site does not negotiate markdown (M1 failed)
Recommended · markdown
Failed Honours Accept q-values M4 q-values ignored (markdown-preferred → text/html, html-preferred → text/html)

How to fix

Accept: text/html;q=0.5, text/markdown;q=1.0 -> text/markdown
Accept: text/markdown;q=0.1, text/html;q=1.0 -> text/html

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 9 ms — GET / Accept: text/html;q=0.5, text/markdown;q=1.0<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 11 ms — GET / Accept: text/markdown;q=0.1, text/html;q=1.0<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse markdown-preferred → text/html (expected text/markdown); html-preferred → text/html (ok) · https://example.com/
  4. conclude q-values ignored (markdown-preferred → text/html, html-preferred → text/html)
Recommended · markdownSpec: rfc-editor.org/rfc/rfc9110

Bot access

0 passed · 3 failed · 2 n/a · does not affect the main score

Signals

/robots.txt · headers · DNS
3 failed2 n/a
Failed robots.txt has explicit AI-bot rules B1 No robots.txt

How to fix

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: Google-Extended
Allow: /

Evidence

  1. fetch GEThttps://example.com/robots.txt → 404 · Content-Type: text/html · 11 ms — GET /robots.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse robots.txt not available (HTTP 404) · https://example.com/robots.txt
  3. conclude No robots.txt
Failed robots.txt declares Content-Signal B2 No robots.txt

How to fix

Content-Signal: search=yes, ai-input=yes, ai-train=no

Evidence

  1. fetch GEThttps://example.com/robots.txt → 404 · Content-Type: text/html · 11 ms — GET /robots.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse robots.txt not available (HTTP 404) · https://example.com/robots.txt
  3. conclude No robots.txt
Required · botsSpec: contentsignals.org
Failed Homepage sends Link headers B3 No Link header on the homepage

How to fix

Link: <https://example.com/index.md>; rel="alternate"; type="text/markdown", <https://example.com/llms.txt>; rel="describedby"

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Link response header on the homepage: (none) · https://example.com/
  3. conclude No Link header on the homepage
Not applicable DNS-AID agent discovery records B4 DNS-AID lookups disabled for this scan

Evidence

  1. parse Scan options exclude DNS lookups; no queries issued
  2. conclude DNS-AID lookups disabled for this scan
Optional · bots
Informational Web Bot Auth signature directory B5 No Web Bot Auth directory (optional; only needed if you operate signed bots)

Evidence

  1. fetch GEThttps://example.com/.well-known/http-message-signatures-directory → 404 · Content-Type: text/html · 7 ms — GET /.well-known/http-message-signatures-directory<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse HTTP 404; no directory published · https://example.com/.well-known/http-message-signatures-directory
  3. conclude No Web Bot Auth directory (optional; only needed if you operate signed bots)
Optional · bots

Protocol discovery

1 of 16 found · informational

.well-known

graded only when present
1 found · 0 issues · 15 not found
Informational MCP server card C1 No MCP server card (/.well-known/mcp.json or /.well-known/mcp/server-card.json)

Evidence

  1. fetch GEThttps://example.com/.well-known/mcp.json → 404 · Content-Type: text/html · 9 ms — GET /.well-known/mcp.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/mcp/server-card.json → 404 · Content-Type: text/html · 17 ms — GET /.well-known/mcp/server-card.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse Probed 2 location(s); none served a MCP server card/.well-known/mcp.json: HTTP 404 /.well-known/mcp/server-card.json: HTTP 404
  4. conclude No MCP server card (/.well-known/mcp.json or /.well-known/mcp/server-card.json)
Optional · protocolsSpec: modelcontextprotocol.io
Not applicable MCP server card is well-formed C2 No MCP server card to validate

Evidence

  1. fetch GEThttps://example.com/.well-known/mcp.json → 404 · Content-Type: text/html · 9 ms — GET /.well-known/mcp.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/mcp/server-card.json → 404 · Content-Type: text/html · 17 ms — GET /.well-known/mcp/server-card.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse No MCP server card JSON was found at either location (see C1); nothing to validate
  4. conclude No MCP server card to validate
Optional · protocols
Informational OAuth protected resource metadata C3 No OAuth protected resource metadata (/.well-known/oauth-protected-resource)

Evidence

  1. fetch GEThttps://example.com/.well-known/oauth-protected-resource → 404 · Content-Type: text/html · 11 ms — GET /.well-known/oauth-protected-resource<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Probed 1 location(s); none served a OAuth protected resource metadata/.well-known/oauth-protected-resource: HTTP 404
  3. conclude No OAuth protected resource metadata (/.well-known/oauth-protected-resource)
Informational A2A agent card C4 No A2A agent card (/.well-known/agent-card.json or /.well-known/agent.json)

Evidence

  1. fetch GEThttps://example.com/.well-known/agent-card.json → 404 · Content-Type: text/html · 11 ms — GET /.well-known/agent-card.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/agent.json → 404 · Content-Type: text/html · 15 ms — GET /.well-known/agent.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse Probed 2 location(s); none served a A2A agent card/.well-known/agent-card.json: HTTP 404 /.well-known/agent.json: HTTP 404
  4. conclude No A2A agent card (/.well-known/agent-card.json or /.well-known/agent.json)
Not applicable A2A agent card is well-formed C5 No A2A agent card to validate

Evidence

  1. fetch GEThttps://example.com/.well-known/agent-card.json → 404 · Content-Type: text/html · 11 ms — GET /.well-known/agent-card.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/agent.json → 404 · Content-Type: text/html · 15 ms — GET /.well-known/agent.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse No A2A agent card JSON was found at either location (see C4); nothing to validate
  4. conclude No A2A agent card to validate
Optional · protocols
Informational Agent Skills index C6 No Agent Skills index (/.well-known/agent-skills/index.json)

Evidence

  1. fetch GEThttps://example.com/.well-known/agent-skills/index.json → 404 · Content-Type: text/html · 11 ms — GET /.well-known/agent-skills/index.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Probed 1 location(s); none served a Agent Skills index/.well-known/agent-skills/index.json: HTTP 404
  3. conclude No Agent Skills index (/.well-known/agent-skills/index.json)
Optional · protocolsSpec: agentskills.io
Informational API catalog (/.well-known/api-catalog) C7 No API catalog (/.well-known/api-catalog)

Evidence

  1. fetch GEThttps://example.com/.well-known/api-catalog → 404 · Content-Type: text/html · 9 ms — GET /.well-known/api-catalog<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Probed 1 location(s); none served a API catalog/.well-known/api-catalog: HTTP 404
  3. conclude No API catalog (/.well-known/api-catalog)
Informational OAuth / OpenID server metadata C8 No OAuth/OpenID server metadata (/.well-known/oauth-authorization-server or /.well-known/openid-configuration)

Evidence

  1. fetch GEThttps://example.com/.well-known/oauth-authorization-server → 404 · Content-Type: text/html · 15 ms — GET /.well-known/oauth-authorization-server<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/.well-known/openid-configuration → 404 · Content-Type: text/html · 16 ms — GET /.well-known/openid-configuration<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse Probed 2 location(s); none served a OAuth/OpenID server metadata/.well-known/oauth-authorization-server: HTTP 404 /.well-known/openid-configuration: HTTP 404
  4. conclude No OAuth/OpenID server metadata (/.well-known/oauth-authorization-server or /.well-known/openid-configuration)
Informational security.txt C9 No security.txt (RFC 9116) — optional but recommended

Evidence

  1. fetch GEThttps://example.com/.well-known/security.txt → 404 · Content-Type: text/html · 17 ms — GET /.well-known/security.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/security.txt → 404 · Content-Type: text/html · 14 ms — GET /security.txt<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse /.well-known/security.txt → HTTP 404; /security.txt → HTTP 404
  4. conclude No security.txt (RFC 9116) — optional but recommended
Informational OpenAPI document C10 No OpenAPI document (/openapi.json or /openapi.yaml or /.well-known/openapi.json)

Evidence

  1. fetch GEThttps://example.com/openapi.json → 404 · Content-Type: text/html · 21 ms — GET /openapi.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/openapi.yaml → 404 · Content-Type: text/html · 11 ms — GET /openapi.yaml<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. fetch GEThttps://example.com/.well-known/openapi.json → 404 · Content-Type: text/html · 9 ms — GET /.well-known/openapi.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  4. parse Probed 3 location(s); none served a OpenAPI document/openapi.json: HTTP 404 /openapi.yaml: HTTP 404 /.well-known/openapi.json: HTTP 404
  5. conclude No OpenAPI document (/openapi.json or /openapi.yaml or /.well-known/openapi.json)
Informational /auth.md agent auth instructions C11 No /auth.md (optional: markdown instructions telling agents how to authenticate)

Evidence

  1. fetch GEThttps://example.com/auth.md → 404 · Content-Type: text/html · 17 ms — GET /auth.md<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse /auth.md → HTTP 404 · https://example.com/auth.md
  3. conclude No /auth.md (optional: markdown instructions telling agents how to authenticate)
Optional · protocolsSpec: isitagentready.com
Informational UCP manifest C12 No UCP manifest (/.well-known/ucp)

Evidence

  1. fetch GEThttps://example.com/.well-known/ucp → 404 · Content-Type: text/html · 23 ms — GET /.well-known/ucp<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Probed 1 location(s); none served a UCP manifest/.well-known/ucp: HTTP 404
  3. conclude No UCP manifest (/.well-known/ucp)
Optional · protocolsSpec: ucp.dev
Informational ACP manifest C13 No ACP manifest (/.well-known/acp.json)

Evidence

  1. fetch GEThttps://example.com/.well-known/acp.json → 404 · Content-Type: text/html · 23 ms — GET /.well-known/acp.json<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Probed 1 location(s); none served a ACP manifest/.well-known/acp.json: HTTP 404
  3. conclude No ACP manifest (/.well-known/acp.json)
Optional · protocolsSpec: agentcommerceprotocol.com
Informational x402 payment-required endpoints C14 No x402 (HTTP 402 + accepts[]) endpoints observed among probed URLs

Evidence

  1. parse Inspected 24 response(s) recorded so far in this scan: 0 returned HTTP 402, none with an accepts[] body
  2. conclude No x402 (HTTP 402 + accepts[]) endpoints observed among probed URLs
Optional · protocolsSpec: x402.org
Not applicable Advertised endpoints not blocked by robots.txt C15 No same-host endpoints advertised in llms.txt / AGENTS.md

Evidence

  1. parse Collected same-host links from llms.txt (absent) and AGENTS.md (absent): 0 endpoints to evaluate
  2. conclude No same-host endpoints advertised in llms.txt / AGENTS.md
Optional · protocols
Passed Content parity for AI crawlers (GPTBot vs browser UA) C16 Baseline text 125 chars vs GPTBot 125 chars (0% difference)

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET / (baseline UA)<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 23 ms — GET / (GPTBot UA)<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  3. parse Extracted visible text from both responses: baseline 125 chars vs GPTBot 125 chars → 0% difference (allowed ≤ 15%, or ≤ 25% when both exceed 500 chars) · https://example.com/
  4. conclude Baseline text 125 chars vs GPTBot 125 chars (0% difference)
Required · protocols

Accessibility

8 passed · 1 failed · 14 n/a · does not affect the main score

A1–A23

homepage · static DOM
8 passed1 failed14 n/a
Not applicable Images have alt text A1 No <img> elements

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for image(s): none found, nothing to audit · https://example.com/
  3. conclude No <img> elements
Required · accessibility
Not applicable Form controls have labels A2 No form controls

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for form control(s): none found, nothing to audit · https://example.com/
  3. conclude No form controls
Required · accessibility
Passed Links and buttons have accessible names A3 All 1 link(s)/button(s) pass

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Inspected 1 link(s)/button(s): 0 violation(s) · https://example.com/
  3. conclude All 1 link(s)/button(s) pass
Required · accessibility
Not applicable Media elements declare width and height A4 No img/video/iframe elements

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for media element(s): none found, nothing to audit · https://example.com/
  3. conclude No img/video/iframe elements
Recommended · accessibility
Not applicable ARIA/label id references resolve and ids are unique A5 No ids or id references

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for id(s)/reference(s): none found, nothing to audit · https://example.com/
  3. conclude No ids or id references
Required · accessibility
Not applicable iframes have a title A6 No iframes

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for iframe(s): none found, nothing to audit · https://example.com/
  3. conclude No iframes
Required · accessibility
Passed One h1 and no skipped heading levels A7 All 1 heading(s) pass

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Inspected 1 heading(s): 0 violation(s) · https://example.com/
  3. conclude All 1 heading(s) pass
Recommended · accessibility
Not applicable No positive tabindex A8 No tabindex attributes

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for tabindex attribute(s): none found, nothing to audit · https://example.com/
  3. conclude No tabindex attributes
Recommended · accessibility
Passed Viewport allows zoom A9 Viewport allows zoom: width=device-width, initial-scale=1

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Parsed <meta name="viewport">: user-scalable=no absent, maximum-scale < 2 absent · https://example.com/width=device-width, initial-scale=1
  3. conclude Viewport allows zoom: width=device-width, initial-scale=1
Required · accessibility
Passed Document has a non-empty title A10 <title>Example Domain</title>

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Read <title>: 14 chars · https://example.com/Example Domain
  3. conclude <title>Example Domain</title>
Required · accessibility
Not applicable aria-label includes the visible text A11 No controls with both aria-label and visible text

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for labelled control(s): none found, nothing to audit · https://example.com/
  3. conclude No controls with both aria-label and visible text
Recommended · accessibility
Failed Landmark main or skip link A12 No <main> landmark, role="main" or skip link

How to fix

<a href="#content" class="skip-link">Skip to content</a>
<main id="content">…</main>

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Looked for <main>/role="main": none; in-page 'skip' link: none · https://example.com/
  3. conclude No <main> landmark, role="main" or skip link
Recommended · accessibilitySpec: w3.org/WAI/WCAG22/quickref
Passed Valid BCP-47 lang A13 lang="en" is valid

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Read the lang attribute on <html>: "en" (valid BCP-47) · https://example.com/
  3. conclude lang="en" is valid
Required · accessibility
Not applicable No focusable content inside aria-hidden A14 No aria-hidden regions

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for aria-hidden region(s): none found, nothing to audit · https://example.com/
  3. conclude No aria-hidden regions
Required · accessibility
Passed No nested interactive controls A15 All 1 interactive control(s) pass

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Inspected 1 interactive control(s): 0 violation(s) · https://example.com/
  3. conclude All 1 interactive control(s) pass
Required · accessibility
Passed No empty headings A16 All 1 heading(s) pass

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Inspected 1 heading(s): 0 violation(s) · https://example.com/
  3. conclude All 1 heading(s) pass
Recommended · accessibility
Passed No timed meta refresh A17 No meta refresh

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Looked for <meta http-equiv="refresh">: none · https://example.com/
  3. conclude No meta refresh
Required · accessibility
Not applicable Valid autocomplete tokens A18 No autocomplete attributes

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for autocomplete attribute(s): none found, nothing to audit · https://example.com/
  3. conclude No autocomplete attributes
Recommended · accessibility
Not applicable Data tables have headers A19 No tables

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for table(s): none found, nothing to audit · https://example.com/
  3. conclude No tables
Recommended · accessibility
Not applicable SVG role=img has an accessible name A20 No svg role=img elements

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for svg(s): none found, nothing to audit · https://example.com/
  3. conclude No svg role=img elements
Recommended · accessibility
Not applicable Audio/video have captions track A21 No audio/video elements

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for media element(s): none found, nothing to audit · https://example.com/
  3. conclude No audio/video elements
Recommended · accessibility
Not applicable Lists contain only list items A22 No lists

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for list(s): none found, nothing to audit · https://example.com/
  3. conclude No lists
Recommended · accessibility
Not applicable ARIA roles and attributes are valid A23 No ARIA roles or attributes

Evidence

  1. fetch GEThttps://example.com/ → 200 · Content-Type: text/html · 45 ms — GET /<!doctype html><html lang="en"><head><title>Example Domain</title><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:vi…
  2. parse Searched the homepage DOM for ARIA role(s)/attribute(s): none found, nothing to audit · https://example.com/
  3. conclude No ARIA roles or attributes
Required · accessibility

Compare

Top public scans · full leaderboard

Privacy

Public scans list the domain, score and level on the leaderboards and feed the percentile corpus. Only public URLs were fetched; nothing was stored from the site beyond this report.