← Public site reports

OUR SITE. THE SAME CHECKS.

trychad.ai

Search can find it.
Can an agent use it?

A transparent look at our own site: SEO, LLM readiness and agent discovery, with the findings left in.

Captured · 25-page sample · Provisional coverage

Scan your site →

CHAD TECHNICAL AUDIT
98/100
Grade B

2 error rules · 14 warning rules

The grade includes severity caps. A high numeric score can still carry a lower grade.

What this score means ↓
01 / EXPLORE

SEO ↗

174 rules · 35 with findings

7 not fully assessed
02 / EXPLORE

LLM readiness ↗

72 rules · 18 with findings

7 not fully assessed
03 / EXPLORE

Agent discovery ↗

28 rules · 1 with findings

2 not fully assessed

THE EVIDENCE, NOT JUST A NUMBER

Open the checks.

240 rules recorded
3,164 observed check results

Every recorded check, including observations and checks that could not be assessed. These areas overlap and are not separate scores.

240 rules shown · findings first

Needs a fixFont Sizemobile/font-size

8 passing · 15 warnings · 2 failures · 0 not assessed · 0 not applicable

Guidance
Body text should be at least 16px for readability without zooming. Smaller fonts strain eyes on mobile. Use relative units (rem, em) for scalability. Test on actual devices. Google's mobile-friendly test flags font sizes under 12px. Line height should be at least 1.5 for readability.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionArticle Citability Signalsschema/article-citability

18 passing · 7 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Valid Article schema gets you rich results; it does not make you quotable. An engine deciding whether to cite a page wants to know what it is about, where its claims came from, and where it sits. Add `citation` listing the sources behind your claims — this is the strongest information-gain signal and the clearest way to be treated as a source rather than a summary. Add `about` naming the primary entity so the topic is declared rather than inferred. Add `description` so the engine has your one-line summary instead of composing its own, plus `inLanguage` and `articleSection`. None of these are required for rich results, which is exactly why most sites lack them and why adding them is cheap differentiation.

  • Article schema is valid but thin for AI citation. Missing citation, about, articleSection. citation: where the claims come from — the strongest information-gain signal, and the one engines use to decide a page is a source rather than a summary. about: the primary entity, so an engine can tell what the page is a page about rather than inferring it from prose. articleSection: where it sits in the publication, which helps cluster related coverage.

    https://trychad.ai/geo/hospitality/bars/ ↗
  • Article schema is valid but thin for AI citation. Missing citation, about, articleSection. citation: where the claims come from — the strongest information-gain signal, and the one engines use to decide a page is a source rather than a summary. about: the primary entity, so an engine can tell what the page is a page about rather than inferring it from prose. articleSection: where it sits in the publication, which helps cluster related coverage.

    https://trychad.ai/geo/financial-services/ ↗
  • Article schema is valid but thin for AI citation. Missing citation, about, articleSection. citation: where the claims come from — the strongest information-gain signal, and the one engines use to decide a page is a source rather than a summary. about: the primary entity, so an engine can tell what the page is a page about rather than inferring it from prose. articleSection: where it sits in the publication, which helps cluster related coverage.

    https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionArticle Schemaschema/article

23 passing · 1 warnings · 0 failures · 0 not assessed · 1 not applicable

Guidance
For each Article, NewsArticle or BlogPosting describing this page, provide a headline, a representative image, and authors as Person or Organization with name and url (or sameAs). Google lists no required Article properties. Add ISO dates for datePublished and dateModified when applicable; absent dates are reported without a penalty. Resolve author and image references to captured definitions. Related article cards do not supply this page's fields. This check inspects captured JSON-LD values; it does not establish image accessibility or rich-result eligibility.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionAuthor Infocontent/author-info

12 passing · 13 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Author information supports E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness). Use Person schema to mark up authors with name, url, and credentials. Link to author bio pages. Display author names visibly on content. For YMYL topics (health, finance), include author qualifications. Consider using rel='author' links.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionBreadcrumb Schemaschema/breadcrumb

9 passing · 16 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
BreadcrumbList schema shows navigation path in search results. Structure: BreadcrumbList with itemListElement array of ListItem. Each ListItem needs position (1, 2, 3...), name, and item (URL). The last item (current page) doesn't need a URL. Breadcrumbs help users understand site structure and improve click-through rates.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionCaptured Entity Referencesschema/entity-dangling · Unscored

42 passing · 26 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Review the referencing property and intended target. A definition elsewhere or outside the capture may be valid. If the target is meant to be described in this document, align its identifier and declaration. Unknown contexts, unsupported forms, omitted invalid blocks and traversal limits remain explicit partial observations. This check is unscored and does not prove an external link is broken.

  • Reference https://zerolayer.tech/#organization has no declaration among the supported nodes inspected in this captured document. External definitions and uncaptured inputs are unknown; this is not proof of a broken link.

    https://trychad.ai/pricing/ ↗
  • Reference https://trychad.ai/case-studies/arriba-safeswitch has no declaration among the supported nodes inspected in this captured document. External definitions and uncaptured inputs are unknown; this is not proof of a broken link.

    https://trychad.ai/case-studies/arriba-safeswitch/ ↗
  • Reference https://zerolayer.tech/#organization has no declaration among the supported nodes inspected in this captured document. External definitions and uncaptured inputs are unknown; this is not proof of a broken link.

    https://trychad.ai/ai-built-websites/launch-checklist/ ↗

3 examples shown; 65 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionCitation Information Gaincontent/information-gain

23 passing · 2 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
A citation list that credits only other people's research means an AI engine can get everything this page offers directly from the sources it cites — there is no reason to quote this page instead of them. Where you reference outside research, also cite your own data, analysis, or first-hand reporting so the page contributes something the sources alone do not. If the page genuinely has no first-party angle, consider whether it needs to exist as a citable source at all, versus as a summary.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionCitationseeat/citations

0 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Citing authoritative sources builds credibility and supports E-E-A-T. Link to: government sites (.gov), educational institutions (.edu), peer-reviewed research, industry authorities. For health: cite NIH, CDC, WHO, medical journals. Include a sources/references section. Don't cite low-quality or unverified sources.

  • No links to authoritative sources (.gov, .edu, major research bodies) detected — consider citing sources for credibility

    https://trychad.ai/ ↗
Look up this check's recorded history →
Needs attentionConsent Modeanalytics/consent-mode

0 passing · 25 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Google Consent Mode v2 is required for Google Ads in the EU/EEA (March 2024). It allows Google tags to adjust behavior based on user consent. Implement with gtag('consent', 'default', {...}) before loading Google tags. Set ad_storage, analytics_storage, ad_user_data, and ad_personalization. Update on user consent.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionContent Security Policysecurity/csp

