Agent readiness report

www.whosbest.org

Scanned 2026-08-23 22:03 UTC 10 pages checked of 341 discovered 70r084v0mxzn Engine v2.0
Rescan Compare
Agent Readability vercel
94/100Excellent
Better than 86% of 7 sites scanned · 220 of 235 checks passed
llms.txt llmstxt.org
100/100Excellent
10 of 10 lint rules
Accessibility A1–A23
87/100Good
13 of 15 rules · homepage static DOM · does not affect main score
Markdown readiness accept-md
100/100Fully negotiated
Accept: text/markdown → text/markdown
L4 Agent Integration Integrated: at least one agent protocol advertised. Next: Publish a Web Bot Auth directory.

Next level Level 5 · Auth & Trust

3 changes unlock Level 5.

  1. Publish a Web Bot Auth directoryServe /.well-known/http-message-signatures-directory with your bot signing keys (any 2 of 3) B5
  2. Publish all four integrationsServe MCP server card, A2A agent card, Agent Skills index and api-catalog (any 2 of 3) C1+C4+C6+C7
  3. Publish auth metadataServe /.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server (or openid-configuration) or /auth.md (any 2 of 3) C3|C8|C11

Site-wide

14 passed · 1 n/a

llms.txt

/llms.txt
4 passed
Passed llms.txt exists S1 Found llms.txt at https://www.whosbest.org/llms.txt

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — Probe /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Selected /llms.txt: HTTP 200, text/plain, 8,455 chars · https://www.whosbest.org/llms.txt
  3. conclude Found llms.txt at https://www.whosbest.org/llms.txt
Required · site
Passed llms.txt served as text/plain S2 Content-Type is text/plain

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Content-Type header: text/plain → media type 'text/plain' · https://www.whosbest.org/llms.txt
  3. conclude Content-Type is text/plain
Required · site
Passed llms.txt is non-empty S3 llms.txt has 8,455 characters

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Body: 8,455 chars, 61 non-blank line(s) · https://www.whosbest.org/llms.txt
  3. conclude llms.txt has 8,455 characters
Required · site
Passed llms.txt links do not point at .html files S4 No links point at .html files

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Inspected 48 link(s); 0 end in .html/.htm · https://www.whosbest.org/llms.txt
  3. conclude No links point at .html files
Recommended · site

robots.txt

/robots.txt
3 passed
Passed robots.txt allows AI crawlers S5 None of the 9 known AI crawlers are disallowed

Evidence

  1. fetch GEThttps://www.whosbest.org/robots.txt → 200 · Content-Type: text/plain · 3 ms — GET /robots.txt# WhosBest.org — welcome AI crawlers for discovery and attribution # llms.txt: https://www.whosbest.org/llms.txt # AGENTS.md: https://www.whosbest.org/AGENTS.md User-agent: * Allow: / Allow: /llms.txt Disallow: /sadmin/ Content-Signal: search=yes, ai-input=yes, ai-train=yes User-agent: GPTBot Allow…
  2. parse Parsed robots.txt: 19 group(s), 1 sitemap line(s), 1 Content-Signal line(s); root path allowed for all 9 known AI crawlers · https://www.whosbest.org/robots.txt
  3. conclude None of the 9 known AI crawlers are disallowed
Required · site
Passed /llms.txt is not blocked by robots.txt S6 /llms.txt is allowed for all crawlers

Evidence

  1. fetch GEThttps://www.whosbest.org/robots.txt → 200 · Content-Type: text/plain · 3 ms — GET /robots.txt# WhosBest.org — welcome AI crawlers for discovery and attribution # llms.txt: https://www.whosbest.org/llms.txt # AGENTS.md: https://www.whosbest.org/AGENTS.md User-agent: * Allow: / Allow: /llms.txt Disallow: /sadmin/ Content-Signal: search=yes, ai-input=yes, ai-train=yes User-agent: GPTBot Allow…
  2. parse Evaluated /llms.txt against 10 user agents (* + AI crawlers): none disallow it · https://www.whosbest.org/robots.txt
  3. conclude /llms.txt is allowed for all crawlers
Required · site
Passed robots.txt exists S7 robots.txt found (19 group(s), 1 sitemap line(s))

Evidence

  1. fetch GEThttps://www.whosbest.org/robots.txt → 200 · Content-Type: text/plain · 3 ms — GET /robots.txt# WhosBest.org — welcome AI crawlers for discovery and attribution # llms.txt: https://www.whosbest.org/llms.txt # AGENTS.md: https://www.whosbest.org/AGENTS.md User-agent: * Allow: / Allow: /llms.txt Disallow: /sadmin/ Content-Signal: search=yes, ai-input=yes, ai-train=yes User-agent: GPTBot Allow…
  2. parse Parsed robots.txt: 19 group(s), 1 sitemap line(s), 1 Content-Signal line(s) · https://www.whosbest.org/robots.txt
  3. conclude robots.txt found (19 group(s), 1 sitemap line(s))
Required · site

Sitemap

/sitemap.xml · /sitemap.md
4 passed
Passed sitemap.xml is valid S8 Valid sitemap: 341 URL(s)