0 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
CSP prevents XSS attacks by restricting which resources can load. Start with a report-only policy to identify issues. Key directives: default-src 'self', script-src (avoid 'unsafe-inline'), img-src, style-src, frame-ancestors. Use nonces or hashes instead of 'unsafe-inline' for scripts. Test thoroughly as strict CSP can break functionality.

Look up this check's recorded history →
Needs attentionCookie Consentlegal/cookie-consent

1 passing · 24 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Cookie consent is required under GDPR and ePrivacy regulations for EU users. Implement a consent banner that: allows users to accept/reject non-essential cookies, doesn't pre-check optional cookies, stores consent preferences, and blocks tracking cookies until consent. Use tools like CookieYes, OneTrust, or Cookiebot.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionCritical Request Chainsperf/critical-request-chains

0 passing · 25 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Critical request chains are sequences of dependent network requests that must complete before the page can render. Reduce chain depth by: 1) Inlining critical CSS instead of linking external files. 2) Adding async or defer to non-critical scripts. 3) Avoiding CSS @import — use <link> tags instead. 4) Using <link rel='preload'> for critical resources. 5) Reducing the number of render-blocking resources in <head>.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionDOM Sizeperf/dom-size

23 passing · 2 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
A very large DOM slows layout, style recalculation and every subsequent interaction, and it is a common cause of poor responsiveness on mid-range phones. It usually comes from deeply nested wrappers or from rendering a long list all at once. Flatten unnecessary nesting and paginate or virtualise long lists.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionDuplicate Entity Definitionsschema/duplicate-entity

24 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Consumers of your structured data merge nodes that share an @id, so two definitions under the same @id with different values for the same field produce a contradiction — fix whichever is wrong, or split them under distinct @ids if they really are different things. Identical duplicate definitions should be emitted once and referenced by @id elsewhere. And for entities that should exist only once per site (Organization, WebSite, SoftwareApplication), give every instance a stable, shared @id so it is clear they are the same entity rather than several unrelated ones.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionEditorial Policyeeat/editorial-policy

0 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Editorial policies demonstrate content quality standards and professionalism. Include: how content is created/reviewed, fact-checking process, correction policy, and editorial independence. For news sites, this is essential. For content sites, it builds trust and supports E-E-A-T. Link from footer or about page.

  • No editorial policy or content standards page detected — documenting your editorial process supports E-E-A-T

    https://trychad.ai/ ↗
Look up this check's recorded history →
Needs attentionFAQ Schemaschema/faq

24 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Google stopped showing FAQ rich results on 7 May 2026, so this is no longer about earning a search feature. It is worth doing anyway: FAQPage is the cleanest machine-readable statement that a block of text is a question and its answer, which is exactly the unit an AI assistant extracts when it answers someone and cites a source. Without it an engine has to infer those pairs out of prose and may get the boundaries wrong. Treat it as a second-order contributor rather than a lever — Google says no special markup is required for AI surfaces, and no markup rescues an answer the page does not actually give. Structure: FAQPage with a mainEntity array of Question items, each with name and an acceptedAnswer containing text. The questions and answers must be visible on the page. Use QAPage instead for user-submitted single-question pages such as forums.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionForm CAPTCHAsecurity/form-captcha

10 passing · 15 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Add CAPTCHA protection (reCAPTCHA, Cloudflare Turnstile, hCaptcha, etc.) to public-facing forms to prevent spam and bot submissions. Contact forms, comment forms, newsletter signups, and registration forms are common targets for automated abuse. Modern CAPTCHA solutions like Turnstile offer invisible protection with minimal user friction.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionGeo Meta Tagslocal/geo-meta

0 passing · 25 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Geo meta tags (geo.position, geo.placename, geo.region, ICBM) are legacy: Google dropped support over a decade ago and no current search or AI engine is known to read them. Their absence is not worth acting on. Use LocalBusiness schema with a PostalAddress instead — that is what places a business today.

  • No geo meta tags (geo.position, geo.placename, geo.region, ICBM). These are legacy and no current search or AI engine is known to use them — LocalBusiness schema with a PostalAddress is what places a business today.

    https://trychad.ai/resources/answer-engine-optimization/ ↗
  • No geo meta tags (geo.position, geo.placename, geo.region, ICBM). These are legacy and no current search or AI engine is known to use them — LocalBusiness schema with a PostalAddress is what places a business today.

    https://trychad.ai/ ↗
  • No geo meta tags (geo.position, geo.placename, geo.region, ICBM). These are legacy and no current search or AI engine is known to use them — LocalBusiness schema with a PostalAddress is what places a business today.

    https://trychad.ai/blog/ ↗

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionHeading Hierarchycontent/heading-hierarchy

7 passing · 18 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Proper heading structure (H1 → H2 → H3) helps users and search engines understand your content organization. Skipping levels (H1 → H3) creates confusion. Use headings in sequential order without skipping levels. Each section should use the next heading level down. Think of headings as an outline—they should make sense when read alone. Avoid empty headings or using headings purely for styling.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionHorizontal Scrollmobile/horizontal-scroll

19 passing · 6 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Horizontal scrolling on mobile is a poor user experience and fails Google's mobile-friendly test. Common causes: fixed-width elements, images without max-width, wide tables. Use max-width: 100% on images, responsive tables, and avoid fixed pixel widths. Test on mobile devices.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionINP Optimization Hintsperf/inp-hints

0 passing · 25 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
INP measures responsiveness to user interactions. Improve by: 1) Minimize third-party scripts that block the main thread. 2) Use async/defer for non-critical scripts. 3) Break up long JavaScript tasks into smaller chunks. 4) Use web workers for heavy computations. 5) Implement code splitting to reduce initial bundle size. Consider using requestIdleCallback for non-urgent work.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionMeta Descriptioncore/meta-description

21 passing · 4 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
The description does not affect ranking, but it is the sales copy under your result and it decides whether anyone clicks. Without one, engines assemble a snippet from whatever text is nearest the match, which often reads as nonsense. Aim for 70-160 characters: shorter looks unfinished, longer is cut off. Write it for the person deciding whether to click, not for the crawler.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionMeta Titlecore/meta-title

20 passing · 5 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
The title is the strongest on-page signal you control and usually the first thing a person reads in a result. A missing one forces the engine to invent a title from your content, which it does badly. Under 30 characters wastes the space; over 60 gets truncated mid-phrase, so put the distinguishing words first. Every page needs its own — duplicated titles make pages compete with each other.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionNAP Consistencylocal/nap-consistency

0 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
NAP consistency is critical for local SEO. Your business name, address, and phone number should be identical everywhere - on your site and across all listings. Use schema.org LocalBusiness markup. Avoid abbreviations inconsistencies (St. vs Street). Include NAP in footer for site-wide visibility.

  • No phone numbers found on the site, so name/address/phone consistency could not be assessed. Not a finding in itself — if the business does publish a phone number, make sure it is identical everywhere it appears.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Needs attentionObserved Internal Link Sourceslinks/weak-internal-links · Unscored

9 passing · 6 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Consider useful links from related content when only one captured source links to the page. Review uncaptured sources before drawing site-wide conclusions. Repeated links in one document count once, and no ideal inbound-link count or ranking loss is asserted.

  • Only one distinct captured document has an observed ordinary followable link to this page. Review useful additional internal links; uncaptured sources may contain them. This threshold is not a ranking requirement.

    https://trychad.ai/ ↗
  • Only one distinct captured document has an observed ordinary followable link to this page. Review useful additional internal links; uncaptured sources may contain them. This threshold is not a ranking requirement.

    https://trychad.ai/ ↗
  • Only one distinct captured document has an observed ordinary followable link to this page. Review useful additional internal links; uncaptured sources may contain them. This threshold is not a ranking requirement.

    https://trychad.ai/ ↗

3 examples shown; 12 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionOrphan Pageslinks/orphan-pages · Unscored

0 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
A page nothing links to is reachable only by someone who already knows its URL. Search engines crawl it rarely, rank it poorly, and pass it none of the authority the rest of the site has earned — while the page itself looks perfect when you visit it directly, which is why this goes unnoticed. Link each page from somewhere relevant: a listing or index page, a related article, or the navigation. Where an index page is generated from a hand-maintained list, check that list against what is actually published; drift between the two is the usual cause.

  • 9 captured pages have no internal link from any other captured page: https://trychad.ai/geo/financial-services/, https://trychad.ai/ai-marketing-strategy/, https://trychad.ai/can-ai-replace-a-marketing-agency/, https://trychad.ai/claude-tag/, https://trychad.ai/marketing-agent-slack/ai-search-visibility/, https://trychad.ai/partners/apply/, https://trychad.ai/resources/answer-engine-optimization/, https://trychad.ai/vibe-coding/affordable-marketing-for-startups/, https://trychad.ai/geo/hospitality/bars/. Only 25 of 178 sitemap URLs were captured, so links from the rest are unknown; unscored until a fuller crawl.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Needs attentionReading Levelcontent/reading-level

0 passing · 25 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Content should match your target audience's reading level. For general audiences, aim for 6th-8th grade level (60-70 Flesch score). Use shorter sentences and simpler words. Break up long paragraphs. Use bullet points and headings. Technical content may have lower readability scores, which is acceptable for expert audiences.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionReview Captured Contextual Incoming Linkslinks/no-contextual-inbound · Unscored

14 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Review the target and captured source examples. Where useful to readers, link from relevant page content using descriptive anchor text. Uncaptured pages may already contain contextual links; this observation does not establish ranking or AI citation loss. Zero observed inbound links remain owned by the orphan-page rule.

  • Observed incoming links to this page occur only in navigation or global header/footer chrome within captured sources. Review contextual links; uncaptured sources may contain them. No ranking or AI citation loss is established.

    https://trychad.ai/ ↗
  • An incoming link outside explicit navigation/global header/footer markup is present in captured sources; whole-site coverage is unknown.

    https://trychad.ai/ ↗
  • An incoming link outside explicit navigation/global header/footer markup is present in captured sources; whole-site coverage is unknown.

    https://trychad.ai/ ↗

3 examples shown; 12 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionSchema Deprecated for Google Rich Resultsschema/deprecated-for-google

11 passing · 14 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
This is informational, not a defect: HowTo rich results ended in September 2023, and Google stopped showing FAQ rich results on 7 May 2026 (reporting was withdrawn in June 2026; Search Console API support ends in August 2026). The underlying markup is still valid and still helps other AI engines parse step-by-step and Q&A content when deciding what to cite. No action needed if being read by non-Google AI engines is part of your strategy — remove the markup only if Google rich results were its sole purpose.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionSemantic Completenesscontent/semantic-completeness

12 passing · 13 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Content rated 8.5/10 or higher for semantic completeness is 4.2x more likely to appear in an AI Overview, across 15,800 results analysed. Completeness means the page answers the question on its own, without the reader needing another source. Three things move it most. Put the direct answer in the first one or two sentences — an introduction that explains what the article will cover wastes the position an AI engine reads first. Cover the whole decision arc in your headings: what it is, why it matters, what the options are, what the trade-offs are, and what to do. And be specific: 'LCP must be below 2.5 seconds' is quotable, 'improve your page speed' is not, so name thresholds, figures and units wherever you can. A fourth factor, information gain — data or synthesis competitors do not have — is part of the published rubric but cannot be measured from a single page, so judge that one yourself.

  • Semantic completeness ~3/10, below the 8.5 threshold our research associates with 4.2x more AI Overview citations. decision arc incomplete — no heading covers what it is, why it matters, the options, the trade-offs, what to do; thin on specifics — 11 concrete figures in 19255 words; named thresholds and measurements are what get quoted. Information gain (new data competitors lack) is part of the published rubric but cannot be measured from a single page — assess it yourself.

    https://trychad.ai/changelog/ ↗
  • Semantic completeness ~3.8/10, below the 8.5 threshold our research associates with 4.2x more AI Overview citations. decision arc incomplete — no heading covers what it is, the options, the trade-offs, what to do; thin on specifics — 0 concrete figures in 1118 words; named thresholds and measurements are what get quoted. Information gain (new data competitors lack) is part of the published rubric but cannot be measured from a single page — assess it yourself.

    https://trychad.ai/ai-built-websites/launch-checklist/ ↗
  • Semantic completeness ~5.3/10, below the 8.5 threshold our research associates with 4.2x more AI Overview citations. decision arc incomplete — no heading covers what it is, why it matters, the trade-offs, what to do; thin on specifics — 3 concrete figures in 1305 words; named thresholds and measurements are what get quoted. Information gain (new data competitors lack) is part of the published rubric but cannot be measured from a single page — assess it yourself.

    https://trychad.ai/claude-tag/for-marketing-teams/ ↗

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionService Area Pageslocal/service-area

0 passing · 1 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Service area pages help rank for '[service] in [location]' searches. Create pages for each major city/area you serve. Include location-specific content, testimonials, and case studies. Use unique content - don't just swap city names. Add LocalBusiness schema with areaServed property.

Look up this check's recorded history →
Needs attentionShare Buttonssocial/share-buttons

0 passing · 25 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Social share buttons encourage content sharing and can drive traffic. Place them prominently on blog posts, articles, and shareable content. Include major platforms: Facebook, Twitter/X, LinkedIn. Consider sticky share bars for long content. Avoid too many buttons - 3-4 is optimal.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionTap Targetsmobile/tap-targets