Evidence

  1. fetch GEThttps://www.whosbest.org/sitemap.xml → 200 · Content-Type: application/xml; charset=utf-8 · 140 ms — GET /sitemap.xml<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.whosbest.org/</loc> <lastmod>2026-08-22</lastmod> <changefreq>weekly</changefreq> <priority>1.0</priority> </url> <url> <loc>http://www.whosbest.org/abo…
  2. parse Parsed /sitemap.xml: 341 URL(s), 0 child sitemap(s) · https://www.whosbest.org/sitemap.xml
  3. conclude Valid sitemap: 341 URL(s)
Required · site
Passed sitemap entries have lastmod S9 341/341 entries (100%) have lastmod

Evidence

  1. fetch GEThttps://www.whosbest.org/sitemap.xml → 200 · Content-Type: application/xml; charset=utf-8 · 140 ms — GET /sitemap.xml<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.whosbest.org/</loc> <lastmod>2026-08-22</lastmod> <changefreq>weekly</changefreq> <priority>1.0</priority> </url> <url> <loc>http://www.whosbest.org/abo…
  2. parse Counted <lastmod> on 341 <url> entries: 341 present, 0 missing · https://www.whosbest.org/sitemap.xml
  3. conclude 341/341 entries (100%) have lastmod
Recommended · site
Passed sitemap.md exists S10 Found sitemap.md at https://www.whosbest.org/sitemap.md

Evidence

  1. fetch GEThttps://www.whosbest.org/sitemap.md → 200 · Content-Type: text/markdown; charset=utf-8 · 217 ms — GET /sitemap.md# WhosBest.org sitemap > Markdown index of every public page on WhosBest.org — rankings, sector and category hubs, city hubs, community lists, company pages, and agent-discovery files. 101 links, generated 2026-08-23. Append `.md` to any page path for a markdown twin; the XML sitemap (which also li…
  2. parse Selected /sitemap.md: HTTP 200, text/markdown, 10,498 chars · https://www.whosbest.org/sitemap.md
  3. conclude Found sitemap.md at https://www.whosbest.org/sitemap.md
Recommended · site
Passed sitemap.md has headings and links S11 sitemap.md has 9 heading(s) and 101 link(s)

Evidence

  1. fetch GEThttps://www.whosbest.org/sitemap.md → 200 · Content-Type: text/markdown; charset=utf-8 · 217 ms — GET /sitemap.md# WhosBest.org sitemap > Markdown index of every public page on WhosBest.org — rankings, sector and category hubs, city hubs, community lists, company pages, and agent-discovery files. 101 links, generated 2026-08-23. Append `.md` to any page path for a markdown twin; the XML sitemap (which also li…
  2. parse Parsed sitemap.md as markdown: 9 heading(s), 101 link(s) · https://www.whosbest.org/sitemap.md# WhosBest.org sitemap ## Key pages ## Rankings ## Sector hubs ## Categories
  3. conclude sitemap.md has 9 heading(s) and 101 link(s)
Recommended · site

AGENTS.md

/AGENTS.md
2 passed
Passed AGENTS.md exists S12 Found agent instructions at https://www.whosbest.org/AGENTS.md

Evidence

  1. fetch GEThttps://www.whosbest.org/AGENTS.md → 200 · Content-Type: text/markdown · 24 ms — GET /AGENTS.md# WhosBest.org Agent Skill > How AI agents, LLM crawlers, and automated tools should discover, read, cite, and call WhosBest.org — an independent, evidence-backed rankings platform for B2B service providers, powered by Winston AI. WhosBest.org publishes editorial rankings, Winston AI algorithmic s…
  2. parse Selected /AGENTS.md: HTTP 200, text/markdown, 8,760 chars · https://www.whosbest.org/AGENTS.md
  3. conclude Found agent instructions at https://www.whosbest.org/AGENTS.md
Recommended · site
Passed AGENTS.md has required sections S13 3/3 required section types present

Evidence

  1. fetch GEThttps://www.whosbest.org/AGENTS.md → 200 · Content-Type: text/markdown · 24 ms — GET /AGENTS.md# WhosBest.org Agent Skill > How AI agents, LLM crawlers, and automated tools should discover, read, cite, and call WhosBest.org — an independent, evidence-backed rankings platform for B2B service providers, powered by Winston AI. WhosBest.org publishes editorial rankings, Winston AI algorithmic s…
  2. parse Parsed 7 heading(s); matched 3/3 section types (setup / configuration / usage) · https://www.whosbest.org/AGENTS.md# WhosBest.org Agent Skill ## Installation ## Configuration ## Usage Examples ## API ## Data & Attribution ## Contact
  3. conclude 3/3 required section types present
Recommended · site

Transport

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

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Root scheme: https; homepage final URL: https://www.whosbest.org/ · https://www.whosbest.org/
  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://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse API-first heuristic: inspected 341 sitemap URL(s) and the homepage links for /api, openapi or swagger — no match · https://www.whosbest.org/
  3. conclude Site does not look API-first (no OpenAPI/Swagger links or /api paths found)
Optional · site

Pages

10 checked · avg 20.6/23 · P1–P24 per page
Warning www.whosbest.org/ 21/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/
Passed P6 Meta description (≥ 50 chars) Description is 214 chars
Passed P7 og:title og:title: WhosBest.org | The Directory of Excellence
Passed P8 og:description og:description: AI-powered, evidence-backed rankings of B2B providers, AI platforms, and social …
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 11 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 33 heading(s)
Failed P13 Text-to-HTML ratio Text-to-HTML ratio 9.2% (3,025 text chars / 32,821 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/index.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </index.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
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 3,025 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Warning www.whosbest.org/find 21/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/find
Passed P6 Meta description (≥ 50 chars) Description is 138 chars
Passed P7 og:title og:title: Find a Provider | WhosBest.org
Passed P8 og:description og:description: Tell us what you need and we'll match you with the top-rated B2B providers in yo…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 12 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 9 heading(s)
Failed P13 Text-to-HTML ratio Text-to-HTML ratio 2.9% (442 text chars / 15,060 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/find.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </find.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/find>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
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 442 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Warning www.whosbest.org/about 21/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/about
Passed P6 Meta description (≥ 50 chars) Description is 220 chars
Passed P7 og:title og:title: About WhosBest.org — Evidence-backed rankings powered by Winston AI
Passed P8 og:description og:description: WhosBest.org publishes evidence-backed rankings powered by Winston AI — transpar…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 25 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 20 heading(s)
Warning P13 Text-to-HTML ratio Text-to-HTML ratio 12.4% (3,434 text chars / 27,759 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/about.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </about.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/about>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
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 3,434 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Warning www.whosbest.org/check 22/23
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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/check
Passed P6 Meta description (≥ 50 chars) Description is 300 chars
Passed P7 og:title og:title: Agent Readiness Check — Free llms.txt, robots, markdown and metadata scan | Whos…
Passed P8 og:description og:description: Free agent-readiness check. Scan any public website in about 20 seconds for llms…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 30 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 17 heading(s)
Warning P13 Text-to-HTML ratio Text-to-HTML ratio 11.2% (3,895 text chars / 34,655 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/check.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </check.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/check>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
Passed P21 Code blocks declare a language All 1 markdown code block(s) declare a language
Not applicable P22 API pages link an API schema Not an API documentation page
Passed P23 Content does not depend on JavaScript rendering 3,895 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Warning www.whosbest.org/lists 16/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/lists
Passed P6 Meta description (≥ 50 chars) Description is 135 chars
Passed P7 og:title og:title: Browse rankings | WhosBest.org
Passed P8 og:description og:description: Every WhosBest ranking, filtered the way you want. Editorial top lists, Winston …
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 12 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 27 heading(s)
Failed P13 Text-to-HTML ratio Text-to-HTML ratio 6.4% (2,047 text chars / 32,191 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Failed P15 Markdown mirror ({path}.md) https://www.whosbest.org/lists.md → HTTP 503 text/markdown
Failed P16 Markdown frontmatter (title, description, last_updated) No markdown version available to inspect
Passed P17 link rel=alternate type=text/markdown Link header: </lists.md>; rel=alternate; type=text/markdown
Failed P18 Markdown endpoint sends Link rel=canonical No markdown version available
Failed P19 Accept: text/markdown negotiation Accept: text/markdown → HTTP 503 text/markdown
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 2,047 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Passed www.whosbest.org/terms 22/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/terms
Passed P6 Meta description (≥ 50 chars) Description is 172 chars
Passed P7 og:title og:title: Terms of Service | WhosBest.org
Passed P8 og:description og:description: WhosBest.org terms of service: the rules for using our rankings platform, commun…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 12 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 22 heading(s)
Passed P13 Text-to-HTML ratio Text-to-HTML ratio 29.3% (7,277 text chars / 24,871 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/terms.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </terms.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/terms>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
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 7,277 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Warning www.whosbest.org/cities 21/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/cities
Passed P6 Meta description (≥ 50 chars) Description is 129 chars
Passed P7 og:title og:title: Browse Cities | WhosBest.org
Passed P8 og:description og:description: Browse local provider rankings by city across all sectors on WhosBest.org. Evide…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 15 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 10 heading(s)
Failed P13 Text-to-HTML ratio Text-to-HTML ratio 1.7% (321 text chars / 18,446 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/cities.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </cities.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/cities>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
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 321 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Passed www.whosbest.org/privacy 22/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/privacy
Passed P6 Meta description (≥ 50 chars) Description is 143 chars
Passed P7 og:title og:title: Privacy Policy | WhosBest.org
Passed P8 og:description og:description: WhosBest.org privacy policy: what information we collect, how we use and protect…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 12 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 21 heading(s)
Passed P13 Text-to-HTML ratio Text-to-HTML ratio 26.4% (6,282 text chars / 23,807 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/privacy.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </privacy.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/privacy>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
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 6,282 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Warning www.whosbest.org/sitemap 18/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/sitemap
Passed P6 Meta description (≥ 50 chars) Description is 137 chars
Passed P7 og:title og:title: Site map | WhosBest.org
Passed P8 og:description og:description: Complete site map for WhosBest.org — quick links to every major area including r…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 12 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 19 heading(s)
Warning P13 Text-to-HTML ratio Text-to-HTML ratio 10.8% (2,780 text chars / 25,707 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/sitemap.md → text/markdown
Failed P16 Markdown frontmatter (title, description, last_updated) Markdown has no YAML frontmatter
Passed P17 link rel=alternate type=text/markdown Link header: </sitemap.md>; rel=alternate; type=text/markdown
Failed P18 Markdown endpoint sends Link rel=canonical Markdown response has no Link: rel="canonical" header
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Failed P20 Markdown has a ## Sitemap section No ## Sitemap heading in markdown
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 2,780 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"
Passed www.whosbest.org/glossary 22/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; charset=utf-8
Passed P4 No noindex / noai X-Robots-Tag No restrictive X-Robots-Tag
Passed P5 Canonical link canonical: http://www.whosbest.org/glossary
Passed P6 Meta description (≥ 50 chars) Description is 233 chars
Passed P7 og:title og:title: Glossary — Rankings & AI Agent-Readiness Terms | WhosBest.org
Passed P8 og:description og:description: Definitions of the ranking and AI agent-readiness terms used on WhosBest.org — W…
Passed P9 html lang attribute lang="en"
Passed P10 JSON-LD structured data present 1 JSON-LD block(s), 46 node(s)
Passed P11 JSON-LD has required fields name/headline, description, url/@id, dateModified and BreadcrumbList present
Passed P12 At least 3 headings (h1–h3) 10 heading(s)
Passed P13 Text-to-HTML ratio Text-to-HTML ratio 18.1% (8,834 text chars / 48,841 HTML chars)
Passed P14 Links to a glossary Links to https://www.whosbest.org/glossary
Passed P15 Markdown mirror ({path}.md) https://www.whosbest.org/glossary.md → text/markdown
Passed P16 Markdown frontmatter (title, description, last_updated) Frontmatter has title, description and last_updated
Passed P17 link rel=alternate type=text/markdown Link header: </glossary.md>; rel=alternate; type=text/markdown
Passed P18 Markdown endpoint sends Link rel=canonical Link: <http://www.whosbest.org/glossary>; rel="canonical"
Passed P19 Accept: text/markdown negotiation Accept: text/markdown → text/markdown
Passed P20 Markdown has a ## Sitemap section ## Sitemap section present
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 8,834 chars of server-rendered text
Passed P24 llms.txt describedby link Link header: </llms.txt>; rel="describedby"

llms.txt lint

10 passed · does not affect the main score

llms.txt

/llms.txt
10 passed
Passed llms.txt returns HTTP 200 L1 HTTP 200 from https://www.whosbest.org/llms.txt

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Status line: HTTP 200, text/plain, 8,455 chars · https://www.whosbest.org/llms.txt
  3. conclude HTTP 200 from https://www.whosbest.org/llms.txt
Required · llmstxt
Passed First line is an H1 title L2 H1 title: "WhosBest.org"

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse First non-blank line is a # heading · https://www.whosbest.org/llms.txt# WhosBest.org
  3. conclude H1 title: "WhosBest.org"
Required · llmstxt
Passed Content is parseable markdown (not an HTML shell) L3 Body parses as markdown

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Body parsed as markdown: 6 ## section(s), 48 link(s), 8,455 chars · https://www.whosbest.org/llms.txt
  3. conclude Body parses as markdown
Required · llmstxt
Passed Blockquote summary follows the H1 L4 Blockquote summary present: "WhosBest.org is an independent, evidence-backed rankings platform for B2B servic…"

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Found a > blockquote immediately after the H1 · https://www.whosbest.org/llms.txtWhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites its underlying signa…
  3. conclude Blockquote summary present: "WhosBest.org is an independent, evidence-backed rankings platform for B2B servic…"
Recommended · llmstxt
Passed At least one H2 section with a link list L5 6 H2 section(s) with link lists (48 links)

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Parsed 6 ## section(s); 6 contain link lists · https://www.whosbest.org/llms.txt## Key Pages (12 link(s)) ## Sector Hubs (8 link(s)) ## Featured Rankings (5 link(s)) ## Methodology & Standards (4 link(s)) ## For AI Agents (12 link(s)) ## Optional (7 link(s))
  3. conclude 6 H2 section(s) with link lists (48 links)
Recommended · llmstxt
Passed Link lines use - [name](url): notes format L6 All 48 link line(s) are well-formed

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Inspected 48 bullet line(s): 48 well-formed '- [name](url): notes', 0 malformed · https://www.whosbest.org/llms.txt
  3. conclude All 48 link line(s) are well-formed
Recommended · llmstxt
Passed Sampled links resolve (2xx) L7 All 5 sampled link(s) returned 2xx

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. fetch HEADhttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · 115 ms — HEAD https://www.whosbest.org/
  3. fetch HEADhttps://www.whosbest.org/top-lists → 200 · Content-Type: text/html; charset=utf-8 · 102 ms — HEAD https://www.whosbest.org/top-lists
  4. fetch HEADhttps://www.whosbest.org/lists → 200 · Content-Type: text/html; charset=utf-8 · 179 ms — HEAD https://www.whosbest.org/lists
  5. fetch HEADhttps://www.whosbest.org/cities → 200 · Content-Type: text/html; charset=utf-8 · 155 ms — HEAD https://www.whosbest.org/cities
  6. fetch HEADhttps://www.whosbest.org/find → 200 · Content-Type: text/html; charset=utf-8 · 101 ms — HEAD https://www.whosbest.org/find
  7. parse Sampled 5 of 44 same-host link(s): 5 returned 2xx · https://www.whosbest.org/llms.txtok 200 https://www.whosbest.org/ ok 200 https://www.whosbest.org/top-lists ok 200 https://www.whosbest.org/lists ok 200 https://www.whosbest.org/cities ok 200 https://www.whosbest.org/find
  8. conclude All 5 sampled link(s) returned 2xx
Recommended · llmstxt
Passed ## Optional section used correctly L8 ## Optional is last and lists 7 link(s)

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse ## Optional is section 6 of 6 (last) with 7 link(s) · https://www.whosbest.org/llms.txt
  3. conclude ## Optional is last and lists 7 link(s)
Optional · llmstxt
Passed Served as text/plain L9 Content-Type: text/plain

Evidence

  1. fetch GEThttps://www.whosbest.org/llms.txt → 200 · Content-Type: text/plain · 21 ms — GET /llms.txt# WhosBest.org > WhosBest.org is an independent, evidence-backed rankings platform for B2B service providers, AI platforms, healthcare technology, professional services, education software, local business tools, analytics platforms, and cloud platforms. Every ranking is methodology-driven, cites it…
  2. parse Content-Type header: text/plain → media type 'text/plain' · https://www.whosbest.org/llms.txt
  3. conclude Content-Type: text/plain
Recommended · llmstxt
Passed llms-full.txt exists L10 Found /llms-full.txt (text/plain)

Evidence

  1. fetch HEADhttps://www.whosbest.org/llms-full.txt → 200 · Content-Type: text/plain; charset=utf-8 · 172 ms — Probe /llms-full.txt
  2. parse /llms-full.txt answered HTTP 200 with a non-HTML body (text/plain) · https://www.whosbest.org/llms-full.txt
  3. conclude Found /llms-full.txt (text/plain)
Optional · llmstxt

Markdown negotiation

4 passed · does not affect the main score

Accept: text/markdown

10 page(s) sampled
4 passed
Passed Serves markdown for Accept: text/markdown M1 Accept: text/markdown → text/markdown

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/markdown; charset=utf-8 · Vary: Accept, Accept-Encoding · 4 ms — GET / with Accept: text/markdown--- title: "WhosBest.org | The Directory of Excellence" description: "AI-powered, evidence-backed rankings of B2B providers, AI platforms, and social networks. Curated top lists across healthcare, technology, education, and professional services — transparent scoring, no pay-to-play." canonical_url:…
  2. parse Response to Accept: text/markdown: HTTP 200, Content-Type text/markdown; charset=utf-8, Vary Accept, Accept-Encoding → markdown representation served · https://www.whosbest.org/
  3. conclude Accept: text/markdown → text/markdown
Required · markdown
Passed Responds with Vary: Accept M2 Vary: Accept, Accept-Encoding

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Vary: Accept, Accept-Encoding · Content-Type: text/markdown; charset=utf-8 · 4 ms — GET / with Accept: text/markdown--- title: "WhosBest.org | The Directory of Excellence" description: "AI-powered, evidence-backed rankings of B2B providers, AI platforms, and social networks. Curated top lists across healthcare, technology, education, and professional services — transparent scoring, no pay-to-play." canonical_url:…
  2. parse Vary header on the negotiated response: Accept, Accept-Encoding → lists Accept · https://www.whosbest.org/
  3. conclude Vary: Accept, Accept-Encoding
Required · markdown
Passed Returns 406 for an unsatisfiable Accept M3 Unsatisfiable Accept → 406 Not Acceptable

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 406 · Content-Type: text/plain; charset=utf-8 · 6 ms — GET / with Accept: application/vnd.whosbest.unsatisfiable+nonexistent406 Not Acceptable The requested media type is not available for http://www.whosbest.org/. Available representations: text/html http://www.whosbest.org/ text/markdown http://www.whosbest.org/index.md (or send Accept: text/markdown)
  2. parse Response to an unsatisfiable Accept: HTTP 406, Content-Type text/plain; charset=utf-8, Vary Accept (expected HTTP 406) · https://www.whosbest.org/
  3. conclude Unsatisfiable Accept → 406 Not Acceptable
Recommended · markdown
Passed Honours Accept q-values M4 Both q-value orderings were honoured

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/markdown; charset=utf-8 · 2 ms — GET / Accept: text/html;q=0.5, text/markdown;q=1.0--- title: "WhosBest.org | The Directory of Excellence" description: "AI-powered, evidence-backed rankings of B2B providers, AI platforms, and social networks. Curated top lists across healthcare, technology, education, and professional services — transparent scoring, no pay-to-play." canonical_url:…
  2. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · 48 ms — GET / Accept: text/markdown;q=0.1, text/html;q=1.0<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  3. parse markdown-preferred → text/markdown (ok); html-preferred → text/html (ok) · https://www.whosbest.org/
  4. conclude Both q-value orderings were honoured
Recommended · markdown

Bot access

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

Signals

/robots.txt · headers · DNS
3 passed2 n/a
Passed robots.txt has explicit AI-bot rules B1 Explicit rules for GPTBot, ClaudeBot, CCBot, Google-Extended, PerplexityBot, YouBot, Bytespider, Applebot-Extended, cohere-ai

Evidence

  1. fetch GEThttps://www.whosbest.org/robots.txt → 200 · Content-Type: text/plain · 3 ms — GET /robots.txt# WhosBest.org — welcome AI crawlers for discovery and attribution # llms.txt: https://www.whosbest.org/llms.txt # AGENTS.md: https://www.whosbest.org/AGENTS.md User-agent: * Allow: / Allow: /llms.txt Disallow: /sadmin/ Content-Signal: search=yes, ai-input=yes, ai-train=yes User-agent: GPTBot Allow…
  2. parse Parsed robots.txt: 19 group(s), 1 sitemap line(s), 1 Content-Signal line(s); 9 of 9 known AI crawlers have their own User-agent group · https://www.whosbest.org/robots.txtUser-agent groups: * | GPTBot | OAI-SearchBot | ChatGPT-User | ClaudeBot | anthropic-ai | Claude-User | Claude-SearchBot | PerplexityBot | Google-Extended | BingBot | Googlebot AI crawlers named: GPTBot, ClaudeBot, CCBot, Google-Extended, PerplexityBot, YouBot, Bytespider, Applebot-Extended, cohere-…
  3. conclude Explicit rules for GPTBot, ClaudeBot, CCBot, Google-Extended, PerplexityBot, YouBot, Bytespider, Applebot-Extended, cohere-ai
Required · bots
Passed robots.txt declares Content-Signal B2 Content-Signal: search=yes, ai-input=yes, ai-train=yes

Evidence

  1. fetch GEThttps://www.whosbest.org/robots.txt → 200 · Content-Type: text/plain · 3 ms — GET /robots.txt# WhosBest.org — welcome AI crawlers for discovery and attribution # llms.txt: https://www.whosbest.org/llms.txt # AGENTS.md: https://www.whosbest.org/AGENTS.md User-agent: * Allow: / Allow: /llms.txt Disallow: /sadmin/ Content-Signal: search=yes, ai-input=yes, ai-train=yes User-agent: GPTBot Allow…
  2. parse Looked for Content-Signal directives in robots.txt: 1 found · https://www.whosbest.org/robots.txtsearch=yes, ai-input=yes, ai-train=yes
  3. conclude Content-Signal: search=yes, ai-input=yes, ai-train=yes
Required · bots
Passed Homepage sends Link headers B3 Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown"

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Link response header on the homepage: 2 relation(s): describedby, alternate · https://www.whosbest.org/</llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown"
  3. conclude Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown"
Recommended · bots
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://www.whosbest.org/.well-known/http-message-signatures-directory → 404 · Content-Type: text/html; charset=utf-8 · 26 ms — GET /.well-known/http-message-signatures-directory<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse HTTP 404; no directory published · https://www.whosbest.org/.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

5 of 16 found · informational

.well-known

graded only when present
5 found · 0 issues · 11 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://www.whosbest.org/.well-known/mcp.json → 404 · Content-Type: text/html; charset=utf-8 · 49 ms — GET /.well-known/mcp.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. fetch GEThttps://www.whosbest.org/.well-known/mcp/server-card.json → 404 · Content-Type: text/html; charset=utf-8 · 105 ms — GET /.well-known/mcp/server-card.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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://www.whosbest.org/.well-known/mcp.json → 404 · Content-Type: text/html; charset=utf-8 · 49 ms — GET /.well-known/mcp.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. fetch GEThttps://www.whosbest.org/.well-known/mcp/server-card.json → 404 · Content-Type: text/html; charset=utf-8 · 105 ms — GET /.well-known/mcp/server-card.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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://www.whosbest.org/.well-known/oauth-protected-resource → 404 · Content-Type: text/html; charset=utf-8 · 51 ms — GET /.well-known/oauth-protected-resource<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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://www.whosbest.org/.well-known/agent-card.json → 404 · Content-Type: text/html; charset=utf-8 · 46 ms — GET /.well-known/agent-card.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. fetch GEThttps://www.whosbest.org/.well-known/agent.json → 404 · Content-Type: text/html; charset=utf-8 · 126 ms — GET /.well-known/agent.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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://www.whosbest.org/.well-known/agent-card.json → 404 · Content-Type: text/html; charset=utf-8 · 46 ms — GET /.well-known/agent-card.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. fetch GEThttps://www.whosbest.org/.well-known/agent.json → 404 · Content-Type: text/html; charset=utf-8 · 126 ms — GET /.well-known/agent.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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
Passed Agent Skills index C6 Agent Skills index found at /.well-known/agent-skills/index.json

Evidence

  1. fetch GEThttps://www.whosbest.org/.well-known/agent-skills/index.json → 200 · Content-Type: application/json; charset=utf-8 · 18 ms — GET /.well-known/agent-skills/index.json{ "$schema": "https://schemas.agentskills.io/discovery/0.2.0/schema.json", "version": "0.2.0", "skills": [ { "name": "whosbest-agent-readiness-scan", "type": "skill-md", "description": "Scan any public website for AI-agent readiness with the free WhosBest.org checker: 0-1…
  2. parse /.well-known/agent-skills/index.json → HTTP 200, application/json, valid JSON Object · https://www.whosbest.org/.well-known/agent-skills/index.json
  3. conclude Agent Skills index found at /.well-known/agent-skills/index.json
Optional · protocols
Passed API catalog (/.well-known/api-catalog) C7 API catalog found at /.well-known/api-catalog

Evidence

  1. fetch GEThttps://www.whosbest.org/.well-known/api-catalog → 200 · Content-Type: application/linkset+json; charset=utf-8 · 18 ms — GET /.well-known/api-catalog{ "linkset": [ { "anchor": "http://www.whosbest.org/api/v1/readiness", "service-desc": [ { "href": "http://www.whosbest.org/openapi.json", "type": "application/json" } ], "service-doc": [ { "href": "http://www.whosbe…
  2. parse /.well-known/api-catalog → HTTP 200, application/linkset+json, valid JSON Object (JSON not required) · https://www.whosbest.org/.well-known/api-catalog
  3. conclude API catalog found at /.well-known/api-catalog
Optional · protocols
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://www.whosbest.org/.well-known/oauth-authorization-server → 404 · Content-Type: text/html; charset=utf-8 · 54 ms — GET /.well-known/oauth-authorization-server<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. fetch GEThttps://www.whosbest.org/.well-known/openid-configuration → 404 · Content-Type: text/html; charset=utf-8 · 125 ms — GET /.well-known/openid-configuration<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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://www.whosbest.org/.well-known/security.txt → 404 · Content-Type: text/html; charset=utf-8 · Vary: Accept-Encoding, Accept · 119 ms — GET /.well-known/security.txt<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. fetch GEThttps://www.whosbest.org/security.txt → 404 · Content-Type: text/html; charset=utf-8 · Vary: Accept-Encoding, Accept · 49 ms — GET /security.txt<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  3. parse /.well-known/security.txt → HTTP 404; /security.txt → HTTP 404
  4. conclude No security.txt (RFC 9116) — optional but recommended
Passed OpenAPI document C10 OpenAPI document found at /openapi.json

Evidence

  1. fetch GEThttps://www.whosbest.org/openapi.json → 200 · Content-Type: application/json; charset=utf-8 · 39 ms — GET /openapi.json{ "openapi": "3.1.0", "info": { "title": "WhosBest Agent Readiness API", "version": "2.0", "summary": "Free, key-less API that scores any public website's readiness for AI agents and LLM crawlers.", "description": "Scan a site (JSON or Server-Sent Events), fetch the persisted rep…
  2. parse /openapi.json → HTTP 200, application/json, valid JSON Object (JSON not required) · https://www.whosbest.org/openapi.json
  3. conclude OpenAPI document found at /openapi.json
Optional · protocols
Informational /auth.md agent auth instructions C11 No /auth.md (optional: markdown instructions telling agents how to authenticate)

Evidence

  1. fetch GEThttps://www.whosbest.org/auth.md → 404 · Content-Type: text/markdown; charset=utf-8 · 30 ms — GET /auth.md# Not found No markdown document exists at `/auth.md`. Every public HTML page on WhosBest.org has a markdown twin at the same path with a `.md` suffix (the home page is `/index.md`). Start from the [markdown sitemap](http://www.whosbest.org/sitemap.md) or [llms.txt](http://www.whosbest.org/llms.tx…
  2. parse /auth.md → HTTP 404 · https://www.whosbest.org/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://www.whosbest.org/.well-known/ucp → 404 · Content-Type: text/html; charset=utf-8 · 420 ms — GET /.well-known/ucp<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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://www.whosbest.org/.well-known/acp.json → 404 · Content-Type: text/html; charset=utf-8 · 163 ms — GET /.well-known/acp.json<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  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 44 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
Passed Advertised endpoints not blocked by robots.txt C15 All 44 advertised endpoint(s) are crawlable

Evidence

  1. fetch GEThttps://www.whosbest.org/robots.txt → 200 · Content-Type: text/plain · 3 ms — GET /robots.txt# WhosBest.org — welcome AI crawlers for discovery and attribution # llms.txt: https://www.whosbest.org/llms.txt # AGENTS.md: https://www.whosbest.org/AGENTS.md User-agent: * Allow: / Allow: /llms.txt Disallow: /sadmin/ Content-Signal: search=yes, ai-input=yes, ai-train=yes User-agent: GPTBot Allow…
  2. parse Evaluated 44 same-host endpoint(s) from llms.txt (found) and AGENTS.md (found) against robots.txt rules for * and 9 AI crawlers: 0 blocked · https://www.whosbest.org/robots.txthttps://www.whosbest.org/ https://www.whosbest.org/top-lists https://www.whosbest.org/lists https://www.whosbest.org/cities https://www.whosbest.org/find
  3. conclude All 44 advertised endpoint(s) are crawlable
Optional · protocols
Passed Content parity for AI crawlers (GPTBot vs browser UA) C16 Baseline text 3,025 chars vs GPTBot 3,025 chars (0% difference)

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET / (baseline UA)<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 237 ms — GET / (GPTBot UA)<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  3. parse Extracted visible text from both responses: baseline 3,025 chars vs GPTBot 3,025 chars → 0% difference (allowed ≤ 15%, or ≤ 25% when both exceed 500 chars) · https://www.whosbest.org/
  4. conclude Baseline text 3,025 chars vs GPTBot 3,025 chars (0% difference)
Required · protocols

Accessibility

13 passed · 2 failed · 8 n/a · does not affect the main score

A1–A23

homepage · static DOM
13 passed2 failed8 n/a
Not applicable Images have alt text A1 No <img> elements

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for image(s): none found, nothing to audit · https://www.whosbest.org/
  3. conclude No <img> elements
Required · accessibility
Passed Form controls have labels A2 All 1 form control(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 1 form control(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 1 form control(s) pass
Required · accessibility
Failed Links and buttons have accessible names A3 1 of 61 link(s)/button(s) fail

How to fix

<a href="/" aria-label="Home"><svg …></svg></a>

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 61 link(s)/button(s): 1 violation(s); examples: · https://www.whosbest.org/<button type="button" class="wb-nav-backdrop" aria-hidden="true" tabindex="-1" b-y8qcnkyf5a=""></button>
  3. conclude 1 of 61 link(s)/button(s) fail
Required · accessibilitySpec: w3.org/WAI/WCAG22/quickref
Not applicable Media elements declare width and height A4 No img/video/iframe elements

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for media element(s): none found, nothing to audit · https://www.whosbest.org/
  3. conclude No img/video/iframe elements
Recommended · accessibility
Failed ARIA/label id references resolve and ids are unique A5 1 of 15 id(s)/reference(s) fail

How to fix

Make every id unique and ensure aria-labelledby/aria-describedby/aria-controls/for values point at existing ids

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 15 id(s)/reference(s): 1 violation(s); examples: · https://www.whosbest.org/aria-controls="gs-results" does not resolve
  3. conclude 1 of 15 id(s)/reference(s) fail
Required · accessibilitySpec: w3.org/TR/wai-aria-1.2
Not applicable iframes have a title A6 No iframes

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for iframe(s): none found, nothing to audit · https://www.whosbest.org/
  3. conclude No iframes
Required · accessibility
Passed One h1 and no skipped heading levels A7 All 33 heading(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 33 heading(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 33 heading(s) pass
Recommended · accessibility
Passed No positive tabindex A8 All 1 tabindex attribute(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 1 tabindex attribute(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 1 tabindex attribute(s) pass
Recommended · accessibility
Passed Viewport allows zoom A9 Viewport allows zoom: width=device-width, initial-scale=1.0, viewport-fit=cover

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Parsed <meta name="viewport">: user-scalable=no absent, maximum-scale < 2 absent · https://www.whosbest.org/width=device-width, initial-scale=1.0, viewport-fit=cover
  3. conclude Viewport allows zoom: width=device-width, initial-scale=1.0, viewport-fit=cover
Required · accessibility
Passed Document has a non-empty title A10 <title>WhosBest.org | The Directory of Excellence</title>

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Read <title>: 42 chars · https://www.whosbest.org/WhosBest.org | The Directory of Excellence
  3. conclude <title>WhosBest.org | The Directory of Excellence</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://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for labelled control(s): none found, nothing to audit · https://www.whosbest.org/
  3. conclude No controls with both aria-label and visible text
Recommended · accessibility
Passed Landmark main or skip link A12 <main> landmark present

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Looked for <main>/role="main": found; in-page 'skip' link: none · https://www.whosbest.org/
  3. conclude <main> landmark present
Recommended · accessibility
Passed Valid BCP-47 lang A13 lang="en" is valid

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Read the lang attribute on <html>: "en" (valid BCP-47) · https://www.whosbest.org/
  3. conclude lang="en" is valid
Required · accessibility
Passed No focusable content inside aria-hidden A14 All 17 aria-hidden region(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 17 aria-hidden region(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 17 aria-hidden region(s) pass
Required · accessibility
Passed No nested interactive controls A15 All 62 interactive control(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 62 interactive control(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 62 interactive control(s) pass
Required · accessibility
Passed No empty headings A16 All 33 heading(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 33 heading(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 33 heading(s) pass
Recommended · accessibility
Passed No timed meta refresh A17 No meta refresh

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Looked for <meta http-equiv="refresh">: none · https://www.whosbest.org/
  3. conclude No meta refresh
Required · accessibility
Not applicable Valid autocomplete tokens A18 No autocomplete attributes

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for autocomplete attribute(s): none found, nothing to audit · https://www.whosbest.org/
  3. conclude No autocomplete attributes
Recommended · accessibility
Not applicable Data tables have headers A19 No tables

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for table(s): none found, nothing to audit · https://www.whosbest.org/
  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://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for svg(s): none found, nothing to audit · https://www.whosbest.org/
  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://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Searched the homepage DOM for media element(s): none found, nothing to audit · https://www.whosbest.org/
  3. conclude No audio/video elements
Recommended · accessibility
Passed Lists contain only list items A22 All 5 list(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 5 list(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 5 list(s) pass
Recommended · accessibility
Passed ARIA roles and attributes are valid A23 All 31 ARIA role(s)/attribute(s) pass

Evidence

  1. fetch GEThttps://www.whosbest.org/ → 200 · Content-Type: text/html; charset=utf-8 · Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown" · Vary: Accept-Encoding, Accept · 201 ms — GET /<!DOCTYPE html> <html lang="en"><head><meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <base href="/"> <link rel="icon" type="image/png" href="favicon.png"> <link rel="stylesheet" href="css/tokens.css?v=202608232129" />…
  2. parse Inspected 31 ARIA role(s)/attribute(s): 0 violation(s) · https://www.whosbest.org/
  3. conclude All 31 ARIA role(s)/attribute(s) pass
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.