22 passing · 3 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Touch targets (buttons, links) should be at least 44x44 CSS pixels with 8px spacing between them. This ensures users can tap accurately on mobile. Google's mobile-friendly test checks this. Use padding to increase tap area without changing visual size. Pay special attention to navigation links and form inputs.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionURL Stop Wordsurl/stop-words

22 passing · 3 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Stop words (a, an, the, of, etc.) add length without SEO value. While not harmful, removing them makes URLs shorter and more focused. 'best-running-shoes' is better than 'the-best-running-shoes-for-you'. However, keep stop words if removing them makes the URL confusing or grammatically awkward.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Needs attentionWord Countcontent/word-count

22 passing · 3 warnings · 0 failures · 0 not assessed · 0 not applicable

Guidance
Under 300 words there is usually too little for a search engine to understand what the page is about, or for an AI engine to quote. Length is not the goal — a thin page is a symptom, not the disease. Ask whether the page answers a real question in full; if it does so in 200 words it may be fine, and if it does not, adding padding will not help. Merge genuinely thin pages into a stronger one rather than inflating them.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedAccess Keysa11y/accesskeys · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Access keys provide keyboard shortcuts for elements. Duplicate access keys cause only one to work, confusing users. Ensure each accesskey value is unique. Consider whether access keys are necessary at all, as they can conflict with browser/OS shortcuts.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedAgent Answerabilityai-visibility/answerability · Unscored

0 passing · 0 warnings · 0 failures · 1 not assessed · 0 not applicable

How to assess it
For each question the site could not answer: put the answer in plain text on the page an agent would land on, make that page's Markdown representation include it, link the page from llms.txt with wording that matches the question, and make sure nothing on the path is a 404 or JavaScript-only. Then re-audit and record again: the pinned questions show whether the change worked.

  • Judgement task (settled-by caller): from the homepage text below ONLY, write 3–5 questions a prospective customer would ask: what the service is, whether it has a specific feature, which problem it solves. Pin them: `chad-audit questions --project-name <p> --crawl <crawl> --set questions.json` (a JSON array of strings). Then: Answer each question by reading the site as an agent would (pages and their Markdown; not llms.txt on this pass). For each: claim answered | partial | not_answered, with the page URL and an exact quote of at least 20 characters. For a miss, check whether llms.txt links the answering page and how it is worded, whether that page's Markdown exists and contains the answer, 404s on the way, and JavaScript-only content; write the fix. Record: `chad-audit record <crawl> --project-name <p> --file results.json` ({"model": "...", "verdicts": [{"question": "q1", "claim": "...", "url": "...", "quote": "...", "usedLlmsTxt": false, "diagnosis": "...", "fix": "..."}]}). chad-audit verifies each quote against the text this crawl captured.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not fully assessedARIA Allowed Attributesa11y/aria-allowed-attr · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Some ARIA attributes are not appropriate for certain roles or elements. For example, role='presentation' should not have aria-label since it removes semantic meaning. Remove conflicting attributes or reconsider the element's role.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Command Namea11y/aria-command-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Command elements (buttons, links, menu items) must have accessible names. Add text content, aria-label, aria-labelledby, or title attribute. For icon-only buttons, use aria-label to describe the action (e.g., aria-label='Close').

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Dialog Namea11y/aria-dialog-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Elements with role='dialog' or role='alertdialog' (and native <dialog>) must have an accessible name. Add aria-label with a descriptive label, or use aria-labelledby pointing to a visible heading inside the dialog. A title attribute also works but is less preferred. Without a name, screen reader users won't know the purpose of the dialog.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Hidden Bodya11y/aria-hidden-body · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Never set aria-hidden='true' on the <body> element. This makes the entire page invisible to assistive technology. If you need to hide content when a modal is open, add aria-hidden to sibling elements of the modal, not to body.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Hidden Focusa11y/aria-hidden-focus · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Elements with aria-hidden='true' should not contain focusable content. When an element is hidden from assistive technology but still focusable, keyboard users can tab to it but screen reader users won't know what they're interacting with. Either remove aria-hidden or make children non-focusable with tabindex='-1'.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Input Field Namea11y/aria-input-field-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
All input fields need accessible names. Best options: 1) Use <label for='inputId'>. 2) Use aria-label or aria-labelledby. 3) Wrap input in <label>. Placeholder alone is not sufficient as it disappears when typing.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Meter Namea11y/aria-meter-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Meter elements must have accessible names to describe what they're measuring. Add aria-label, aria-labelledby, or an associated <label>. Example: <meter aria-label='Battery level' value='0.8'>80%</meter>

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Progressbar Namea11y/aria-progressbar-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Progressbar elements must have accessible names to describe what process is being tracked. Add aria-label, aria-labelledby, or an associated <label>. Example: <progress aria-label='Upload progress' value='50' max='100'>50%</progress>

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Required Attributesa11y/aria-required-attr · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Some ARIA roles require specific attributes to be present. For example, role='checkbox' requires aria-checked, role='slider' requires aria-valuenow. Add the missing required attributes with appropriate values.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Required Childrena11y/aria-required-children · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Some ARIA roles require specific child roles. For example, role='list' must contain role='listitem', role='menu' must contain menu items. Add the required child elements with appropriate roles.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Required Parenta11y/aria-required-parent · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Some ARIA roles must be contained within specific parent roles. For example, role='listitem' must be within role='list', role='option' must be within role='listbox'. Restructure your markup to ensure proper parent-child relationships.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Texta11y/aria-text · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Elements with role='text' tell screen readers to treat the content as a single text string. If focusable elements (links, buttons, inputs) are nested inside, screen reader users cannot interact with them properly. Remove role='text' from the parent, or restructure so focusable elements are outside the role='text' container.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Toggle Field Namea11y/aria-toggle-field-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Toggle fields need accessible names to describe what they control. Use <label for='id'>, aria-label, aria-labelledby, or wrap in <label>. Example: <label><input type='checkbox'> Subscribe to newsletter</label>

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Tooltip Namea11y/aria-tooltip-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Tooltip elements with role='tooltip' must have accessible content. The tooltip content serves as its accessible name. Ensure tooltips have text content or use aria-label for icon-based tooltips.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Treeitem Namea11y/aria-treeitem-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Treeitem elements must have accessible names. Add text content, aria-label, or aria-labelledby. The text content within the treeitem typically serves as its name.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Valid Attribute Valuesa11y/aria-valid-attr-value · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Ensure ARIA attribute values match the expected type. Boolean attributes should be 'true' or 'false'. Enumerated attributes like aria-current have specific allowed values. Numeric attributes like aria-level must be numbers. Check the WAI-ARIA specification for valid values.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Valid Attributesa11y/aria-valid-attr · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Use only valid ARIA attribute names as defined in the WAI-ARIA specification. Common typos include 'aria-labeledby' (should be 'aria-labelledby'), 'aria-role' (should be 'role'), and 'aria-description' vs 'aria-describedby'. Consult MDN or the WAI-ARIA spec for the complete list of valid attributes.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedARIA Valid Rolesa11y/aria-roles · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Use only valid ARIA role values as defined in the WAI-ARIA specification. Common mistakes include using made-up roles or misspelling valid roles. Roles are case-sensitive and must be lowercase. Multiple roles can be specified, separated by spaces, but the first valid role is used.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedButton Namea11y/button-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Buttons must have accessible names. Options: 1) Add text content inside the button. 2) Use aria-label for icon buttons. 3) Use aria-labelledby to reference visible text. 4) Use title attribute (less preferred). For <input type='button'>, use the value attribute.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedCanonical Form Reviewcore/canonical-form-drift · Unscored

4 passing · 0 warnings · 0 failures · 44 not assessed · 0 not applicable

How to assess it
Review whether sibling pages intentionally use different canonical preferences. Preserve meaningful query identities and legitimate conventions in separate sections. Align canonical preferences where unintended, then repeat the same captured cohort.

  • At least three captured sibling documents and a repeated canonical form are required to assess this cohort.

    https://trychad.ai/ ↗
  • At least three captured sibling documents and a repeated canonical form are required to assess this cohort.

    https://trychad.ai/ ↗
  • At least three captured sibling documents and a repeated canonical form are required to assess this cohort.

    https://trychad.ai/ ↗

3 examples shown; 45 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedCaptured Template Artifactscontent/placeholder-text · Unscored

72 passing · 0 warnings · 0 failures · 3 not assessed · 0 not applicable

How to assess it
Review the supplied excerpt in the named page and capture source. Replace unintended template output or render the value before publishing. Code examples, explicitly hidden content and templates are excluded, but captured text alone cannot establish author intent or browser visibility. A raw capture can differ from a hydrated browser view. This observation has no score penalty.

3 examples shown; 72 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedColor Contrasta11y/color-contrast · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Text must have sufficient contrast with its background for readability. WCAG AA requires 4.5:1 for normal text and 3:1 for large text (18px+ or 14px+ bold). Use tools like WebAIM Contrast Checker to verify. Common issues: light gray text, text over images without overlay. Don't rely on color alone to convey information - add icons or text labels.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedDecision pages for your rivalscontent/decision-pages · Unscored

0 passing · 0 warnings · 0 failures · 1 not assessed · 0 not applicable

How to assess it
For each rival without a page, publish one that compares you with it honestly: a table of the features and prices a buyer decides on, prices with their source and checked date, a visible updated date, and an FAQ of the questions buyers ask when choosing between you. Add the missing elements to a page that has some of them.

Look up this check's recorded history →
Not fully assessedDefinition List Itema11y/dlitem · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
The <dt> and <dd> elements must be contained within a <dl> (definition list). Move orphaned dt/dd elements inside a <dl> container.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedDefinition List Structurea11y/definition-list · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Definition lists (<dl>) should only contain <dt> (term) and <dd> (description) elements as direct children. Optionally, they can be wrapped in <div> for styling. Do not put other elements like <p>, <span>, or <li> directly inside <dl>.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedDeprecated ARIA Rolesa11y/aria-deprecated-role · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Avoid deprecated or abstract ARIA roles. Use the recommended alternatives. Abstract roles are never meant to be used directly - they're base types that other roles extend. Replace with specific, concrete roles.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedDuplicate ID Activea11y/duplicate-id-active · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Duplicate IDs on focusable elements (links, buttons, inputs) break keyboard navigation and label associations. Browsers only recognize the first element with a given ID, so labels, focus management, and ARIA references will target the wrong element. Ensure every focusable element with an id attribute has a unique value.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedDuplicate ID ARIAa11y/duplicate-id-aria · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
IDs referenced by ARIA attributes (aria-labelledby, aria-describedby, aria-controls, etc.) must be unique on the page. Duplicate IDs cause assistive technology to potentially reference the wrong element. Rename duplicate IDs to be unique.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedEmpty Headingsa11y/empty-heading · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Headings (h1-h6) must have text content for screen readers to announce. Empty headings create confusing navigation. Either add text content, use aria-label, or remove the empty heading element.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedFacts that need JavaScriptai-visibility/js-dependent-facts · Unscored

0 passing · 0 warnings · 0 failures · 1 not assessed · 0 not applicable

How to assess it
Put the real number in the HTML the server sends, and let a script animate it if you like. A reader that does not run scripts sees the zero or empty value.

  • Only one capture of each page exists (no browser render), so facts that appear only after JavaScript runs cannot be compared.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not fully assessedFrame Titlea11y/frame-title · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
All iframes must have a title attribute describing their content. This helps screen reader users understand what the iframe contains. Example: <iframe src='video.html' title='Product demo video'>

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedHeading Ordera11y/heading-order · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Headings should follow a logical hierarchy without skipping levels. Screen reader users navigate by headings, so skipping from H1 to H3 is confusing. Correct order: H1 -> H2 -> H3 (not H1 -> H3). You can have multiple headings at the same level, and you can go back up (H3 -> H2 is fine). Think of headings as an outline - they should make sense when read alone.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedHTML Lang Valida11y/html-lang-valid · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
The lang attribute on <html> should be a valid BCP 47 language tag. Use two-letter ISO 639-1 codes like 'en' for English, 'es' for Spanish, 'fr' for French. You can add region subtags like 'en-US' or 'en-GB'. This helps screen readers use correct pronunciation.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedHTML XML Lang Mismatcha11y/html-xml-lang-mismatch · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
If both lang and xml:lang are present on the <html> element, they must have the same base language. Mismatches can cause screen readers to announce content in the wrong language. Typically, you only need lang for HTML5 documents.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedIdentical Links Same Purposea11y/identical-links-same-purpose · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Links with the same visible text should go to the same URL. When identical link text leads to different destinations, it confuses screen reader users who navigate by listing links. Make link text unique or more descriptive to differentiate destinations.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedInput Image Alta11y/input-image-alt · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Image inputs (input type='image') are submit buttons that use an image. They must have alt text describing the button's action. Example: <input type='image' src='submit.png' alt='Submit form'>

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedLabel Content Name Mismatcha11y/label-content-name-mismatch · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
For controls with visible labels, the accessible name should contain the visible text. Voice control users say what they see - if the accessible name doesn't include the visible label, voice commands won't work. Example: A button showing 'Search' should not have aria-label='Find products'.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedLink in Text Blocka11y/link-in-text-block · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Links within text blocks must be distinguishable by more than just color (for color-blind users). Use underlines, bold, borders, or other visual indicators. Exception: Links can rely on color alone if the contrast ratio between link and surrounding text is at least 3:1 and you provide additional cues on hover/focus.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedList Item Contexta11y/listitem · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
The <li> element must be contained within a <ul>, <ol>, or <menu> element. Orphaned list items lose their semantic meaning. Wrap them in an appropriate list container.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedMeta Refresha11y/meta-refresh · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Avoid using <meta http-equiv='refresh'> for redirects or auto-refresh. They can disorient users, especially those using screen readers. Use server-side redirects (301/302) instead. If content must refresh, provide a user control and warn users beforehand.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedMultiple Labelsa11y/form-field-multiple-labels · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Form inputs should have only one associated label. Multiple labels can confuse assistive technology. If you need multiple text descriptions, use aria-describedby for supplementary text instead of multiple labels.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedObject Alt Texta11y/object-alt · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Object elements need alternative content for when the embedded content can't be displayed or for assistive technology. Add content between <object> tags as fallback, or use aria-label/aria-labelledby.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedOne Main Landmarka11y/landmark-one-main · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Each page should have exactly one <main> element or element with role='main'. This helps screen reader users quickly navigate to the primary content. Multiple main landmarks confuse navigation. Use <aside>, <nav>, or other landmarks for secondary content.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedPossible Encoding Artifactscontent/mojibake · Unscored

48 passing · 0 warnings · 0 failures · 2 not assessed · 0 not applicable

How to assess it
Compare the captured excerpt with the original content and a browser response. Inspect response decoding and the publishing pipeline before changing text or encoding declarations. The audit retains decoded text, so a replacement character or charset declaration alone cannot establish where corruption occurred. Intentional examples can also contain these characters. This observation has no score penalty.

3 examples shown; 47 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedPossible Soft 404 in Captured Responsecrawl/soft-404 · Unscored

24 passing · 0 warnings · 0 failures · 1 not assessed · 0 not applicable

How to assess it
Review the requested URL, response status and captured error excerpt. If the resource is missing, return an appropriate 404 or 410 status. If it should exist, restore its content and investigate intermittent error responses. Compare the server response with the browser view and Search Console; no confirmation request is performed. Thin content or noindex alone does not trigger this observation.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedPrivacy Policyeeat/privacy-policy · Unscored

0 passing · 0 warnings · 0 failures · 1 not assessed · 0 not applicable

How to assess it
A privacy policy is required by law in many jurisdictions (GDPR, CCPA) and signals trustworthiness. Link it from your footer on every page. Cover: what data you collect, how you use it, third-party sharing, user rights, and contact for privacy concerns. Keep it updated when practices change.

  • Privacy policy link found but its destination was not captured, so its content is unassessed. A crawl that includes it settles this.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not fully assessedRedundant Image Alta11y/image-redundant-alt · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Image alt text should not start with 'image of', 'photo of', 'picture of', etc. Screen readers already announce that it's an image. Alt text should describe the content or function, not state the obvious. Also avoid duplicating adjacent text in the alt.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedReview Captured Detail-Page Schema Coverageschema/template-coverage · Unscored

0 passing · 0 warnings · 0 failures · 1 not assessed · 0 not applicable

How to assess it
Review the target and named peer captures. Add schema only when it describes that page’s actual main content; review absent fields and repeated section headings only when they are applicable to the target. Article, product and software detail pages have separate cohorts. Global cart navigation and generic SaaS signals do not establish product applicability. Missing, partial, inconsistent or bounded-away inputs remain unknown. This observation has no score penalty and does not predict search rankings or AI citations.

  • 1 captured inputs are missing, partial or inconsistent; their template coverage remains unknown.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not fully assessedSelect Namea11y/select-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Select elements need accessible labels. Use <label for='selectId'>Label</label>, wrap in <label>, or use aria-label/aria-labelledby.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedSkip Linka11y/skip-link · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Skip links allow keyboard users to bypass repetitive navigation and jump directly to main content. Add a hidden link at the very beginning of your page: <a href='#main-content' class='skip-link'>Skip to main content</a>. Style it to become visible on focus. Ensure the target (#main-content) has tabindex='-1' if it's not naturally focusable. Alternative: use landmark roles like <main> which screen readers can navigate to directly.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedTabindex Valuesa11y/tabindex · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Avoid positive tabindex values (1, 2, 3...) as they override natural tab order and confuse keyboard users. Use tabindex='0' to add elements to tab order, tabindex='-1' to make elements focusable via JavaScript only. Rely on natural document order for tab sequence.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedTable Cell Headersa11y/td-headers-attr · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
When using the headers attribute on <td> elements to associate cells with headers, ensure each id in the headers attribute matches an existing <th> element's id in the same table.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedTable Duplicate Namea11y/table-duplicate-name · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
When a page has multiple data tables, each should have a unique accessible name to help users distinguish between them. Use <caption>, aria-label, or aria-labelledby with unique text for each table.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedTH Has Data Cellsa11y/th-has-data-cells · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
Each <th> element should be associated with at least one <td> data cell in the same row or column. Orphaned header cells without data cells usually indicate the table is being misused for layout purposes. If the table is for layout, add role='presentation'. Otherwise, ensure every header has corresponding data cells.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not fully assessedValid Lang Attributesa11y/valid-lang · Unscored

0 passing · 0 warnings · 0 failures · 25 not assessed · 0 not applicable

How to assess it
All lang attributes should use valid BCP 47 language tags. This includes lang attributes on any element, not just <html>. Use lang to mark up content in a different language from the page default.

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Passing4XX Pages in Sitemapcrawl/sitemap-4xx

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingAbout Pageeeat/about-page

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingAffiliate Disclosureeeat/affiliate-disclosure

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingAgent Readabilityai-visibility/agent-readability · Unscored

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingAI Crawler Shellai-visibility/crawler-shell

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingAI Search Crawler Directivesai-visibility/crawler-directives

11 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • PerplexityBot (search): declared policy allowed. Surfaces and links sites in Perplexity search; not a foundation-model training crawler.

    https://trychad.ai/ ↗
  • Claude-SearchBot (search): declared policy allowed. Indexes content to improve Claude search responses.

    https://trychad.ai/ ↗
  • GPTBot (training): declared policy allowed. Collects content that may be used to train foundation models.

    https://trychad.ai/ ↗

3 examples shown; 8 more check results are included in the counts above.

Look up this check's recorded history →
PassingAll Non-Indexed Pagescrawl/all-noindex-pages

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingAnalytics Trackinganalytics/gtm-present

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingAnchor Textlinks/anchor-text

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingArticle Identity Consistencyschema/article-identity

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingAuthor Bylineseeat/author-byline

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingAuthor Expertiseeeat/author-expertise

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingBroken HTMLcontent/broken-html

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingBroken Imagesimages/broken-images

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingBroken Linkslinks/broken-links

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • No broken external links found (2 more could not be checked — the target refused our request)

    https://trychad.ai/ ↗
Look up this check's recorded history →
PassingBrowser-Required Auditsperf/browser-required

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingCache Headersperf/cache-headers

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingCanonical Chaincrawl/canonical-chain

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingCanonical Clusteringcrawl/canonical-cluster

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingCanonical Header Validationcore/canonical-header

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingCanonical URLcore/canonical

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingCharsetcore/charset

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingClaimed agent HTTP responseai-visibility/agent-response · Unscored

18 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • Claimed ChatGPT-User HTTP experiment: successful HTML content observed. This does not reproduce verified vendor-IP access or establish indexing/citation effects. Sampled page: /about/.

    https://trychad.ai/ ↗
  • Claimed Claude-User HTTP experiment: successful HTML content observed. This does not reproduce verified vendor-IP access or establish indexing/citation effects. Sampled page: /about/.

    https://trychad.ai/ ↗
  • Claimed Claude-User HTTP experiment: successful HTML content observed. This does not reproduce verified vendor-IP access or establish indexing/citation effects. Sampled page: /geo/financial-services/.

    https://trychad.ai/ ↗

3 examples shown; 15 more check results are included in the counts above.

Look up this check's recorded history →
PassingCLS Optimization Hintsperf/cls-hints

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingCompressionperf/compression

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingContact Pageeeat/contact-page

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingContent Dateseeat/content-dates

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingContent Freshnesscontent/freshness

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingContent Landmarkcontent/landmark

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingContradicting Robots Meta Tagscore/robots-multiple

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingDisclaimerseeat/disclaimers

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingDoctypecore/doctype

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingDuplicate Descriptioncontent/duplicate-description

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingDuplicate JavaScriptperf/duplicate-js

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingDuplicate Titlecontent/duplicate-title

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingEntity Identityschema/entity-identity · Unscored

9 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • No unexplained name differences for https://www.anthropic.com/#organization on 1 captured declaring pages. Captured aliases are accepted; this does not establish whole-website consistency.

    https://trychad.ai/ ↗
  • Captured address declarations for https://trychad.ai/#organization are matching after bounded normalization. This does not establish accuracy, exclusivity or whole-site consistency.

    https://trychad.ai/ ↗
  • No unexplained name differences for https://trychad.ai/#arriba on 1 captured declaring pages. Captured aliases are accepted; this does not establish whole-website consistency.

    https://trychad.ai/ ↗

3 examples shown; 6 more check results are included in the counts above.

Look up this check's recorded history →
PassingExternal Link Securitysecurity/new-tab

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingExternal Linkslinks/external-links

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingFaviconcore/favicon

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingFigure Captionsimages/figure-figcaption

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingFont Loadingperf/font-loading

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingForm HTTPSsecurity/form-https

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingH1 Tagcore/h1

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingHreflang Tagsi18n/hreflang

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingHSTS Headersecurity/hsts

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingHTTP/2perf/http2

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingHTTPSsecurity/https

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingHTTPS Downgradelinks/https-downgrade

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingImage Alt Textimages/alt-text

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingImage Dimensionsimages/dimensions

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingImage Filename Qualityimages/filename-quality

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingImage Optimizationimages/optimized

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingIndexability Checkcrawl/indexability

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingIndexability Conflictscrawl/indexability-conflicts

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingInline SVG Sizeimages/svg-inline

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingInternal Linkslinks/internal-links

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingInterstitialsmobile/interstitials

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingInvalid Linkslinks/invalid-links

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingJavaScript Redirectsperf/js-redirects

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingJS Librariesperf/js-libraries

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingJSON-LD Validschema/json-ld-valid

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingLang Attributei18n/lang-attribute

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingLatest captured article opening reviewcontent/latest-article-review · Unscored

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • AI review sample — latest reliably dated captured article: ARRIBA: a SafeSwitch Case Study — Chad AI (https://trychad.ai/case-studies/arriba-safeswitch/), published 2026-11-04T00:00:00.000Z. Review this captured opening: does it answer the title's main question promptly, or delay it with generic preamble? Validate before suggesting a change. Similar openings elsewhere are a follow-up hypothesis, not a verified finding. 2 captured article records have unknown or conflicting publication dates; uncaptured articles are unassessed.

    https://trychad.ai/ ↗
Look up this check's recorded history →
PassingLazy Loadingimages/lazy-loading

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingLazy Loading Above Foldperf/lazy-above-fold

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingLeaked Environment Variablessecurity/leaked-secrets

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingLegacy JavaScriptperf/legacy-js

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Passingllms.txtai-visibility/llms-txt

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

External sourcesThe /llms.txt file ↗
Look up this check's recorded history →
Passingllms.txt linksai-visibility/llms-txt-links · Unscored

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • 20 of 20 same-site links in llms.txt resolve; 20 of 181 distinct links probed. File size 52.8 KiB. Hygiene for assistants that already read the site. Not shown to lift AI citations.

    https://trychad.ai/ ↗
Look up this check's recorded history →
PassingMarkdown Alternateai-visibility/markdown-alternate

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingMeta Tags in Bodycontent/meta-in-body

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingMIME Type Validationcontent/mime-type

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingMixed Contentsecurity/mixed-content

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingModern Image Formatsimages/modern-format

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingMultiple Canonical Tagscore/canonical-multiple

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingNofollow Internallinks/nofollow-internal

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingNoindex in Sitemapcrawl/noindex-in-sitemap

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingNosnippet Directivecore/nosnippet

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingNot Found Handlingai-visibility/not-found-handling

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingOffscreen Lazy Loadingimages/offscreen-lazy

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingOG Image Sizesocial/og-image-size

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingOG URL Matchsocial/og-url-match

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingOpen Graph Tagscore/og-tags

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingOptional Markdown deliveryai-visibility/markdown-negotiation · Unscored

2 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • An agent reading this page gets nonempty Markdown via the .md path. Optional capability; content equivalence and AI consumption were not established. llms.txt lists this page.

    https://trychad.ai/ ↗
  • The Markdown twin matches the page's length (ratio 1.04). Hygiene for assistants that already read the site. Not shown to lift AI citations.

    https://trychad.ai/ ↗
Look up this check's recorded history →
PassingOrganization Schemaschema/organization · Unscored

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingPaginationcrawl/pagination

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingPermissions-Policysecurity/permissions-policy

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingPhysical Addresseeat/physical-address

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingPicture Element Validationimages/picture-element

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingPreconnect Hintsperf/preconnect

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingPrivacy Policylegal/privacy-policy

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingProduct Schemaschema/product

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingRedirect Chainscrawl/redirect-chain

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingRedirect Chainslinks/redirect-chains

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingReferrer-Policysecurity/referrer-policy

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingRender-Blocking Resourcesperf/render-blocking

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingResponsive Imagesimages/srcset

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingRobots Metacore/robots-meta

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingRobots Meta Conflictcrawl/robots-meta-conflict

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingRobots.txtcrawl/robots-txt

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingSampled resource deliveryperf/resource-delivery · Unscored

3 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • Sampled asset delivery facts observed. Decoded bytes are not transfer bytes; no whole-site byte budget or compression benefit is inferred.

    https://trychad.ai/ ↗
  • Sampled asset delivery facts observed. Decoded bytes are not transfer bytes; no whole-site byte budget or compression benefit is inferred.

    https://trychad.ai/ ↗
  • Sampled asset delivery facts observed. Decoded bytes are not transfer bytes; no whole-site byte budget or compression benefit is inferred.

    https://trychad.ai/ ↗
Look up this check's recorded history →
PassingSchema + Noindex Conflictcrawl/schema-noindex-conflict

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingSchema Content Mismatchschema/content-mismatch

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingSite-wide AI Readabilityai-visibility/ssr-coverage

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingSitemap Coveragecrawl/sitemap-coverage

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingSitemap Domaincrawl/sitemap-domain

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingSitemap Existscrawl/sitemap-exists

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingSitemap hygienecrawl/sitemap-hygiene · Unscored

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • No empty child sitemaps, duplicate URLs across children, or single-timestamp lastmod values in the sitemaps read. Hygiene for assistants that already read the site. Not shown to lift AI citations.

    https://trychad.ai/ ↗
Look up this check's recorded history →
PassingSitemap Validcrawl/sitemap-valid

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingSlug Keywordsurl/slug-keywords

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingSocial Profilessocial/social-profiles

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingSource Mapsperf/source-maps

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingTel & Mailto Linkslinks/tel-mailto

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingTerms of Servicelegal/terms-of-service

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingTerms of Serviceeeat/terms-of-service

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingThird-Party Cookiessecurity/third-party-cookies

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingTime To First Byteperf/ttfb

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingTrailing Slashurl/trailing-slash

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingTrust Signalseeat/trust-signals

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingTwitter Cardscore/twitter-cards

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingUnrecognised third-party hostsanalytics/tech-candidates · Unscored

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

  • 1 third-party host(s) loaded here are not recognised by any fingerprint. For each host decide what product it is and whether the site really integrates it (a leftover tag is not an integration). Report any worth recognising as a fingerprint: host, product, category.

    https://trychad.ai/ ↗
Look up this check's recorded history →
PassingURL Hyphensurl/hyphens

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingURL Lengthurl/length

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingURL Lowercaseurl/lowercase

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingURL Parametersurl/parameters

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingURL Special Charactersurl/special-chars

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingVideo Accessibilityvideo/video-accessible

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingVideo Schemavideo/video-schema

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingVideo Schemaschema/video

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingVideo Thumbnailvideo/video-thumbnail

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingViewport Metamobile/viewport

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingViewport Zoommobile/viewport-zoom

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingWAF Challenge Pagescrawl/waf-challenge-pages

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingWebSite Search Schemaschema/website-search

25 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
PassingX-Content-Type-Optionssecurity/x-content-type

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingX-Frame-Optionssecurity/x-frame-options

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
PassingYMYL Detectioneeat/ymyl-detection

1 passing · 0 warnings · 0 failures · 0 not assessed · 0 not applicable

Look up this check's recorded history →
Not applicableA2A Agent Cardai-visibility/a2a-agent-card · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

  • No A2A agent card at /.well-known/agent-card.json (it answered HTTP 404). Optional; absence is neutral.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not applicableAgent documents for developer sitesai-visibility/agent-docs · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

  • No developer or API signal (API catalog, OAuth metadata, a service-desc link) and the site is not pinned as a developer site, so agent documents are not looked for.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not applicableAPI Catalog (RFC 9727)ai-visibility/api-catalog · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

  • No API catalog: /.well-known/api-catalog answered HTTP 404 and the homepage advertises none. Optional for a site without public APIs; absence is neutral.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not applicableCaptured Rating Associationschema/rating-scope · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 25 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not applicableContent Signals in robots.txtai-visibility/content-signals · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

  • robots.txt declares no Content-Signal. Under the Content Signals Policy that neither grants nor restricts any use; optional.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not applicableLCP Optimization Hintsperf/lcp-hints · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 25 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →
Not applicableLocalBusiness Schemaschema/local-business · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

  • No recognized LocalBusiness declaration found in the captured pages' inspected JSON-LD subset; the crawl does not establish that this business needs local-business markup.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not applicableNear-identical templated pagescontent/templated-near-duplicates · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

Look up this check's recorded history →
Not applicableOAuth Authorization Server Metadata (RFC 8414)ai-visibility/oauth-server-metadata · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

  • No OAuth authorization server metadata at /.well-known/oauth-authorization-server (it answered HTTP 404). Optional; absence is neutral.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not applicableOAuth Protected Resource Metadata (RFC 9728)ai-visibility/oauth-resource-metadata · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 1 not applicable

  • No OAuth protected resource metadata at /.well-known/oauth-protected-resource (it answered HTTP 404). Optional; absence is neutral.

    https://trychad.ai/ ↗
Look up this check's recorded history →
Not applicableReview Schemaschema/review · Unscored

0 passing · 0 warnings · 0 failures · 0 not assessed · 25 not applicable

3 examples shown; 22 more check results are included in the counts above.

Look up this check's recorded history →

READ THE SMALL PRINT

Readiness is a starting point.
Visibility is an outcome.

This is a saved, sampled technical audit of 25 pages captured on 2026-11-10. It is not a live status page or a whole-site certificate. Not checked, unsupported and unknown results never count as passing.

The headline score and grade come directly from chad-audit. The tabs group existing checks; they do not add weights or calculate new SEO, LLM or agent scores. Unscored observations stay unscored.

Discovery files and accessible content show capabilities. They do not prove that an AI assistant visited, cited or recommended this site. This scan includes no agent journey, prompt-injection evaluation, payment test or measured citation uplift.

Score model v9 · Catalogue d6e379ab11aa
Engine 4306a2a63e5f

Your site goes through
the same checks.

Run a free scan →Read the audit changelog →