---
title: "trychad.ai — SEO, LLM & agent readiness report | Chad"
description: "Our own site's technical audit: the recorded score, SEO, LLM readiness and agent discovery checks, evidence and coverage limits. Explore every result."
canonical: https://trychad.ai/score/trychad.ai/
---

[← Public site reports](https://trychad.ai/score/)

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 2026-11-10 · 25-page sample · Provisional coverage

[Scan your site →](https://trychad.ai/score/#scan)

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 ↓](#methodology)

##[01 / EXPLORESEO ↗174 rules · 35 with findings7 not fully assessed](#score-checks)##[02 / EXPLORELLM readiness ↗72 rules · 18 with findings7 not fully assessed](#score-checks)##[03 / EXPLOREAgent discovery ↗28 rules · 1 with findings2 not fully assessed](#score-checks)

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.

Search checksStatusEvery statusNeeds a fixNeeds attentionNot fully assessedPassingNot applicable

240 rules shown · findings first

Needs a fix**Font Size**mobile/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.

-

4 inline font sizes below 12px detected

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

8 inline font sizes below 12px detected

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)
-

70 inline font sizes below 16px (aim ≥16px for mobile readability)

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=mobile%2Ffont-size)

Needs attention**Article Citability Signals**schema/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/ ↗](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/ ↗](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/ ↗](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 →](https://trychad.ai/changelog/?q=schema%2Farticle-citability)

Needs attention**Article Schema**schema/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.

-

This page reads as an article (long, dated, bylined) but declares no Article JSON-LD for itself — related articles do not describe this page

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Article schema has the inspected recommended fields.

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Article schema has the inspected recommended fields.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)

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

**External sources**[Google Search Central: Article structured data ↗](https://developers.google.com/search/docs/appearance/structured-data/article)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Farticle)

Needs attention**Author Info**content/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.

-

No author markup found (rel=author, Person schema, or itemprop=author)

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No author markup found (rel=author, Person schema, or itemprop=author)

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

No author markup found (rel=author, Person schema, or itemprop=author)

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fauthor-info)

Needs attention**Breadcrumb Schema**schema/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.

-

No BreadcrumbList JSON-LD found

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

No BreadcrumbList JSON-LD found

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

No BreadcrumbList JSON-LD found

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fbreadcrumb)

Needs attention**Captured Entity References**schema/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/ ↗](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/ ↗](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/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)

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

**External sources**[W3C JSON-LD 1.1: Node Identifiers ↗](https://www.w3.org/TR/json-ld11/#node-identifiers)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fentity-dangling)

Needs attention**Citation Information Gain**content/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.

-

Article cites 1 source(s), all third-party — nothing here an engine cannot get from the original sources, so there is no reason to cite this page over them.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

Article cites 1 source(s), all third-party — nothing here an engine cannot get from the original sources, so there is no reason to cite this page over them.

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

1 of 4 citation(s) are first-party

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Finformation-gain)

Needs attention**Citations**eeat/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fcitations)

Needs attention**Consent Mode**analytics/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.

-

Google tags detected but no Consent Mode v2 signals found — required for Google Ads in EU/EEA (March 2024)

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

Google tags detected but no Consent Mode v2 signals found — required for Google Ads in EU/EEA (March 2024)

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Google tags detected but no Consent Mode v2 signals found — required for Google Ads in EU/EEA (March 2024)

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=analytics%2Fconsent-mode)

Needs attention**Content Security Policy**security/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.

-

Missing Content-Security-Policy header

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fcsp)

Needs attention**Cookie Consent**legal/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.

-

No cookie consent mechanism detected — required under GDPR/ePrivacy for EU users

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

No cookie consent mechanism detected — required under GDPR/ePrivacy for EU users

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

No cookie consent mechanism detected — required under GDPR/ePrivacy for EU users

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=legal%2Fcookie-consent)

Needs attention**Critical Request Chains**perf/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>.

-

High render-blocking chain (~3 CSS + 11 JS blocking scripts)

[https://trychad.ai/ ↗](https://trychad.ai/)
-

High render-blocking chain (~3 CSS + 12 JS blocking scripts)

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

High render-blocking chain (~3 CSS + 12 JS blocking scripts)

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fcritical-request-chains)

Needs attention**DOM Size**perf/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.

-

Large DOM (~4998 elements)

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Large DOM (~2032 elements)

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

DOM ~815 elements

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fdom-size)

Needs attention**Duplicate Entity Definitions**schema/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.

-

2 SoftwareApplication definitions include 1 without @id; add distinct stable IDs or reference the shared entity so consumers can tell whether they are the same thing.

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No conflicting, redundant, or unkeyed singleton entity definitions found

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

No conflicting, redundant, or unkeyed singleton entity definitions found

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fduplicate-entity)

Needs attention**Editorial Policy**eeat/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Feditorial-policy)

Needs attention**FAQ Schema**schema/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.

-

Page has a Q&A section but no FAQPage JSON-LD — an answer engine has to infer the question and answer pairs out of prose instead of reading them

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

FAQPage present with 5 questions

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

No Q&A section on this page — FAQPage not applicable

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)

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

**External sources**[Schema.org: FAQPage type definition ↗](https://schema.org/FAQPage)[Google Search Central: removing the FAQ rich result (7 May 2026) ↗](https://developers.google.com/search/updates#removing-faq-rich-result)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Ffaq)

Needs attention**Form CAPTCHA**security/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.

-

1 of 1 form lack CAPTCHA or honeypot protection

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

1 of 1 form lack CAPTCHA or honeypot protection

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

1 of 1 form lack CAPTCHA or honeypot protection

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fform-captcha)

Needs attention**Geo Meta Tags**local/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/ ↗](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/ ↗](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/ ↗](https://trychad.ai/blog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=local%2Fgeo-meta)

Needs attention**Heading Hierarchy**content/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.

-

Skipped heading levels: h2->h4

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Skipped heading levels: h2->h4

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Skipped heading levels: h2->h4

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fheading-hierarchy)

Needs attention**Horizontal Scroll**mobile/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.

-

overflow-x: scroll/auto detected — verify intentional

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

overflow-x: scroll/auto detected — verify intentional

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

overflow-x: scroll/auto detected — verify intentional

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=mobile%2Fhorizontal-scroll)

Needs attention**INP Optimization Hints**perf/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.

-

29 inline scripts may block the main thread (INP risk)

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

27 inline scripts may block the main thread (INP risk)

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

25 inline scripts may block the main thread (INP risk)

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Finp-hints)

Needs attention**Meta Description**core/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.

-

Description too long (176 chars, aim 70-160)

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Description too long (162 chars, aim 70-160)

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

Description too long (234 chars, aim 70-160)

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fmeta-description)

Needs attention**Meta Title**core/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.

-

Title too short (21 characters, aim 30-60)

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Title too short (22 characters, aim 30-60)

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

Title too long (61 characters, aim 30-60)

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fmeta-title)

Needs attention**NAP Consistency**local/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=local%2Fnap-consistency)

Needs attention**Observed Internal Link Sources**links/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/ ↗](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/ ↗](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/ ↗](https://trychad.ai/)

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

**External sources**[Google Search Central: Link best practices ↗](https://developers.google.com/search/docs/crawling-indexing/links-crawlable)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Fweak-internal-links)

Needs attention**Orphan Pages**links/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Forphan-pages)

Needs attention**Reading Level**content/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.

-

Flesch score 52 — 10th-12th grade (fairly difficult) (aim for 60+)

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)
-

Flesch score 55 — 10th-12th grade (fairly difficult) (aim for 60+)

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Flesch score 42 — college level (difficult) (aim for 60+)

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Freading-level)

Needs attention**Review Captured Contextual Incoming Links**links/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/ ↗](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/ ↗](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/ ↗](https://trychad.ai/)

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

**External sources**[Google Search Central: Link best practices ↗](https://developers.google.com/search/docs/crawling-indexing/links-crawlable)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Fno-contextual-inbound)

Needs attention**Schema Deprecated for Google Rich Results**schema/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.

-

FAQPage no longer produces Google rich results. Still consumed by other AI engines for parsing Q&A/how-to content — keep it only if that is deliberate.

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

FAQPage no longer produces Google rich results. Still consumed by other AI engines for parsing Q&A/how-to content — keep it only if that is deliberate.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

FAQPage no longer produces Google rich results. Still consumed by other AI engines for parsing Q&A/how-to content — keep it only if that is deliberate.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)

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

**External sources**[Google Search Central: Changes to HowTo and FAQ rich results (August 2023) ↗](https://developers.google.com/search/blog/2023/08/howto-faq-changes)[Google Search Central: removing the FAQ rich result (7 May 2026) ↗](https://developers.google.com/search/updates#removing-faq-rich-result)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fdeprecated-for-google)

Needs attention**Semantic Completeness**content/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/ ↗](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/ ↗](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/ ↗](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 →](https://trychad.ai/changelog/?q=content%2Fsemantic-completeness)

Needs attention**Service Area Pages**local/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.

-

No LocalBusiness areaServed schema or service-area page found

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=local%2Fservice-area)

Needs attention**Share Buttons**social/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.

-

No social share buttons detected on this page

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

No social share buttons detected on this page

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

No social share buttons detected on this page

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=social%2Fshare-buttons)

Needs attention**Tap Targets**mobile/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 clusters of 4+ adjacent interactive elements detected — tap targets may be too small/close

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

High interactive element count (95) — verify tap target sizing on mobile

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

7 clusters of 4+ adjacent interactive elements detected — tap targets may be too small/close

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=mobile%2Ftap-targets)

Needs attention**URL Stop Words**url/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.

-

URL slug contains stop word(s): for

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

URL slug contains stop word(s): a

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

URL slug contains stop word(s): for

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Fstop-words)

Needs attention**Word Count**content/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.

-

Thin content (237 words)

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

Thin content (284 words)

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

Thin content (237 words)

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fword-count)

Not fully assessed**Access Keys**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

Rule disabled for this audit.

[https://trychad.ai/ ↗](https://trychad.ai/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faccesskeys)

Not fully assessed**Agent Answerability**ai-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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fanswerability)

Not fully assessed**ARIA Allowed Attributes**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-allowed-attr)

Not fully assessed**ARIA Command Name**a11y/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').

-

Rule disabled for this audit.

[https://trychad.ai/ ↗](https://trychad.ai/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-command-name)

Not fully assessed**ARIA Dialog Name**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

Rule disabled for this audit.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-dialog-name)

Not fully assessed**ARIA Hidden Body**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Rule disabled for this audit.

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-hidden-body)

Not fully assessed**ARIA Hidden Focus**a11y/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'.

-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Rule disabled for this audit.

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

Rule disabled for this audit.

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-hidden-focus)

Not fully assessed**ARIA Input Field Name**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Rule disabled for this audit.

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-input-field-name)

Not fully assessed**ARIA Meter Name**a11y/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>

-

Rule disabled for this audit.

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

Rule disabled for this audit.

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

Rule disabled for this audit.

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-meter-name)

Not fully assessed**ARIA Progressbar Name**a11y/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>

-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

Rule disabled for this audit.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Rule disabled for this audit.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-progressbar-name)

Not fully assessed**ARIA Required Attributes**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Rule disabled for this audit.

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-required-attr)

Not fully assessed**ARIA Required Children**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

Rule disabled for this audit.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-required-children)

Not fully assessed**ARIA Required Parent**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ ↗](https://trychad.ai/)
-

Rule disabled for this audit.

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-required-parent)

Not fully assessed**ARIA Text**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-text)

Not fully assessed**ARIA Toggle Field Name**a11y/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>

-

Rule disabled for this audit.

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Rule disabled for this audit.

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-toggle-field-name)

Not fully assessed**ARIA Tooltip Name**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-tooltip-name)

Not fully assessed**ARIA Treeitem Name**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-treeitem-name)

Not fully assessed**ARIA Valid Attribute Values**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

Rule disabled for this audit.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-valid-attr-value)

Not fully assessed**ARIA Valid Attributes**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

Rule disabled for this audit.

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-valid-attr)

Not fully assessed**ARIA Valid Roles**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-roles)

Not fully assessed**Button Name**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Rule disabled for this audit.

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fbutton-name)

Not fully assessed**Canonical Form Review**core/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/ ↗](https://trychad.ai/)
-

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

[https://trychad.ai/ ↗](https://trychad.ai/)
-

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

[https://trychad.ai/ ↗](https://trychad.ai/)

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

**External sources**[Google Search Central: Consolidate duplicate URLs ↗](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fcanonical-form-drift)

Not fully assessed**Captured Template Artifacts**content/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.

-

Template-like expressions could not be fully assessed in captured document prose.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Literal HTML tags or encoded entities could not be fully assessed in captured document prose.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Object-string artifacts could not be fully assessed in captured document prose.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fplaceholder-text)

Not fully assessed**Color Contrast**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Rule disabled for this audit.

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

Rule disabled for this audit.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fcolor-contrast)

Not fully assessed**Decision pages for your rivals**content/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.

-

No rivals are pinned for this project, so no decision pages can be looked for.

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fdecision-pages)

Not fully assessed**Definition List Item**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

Rule disabled for this audit.

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](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 →](https://trychad.ai/changelog/?q=a11y%2Fdlitem)

Not fully assessed**Definition List Structure**a11y/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>.

-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Rule disabled for this audit.

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

Rule disabled for this audit.

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fdefinition-list)

Not fully assessed**Deprecated ARIA Roles**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Rule disabled for this audit.

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Faria-deprecated-role)

Not fully assessed**Duplicate ID Active**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Rule disabled for this audit.

[https://trychad.ai/ ↗](https://trychad.ai/)
-

Rule disabled for this audit.

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](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 →](https://trychad.ai/changelog/?q=a11y%2Fduplicate-id-active)

Not fully assessed**Duplicate ID ARIA**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fduplicate-id-aria)

Not fully assessed**Empty Headings**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Rule disabled for this audit.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

Rule disabled for this audit.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fempty-heading)

Not fully assessed**Facts that need JavaScript**ai-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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fjs-dependent-facts)

Not fully assessed**Frame Title**a11y/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'>

-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

Rule disabled for this audit.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fframe-title)

Not fully assessed**Heading Order**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

Rule disabled for this audit.

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fheading-order)

Not fully assessed**HTML Lang Valid**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

Rule disabled for this audit.

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fhtml-lang-valid)

Not fully assessed**HTML XML Lang Mismatch**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Rule disabled for this audit.

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fhtml-xml-lang-mismatch)

Not fully assessed**Identical Links Same Purpose**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

Rule disabled for this audit.

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fidentical-links-same-purpose)

Not fully assessed**Input Image Alt**a11y/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'>

-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Rule disabled for this audit.

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Finput-image-alt)

Not fully assessed**Label Content Name Mismatch**a11y/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'.

-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Flabel-content-name-mismatch)

Not fully assessed**Link in Text Block**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Rule disabled for this audit.

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Flink-in-text-block)

Not fully assessed**List Item Context**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Rule disabled for this audit.

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Flistitem)

Not fully assessed**Meta Refresh**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

Rule disabled for this audit.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fmeta-refresh)

Not fully assessed**Multiple Labels**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Rule disabled for this audit.

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](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 →](https://trychad.ai/changelog/?q=a11y%2Fform-field-multiple-labels)

Not fully assessed**Object Alt Text**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ ↗](https://trychad.ai/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

Rule disabled for this audit.

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fobject-alt)

Not fully assessed**One Main Landmark**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)
-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Flandmark-one-main)

Not fully assessed**Possible Encoding Artifacts**content/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.

-

Replacement characters could not be fully assessed in captured document prose.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Probable encoding artifacts could not be fully assessed in captured document prose.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

No replacement characters observed in the assessed captured document prose.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)

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

**External sources**[WHATWG Encoding Standard: decoding and error handling ↗](https://encoding.spec.whatwg.org/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fmojibake)

Not fully assessed**Possible Soft 404 in Captured Response**crawl/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.

-

Captured labels or content exceed the complete-text inspection bounds; no truncated-content verdict is produced.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Captured success HTML does not meet the bounded error-template heuristic; this does not confirm resource existence or a search-engine classification.

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

Captured success HTML does not meet the bounded error-template heuristic; this does not confirm resource existence or a search-engine classification.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

**External sources**[Google Search Central: soft 404 errors ↗](https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors#soft-404-errors)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fsoft-404)

Not fully assessed**Privacy Policy**eeat/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fprivacy-policy)

Not fully assessed**Redundant Image Alt**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Rule disabled for this audit.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fimage-redundant-alt)

Not fully assessed**Review Captured Detail-Page Schema Coverage**schema/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/ ↗](https://trychad.ai/)

**External sources**[Google Search Central: Article structured data ↗](https://developers.google.com/search/docs/appearance/structured-data/article)[Google Search Central: single-product page scope ↗](https://developers.google.com/search/docs/appearance/structured-data/product-snippet)[Google Search Central: General structured data guidelines ↗](https://developers.google.com/search/docs/appearance/structured-data/sd-policies)[Schema.org: SoftwareApplication and its properties ↗](https://schema.org/SoftwareApplication)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Ftemplate-coverage)

Not fully assessed**Select Name**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

Rule disabled for this audit.

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fselect-name)

Not fully assessed**Skip Link**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)
-

Rule disabled for this audit.

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fskip-link)

Not fully assessed**Tabindex Values**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

Rule disabled for this audit.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Ftabindex)

Not fully assessed**Table Cell Headers**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

Rule disabled for this audit.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Ftd-headers-attr)

Not fully assessed**Table Duplicate Name**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ ↗](https://trychad.ai/)
-

Rule disabled for this audit.

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Rule disabled for this audit.

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Ftable-duplicate-name)

Not fully assessed**TH Has Data Cells**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fth-has-data-cells)

Not fully assessed**Valid Lang Attributes**a11y/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.

-

Rule disabled for this audit.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)
-

Rule disabled for this audit.

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Rule disabled for this audit.

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=a11y%2Fvalid-lang)

Passing**4XX Pages in Sitemap**crawl/sitemap-4xx+

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

-

No 4XX URLs found in sitemap

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fsitemap-4xx)

Passing**About Page**eeat/about-page+

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

-

About page found (339 words)

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fabout-page)

Passing**Affiliate Disclosure**eeat/affiliate-disclosure+

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

-

No obvious affiliate links detected — disclosure may not be required

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Faffiliate-disclosure)

Passing**Agent Readability**ai-visibility/agent-readability · Unscored+

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

-

Raw HTML avoids the shell heuristic on all 25 assessed page(s).

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fagent-readability)

Passing**AI Crawler Shell**ai-visibility/crawler-shell+

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

-

Captured raw HTML contains 1118 words and does not match the shell heuristic.

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Captured raw HTML contains 846 words and does not match the shell heuristic.

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Captured raw HTML contains 1898 words and does not match the shell heuristic.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

**External sources**[Google: server-side rendering and pre-rendering help crawlers that cannot execute JavaScript ↗](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fcrawler-shell)

Passing**AI Search Crawler Directives**ai-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/ ↗](https://trychad.ai/)
-

Claude-SearchBot (search): declared policy allowed. Indexes content to improve Claude search responses.

[https://trychad.ai/ ↗](https://trychad.ai/)
-

GPTBot (training): declared policy allowed. Collects content that may be used to train foundation models.

[https://trychad.ai/ ↗](https://trychad.ai/)

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

**External sources**[OpenAI crawler roles and independent search/training controls ↗](https://developers.openai.com/api/docs/bots)[Anthropic training, search and user-request bots ↗](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler)[Perplexity search crawler and user-request fetcher ↗](https://docs.perplexity.ai/docs/resources/perplexity-crawlers)[Google-Extended product control and Google Search exclusion ↗](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers)[Common Crawl CCBot purpose and robots policy ↗](https://commoncrawl.org/faq)[Robots Exclusion Protocol group and path matching ↗](https://www.rfc-editor.org/rfc/rfc9309.txt)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fcrawler-directives)

Passing**All Non-Indexed Pages**crawl/all-noindex-pages+

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

-

No noindex pages found

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fall-noindex-pages)

Passing**Analytics Tracking**analytics/gtm-present+

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

-

Google Tag Manager detected with noscript fallback

[https://trychad.ai/ ↗](https://trychad.ai/)
-

Google Tag Manager detected with noscript fallback

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Google Tag Manager detected with noscript fallback

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=analytics%2Fgtm-present)

Passing**Anchor Text**links/anchor-text+

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

-

Anchor text is descriptive

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Anchor text is descriptive

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Anchor text is descriptive

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Fanchor-text)

Passing**Article Identity Consistency**schema/article-identity+

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

-

No Article node — nothing to check identity against

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

No Article node — nothing to check identity against

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

No Article node — nothing to check identity against

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)

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

**External sources**[Schema.org: mainEntityOfPage ↗](https://schema.org/mainEntityOfPage)[Google Search Central: Article structured data ↗](https://developers.google.com/search/docs/appearance/structured-data/article)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Farticle-identity)

Passing**Author Bylines**eeat/author-byline+

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

-

Author bylines detected on 15 page(s)

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fauthor-byline)

Passing**Author Expertise**eeat/author-expertise+

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

-

Author credentials or expertise signals detected on 10 page(s)

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fauthor-expertise)

Passing**Broken HTML**content/broken-html+

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

-

No obvious HTML structure anomalies detected

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

No obvious HTML structure anomalies detected

[https://trychad.ai/ ↗](https://trychad.ai/)
-

No obvious HTML structure anomalies detected

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fbroken-html)

Passing**Broken Images**images/broken-images+

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

-

No broken images detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Fbroken-images)

Passing**Broken Links**links/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Fbroken-links)

Passing**Browser-Required Audits**perf/browser-required+

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

-

Page has sufficient static content

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

Page has sufficient static content

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

Page has sufficient static content

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fbrowser-required)

Passing**Cache Headers**perf/cache-headers+

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

-

Cache-Control: public, max-age=0, must-revalidate

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Cache-Control: public, max-age=0, must-revalidate

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Cache-Control: public, max-age=0, must-revalidate

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fcache-headers)

Passing**Canonical Chain**crawl/canonical-chain+

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

-

Canonical is self-referencing and direct

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

Canonical is self-referencing and direct

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Canonical is self-referencing and direct

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fcanonical-chain)

Passing**Canonical Clustering**crawl/canonical-cluster+

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

-

No pages canonicalise away from themselves

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fcanonical-cluster)

Passing**Canonical Header Validation**core/canonical-header+

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

-

No Link header canonical (no conflict)

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

No Link header canonical (no conflict)

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

No Link header canonical (no conflict)

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)

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

**External sources**[Google Search Central: Consolidate duplicate URLs ↗](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fcanonical-header)

Passing**Canonical URL**core/canonical+

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

-

Canonical URL present

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

Canonical URL present

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Canonical URL present

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

**External sources**[Google Search Central: What Is URL Canonicalization ↗](https://developers.google.com/search/docs/crawling-indexing/canonicalization)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fcanonical)

Passing**Charset**core/charset+

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

-

Charset declared

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Charset declared

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Charset declared

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fcharset)

Passing**Claimed agent HTTP response**ai-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/ ↗](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/ ↗](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/ ↗](https://trychad.ai/)

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

**External sources**[OpenAI crawler roles and independent search/training controls ↗](https://developers.openai.com/api/docs/bots)[Anthropic training, search and user-request bots ↗](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fagent-response)

Passing**CLS Optimization Hints**perf/cls-hints+

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

-

All media elements have explicit dimensions

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

All media elements have explicit dimensions

[https://trychad.ai/ ↗](https://trychad.ai/)
-

All media elements have explicit dimensions

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fcls-hints)

Passing**Compression**perf/compression+

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

-

Compressed (br)

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

Compressed (br)

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Compressed (br)

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fcompression)

Passing**Contact Page**eeat/contact-page+

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

-

Contact page found with 2 contact methods (email, form)

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fcontact-page)

Passing**Content Dates**eeat/content-dates+

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

-

Date signals found on 21/21 article-style pages

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fcontent-dates)

Passing**Content Freshness**content/freshness+

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

-

Freshness signals: Last-Modified header, visible date in content

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

Freshness signals: Last-Modified header, datePublished/dateModified schema, visible date in content

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Freshness signals: Last-Modified header, visible date in content

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Ffreshness)

Passing**Content Landmark**content/landmark+

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

-

Content landmark present (<main>)

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

Content landmark present (<main>)

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Content landmark present (<main>)

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Flandmark)

Passing**Contradicting Robots Meta Tags**core/robots-multiple+

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

-

At most one meta robots tag declared

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

At most one meta robots tag declared

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

At most one meta robots tag declared

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

**External sources**[Google Search Central: Robots Meta Tags Specifications ↗](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Frobots-multiple)

Passing**Disclaimers**eeat/disclaimers+

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

-

No YMYL content detected — disclaimers may not be required

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fdisclaimers)

Passing**Doctype**core/doctype+

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

-

HTML5 doctype present

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

HTML5 doctype present

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

HTML5 doctype present

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fdoctype)

Passing**Duplicate Description**content/duplicate-description+

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

-

No duplicate descriptions

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fduplicate-description)

Passing**Duplicate JavaScript**perf/duplicate-js+

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

-

No duplicate JavaScript sources detected

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

No duplicate JavaScript sources detected

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

No duplicate JavaScript sources detected

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fduplicate-js)

Passing**Duplicate Title**content/duplicate-title+

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

-

No duplicate titles

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fduplicate-title)

Passing**Entity Identity**schema/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/ ↗](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/ ↗](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/ ↗](https://trychad.ai/)

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

**External sources**[Schema.org: name and multiple language values ↗](https://schema.org/name)[Schema.org: alternateName identifies an alias ↗](https://schema.org/alternateName)[W3C JSON-LD 1.1: multiple property values ↗](https://www.w3.org/TR/json-ld11/#sets-of-values)[Google Search Central: Organization structured data ↗](https://developers.google.com/search/docs/appearance/structured-data/organization)[Schema.org: Organization properties ↗](https://schema.org/Organization)[Schema.org: PostalAddress components ↗](https://schema.org/PostalAddress)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fentity-identity)

Passing**External Link Security**security/new-tab+

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

-

All 2 target=_blank links have noopener/noreferrer

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

No target=_blank links found

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

No target=_blank links found

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fnew-tab)

Passing**External Links**links/external-links+

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

-

1 external link (2% of all links)

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

1 external link (3% of all links)

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

1 external link (3% of all links)

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](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 →](https://trychad.ai/changelog/?q=links%2Fexternal-links)

Passing**Favicon**core/favicon+

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

-

Favicon link element present

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

Favicon link element present

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Favicon link element present

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Ffavicon)

Passing**Figure Captions**images/figure-figcaption+

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

-

No images on page

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

No images on page

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

No images on page

[https://trychad.ai/ ↗](https://trychad.ai/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Ffigure-figcaption)

Passing**Font Loading**perf/font-loading+

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

-

Font loading looks well-configured

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Font loading looks well-configured

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

Font loading looks well-configured

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Ffont-loading)

Passing**Form HTTPS**security/form-https+

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

-

No forms submit to insecure HTTP endpoints

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

No forms submit to insecure HTTP endpoints

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

No forms submit to insecure HTTP endpoints

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fform-https)

Passing**H1 Tag**core/h1+

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

-

Exactly one H1

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Exactly one H1

[https://trychad.ai/about/ ↗](https://trychad.ai/about/)
-

Exactly one H1

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fh1)

Passing**Hreflang Tags**i18n/hreflang+

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

-

No hreflang tags — single-language site (add if serving multiple languages/regions)

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No hreflang tags — single-language site (add if serving multiple languages/regions)

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

No hreflang tags — single-language site (add if serving multiple languages/regions)

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=i18n%2Fhreflang)

Passing**HSTS Header**security/hsts+

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

-

HSTS header present

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fhsts)

Passing**HTTP/2**perf/http2+

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

-

HTTP version could not be determined from headers alone (use browser devtools to verify)

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

HTTP version could not be determined from headers alone (use browser devtools to verify)

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

HTTP version could not be determined from headers alone (use browser devtools to verify)

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fhttp2)

Passing**HTTPS**security/https+

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

-

Served over HTTPS

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Served over HTTPS

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Served over HTTPS

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fhttps)

Passing**HTTPS Downgrade**links/https-downgrade+

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

-

No insecure links

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

No insecure links

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

No insecure links

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Fhttps-downgrade)

Passing**Image Alt Text**images/alt-text+

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

-

No images

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

No images

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

No images

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Falt-text)

Passing**Image Dimensions**images/dimensions+

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

-

Images have explicit dimensions

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

Images have explicit dimensions

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

Images have explicit dimensions

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Fdimensions)

Passing**Image Filename Quality**images/filename-quality+

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

-

No images on page

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

No images on page

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

No images on page

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Ffilename-quality)

Passing**Image Optimization**images/optimized+

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

-

No images on page

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

No images on page

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

No images on page

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Foptimized)

Passing**Indexability Check**crawl/indexability+

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

-

Page is indexable

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

Page is indexable

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Page is indexable

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)

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

**External sources**[Google Search Central: Robots Meta Tags Specifications ↗](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Findexability)

Passing**Indexability Conflicts**crawl/indexability-conflicts+

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

-

No indexability conflicts detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Findexability-conflicts)

Passing**Inline SVG Size**images/svg-inline+

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

-

No large inline SVGs detected

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

No large inline SVGs detected

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

No large inline SVGs detected

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Fsvg-inline)

Passing**Internal Links**links/internal-links+

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

-

29 internal links

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

34 internal links

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

29 internal links

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Finternal-links)

Passing**Interstitials**mobile/interstitials+

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

-

No obvious intrusive interstitial markup detected

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

No obvious intrusive interstitial markup detected

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No obvious intrusive interstitial markup detected

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=mobile%2Finterstitials)

Passing**Invalid Links**links/invalid-links+

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

-

No invalid links found

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

No invalid links found

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

No invalid links found

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Finvalid-links)

Passing**JavaScript Redirects**perf/js-redirects+

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

-

No JS resources appear to redirect

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fjs-redirects)

Passing**JS Libraries**perf/js-libraries+

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

-

No known heavy libraries detected

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

No known heavy libraries detected

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

No known heavy libraries detected

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fjs-libraries)

Passing**JSON-LD Valid**schema/json-ld-valid+

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

-

1 JSON-LD blocks ()

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

2 JSON-LD blocks ()

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

1 JSON-LD blocks ()

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)

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

**External sources**[Google Search Central: Intro to Structured Data ↗](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fjson-ld-valid)

Passing**Lang Attribute**i18n/lang-attribute+

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

-

lang="en-GB"

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

lang="en-GB"

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)
-

lang="en-GB"

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=i18n%2Flang-attribute)

Passing**Latest captured article opening review**content/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Flatest-article-review)

Passing**Lazy Loading**images/lazy-loading+

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

-

Few images

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Few images

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

Few images

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Flazy-loading)

Passing**Lazy Loading Above Fold**perf/lazy-above-fold+

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

-

No lazy loading on likely above-fold images

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

No lazy loading on likely above-fold images

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

No lazy loading on likely above-fold images

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Flazy-above-fold)

Passing**Leaked Environment Variables**security/leaked-secrets+

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

-

No obvious leaked secrets

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

No obvious leaked secrets

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

No obvious leaked secrets

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fleaked-secrets)

Passing**Legacy JavaScript**perf/legacy-js+

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

-

No obvious legacy JS polyfills detected

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

No obvious legacy JS polyfills detected

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No obvious legacy JS polyfills detected

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](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 →](https://trychad.ai/changelog/?q=perf%2Flegacy-js)

Passing**llms.txt**ai-visibility/llms-txt+

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

-

/llms.txt present and spec-shaped (15 sections, 178 links)

[https://trychad.ai/ ↗](https://trychad.ai/)

**External sources**[The /llms.txt file ↗](https://llmstxt.org/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fllms-txt)

Passing**llms.txt links**ai-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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fllms-txt-links)

Passing**Markdown Alternate**ai-visibility/markdown-alternate+

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

-

A markdown representation is advertised via rel="alternate" (https://trychad.ai/marketing-agent-slack/ai-search-visibility/index.md)

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

A markdown representation is advertised via rel="alternate" (https://trychad.ai/book/index.md)

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

A markdown representation is advertised via rel="alternate" (https://trychad.ai/ai-built-websites/index.md)

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fmarkdown-alternate)

Passing**Meta Tags in Body**content/meta-in-body+

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

-

No misplaced meta tags in body

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

No misplaced meta tags in body

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No misplaced meta tags in body

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fmeta-in-body)

Passing**MIME Type Validation**content/mime-type+

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

-

Content-Type: text/html

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

Content-Type: text/html

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Content-Type: text/html

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Fmime-type)

Passing**Mixed Content**security/mixed-content+

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

-

No mixed content

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

No mixed content

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

No mixed content

[https://trychad.ai/ai-marketing-strategy/ ↗](https://trychad.ai/ai-marketing-strategy/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fmixed-content)

Passing**Modern Image Formats**images/modern-format+

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

-

No images on page

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

No images on page

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

No images on page

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Fmodern-format)

Passing**Multiple Canonical Tags**core/canonical-multiple+

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

-

At most one canonical URL declared

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

At most one canonical URL declared

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)
-

At most one canonical URL declared

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)

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

**External sources**[Google Search Central: 5 common mistakes with rel=canonical ↗](https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fcanonical-multiple)

Passing**Nofollow Internal**links/nofollow-internal+

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

-

No internal links with nofollow

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

No internal links with nofollow

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

No internal links with nofollow

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Fnofollow-internal)

Passing**Noindex in Sitemap**crawl/noindex-in-sitemap+

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

-

No noindexed pages found in sitemap

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fnoindex-in-sitemap)

Passing**Nosnippet Directive**core/nosnippet+

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

-

No nosnippet directive — snippets allowed

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

No nosnippet directive — snippets allowed

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

No nosnippet directive — snippets allowed

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fnosnippet)

Passing**Not Found Handling**ai-visibility/not-found-handling+

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

-

Nonexistent paths return 404 with a navigable body (33 links)

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fnot-found-handling)

Passing**Offscreen Lazy Loading**images/offscreen-lazy+

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

-

Too few images to assess offscreen lazy-loading

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

Too few images to assess offscreen lazy-loading

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

Too few images to assess offscreen lazy-loading

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Foffscreen-lazy)

Passing**OG Image Size**social/og-image-size+

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

-

og:image size declared (1200x630)

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

og:image size declared (1200x630)

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

og:image size declared (1200x630)

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=social%2Fog-image-size)

Passing**OG URL Match**social/og-url-match+

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

-

og:url matches canonical

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

og:url matches canonical

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

og:url matches canonical

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=social%2Fog-url-match)

Passing**Open Graph Tags**core/og-tags+

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

-

Core Open Graph tags present

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Core Open Graph tags present

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

Core Open Graph tags present

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Fog-tags)

Passing**Optional Markdown delivery**ai-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/ ↗](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/ ↗](https://trychad.ai/)

**External sources**[HTTP Semantics: Accept ↗](https://www.rfc-editor.org/rfc/rfc9110.html#section-12.5.1)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fmarkdown-negotiation)

Passing**Organization Schema**schema/organization · Unscored+

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

-

Organization declaration in this captured page has name and url; these are recommended properties, not required properties.

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Organization declaration in this captured page has name and url; these are recommended properties, not required properties.

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

Organization declaration in this captured page has name and url; these are recommended properties, not required properties.

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)

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

**External sources**[Google Search Central: Organization structured data ↗](https://developers.google.com/search/docs/appearance/structured-data/organization)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Forganization)

Passing**Pagination**crawl/pagination+

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

-

No pagination signals detected

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)
-

No pagination signals detected

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

No pagination signals detected

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fpagination)

Passing**Permissions-Policy**security/permissions-policy+

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

-

Permissions-Policy header present

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fpermissions-policy)

Passing**Physical Address**eeat/physical-address+

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

-

Street address pattern detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fphysical-address)

Passing**Picture Element Validation**images/picture-element+

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

-

No <picture> elements on page

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

No <picture> elements on page

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

No <picture> elements on page

[https://trychad.ai/contact/ ↗](https://trychad.ai/contact/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Fpicture-element)

Passing**Preconnect Hints**perf/preconnect+

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

-

Preconnect/dns-prefetch hints cover all 1 third-party origin(s)

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

Preconnect/dns-prefetch hints cover all 1 third-party origin(s)

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

Preconnect/dns-prefetch hints cover all 1 third-party origin(s)

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fpreconnect)

Passing**Privacy Policy**legal/privacy-policy+

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

-

Privacy policy link found

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=legal%2Fprivacy-policy)

Passing**Product Schema**schema/product+

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

-

Product schema present with required properties

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

Product schema present with required properties

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

Product schema present with required properties

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fproduct)

Passing**Redirect Chains**crawl/redirect-chain+

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

-

No redirect chains

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fredirect-chain)

Passing**Redirect Chains**links/redirect-chains+

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

-

No redirect chains detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Fredirect-chains)

Passing**Referrer-Policy**security/referrer-policy+

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

-

Referrer-Policy header: strict-origin-when-cross-origin

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Freferrer-policy)

Passing**Render-Blocking Resources**perf/render-blocking+

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

-

Few render-blocking resources

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)
-

Few render-blocking resources

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Few render-blocking resources

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Frender-blocking)

Passing**Responsive Images**images/srcset+

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

-

No images on page

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

No images on page

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

No images on page

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=images%2Fsrcset)

Passing**Robots Meta**core/robots-meta+

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

-

Page is indexable

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Page is indexable

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)
-

Page is indexable

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

**External sources**[Google Search Central: Robots Meta Tags Specifications ↗](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Frobots-meta)

Passing**Robots Meta Conflict**crawl/robots-meta-conflict+

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

-

No robots meta conflicts detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Frobots-meta-conflict)

Passing**Robots.txt**crawl/robots-txt+

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

-

robots.txt present

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Frobots-txt)

Passing**Sampled resource delivery**perf/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/ ↗](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/ ↗](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/ ↗](https://trychad.ai/)

**External sources**[HTTP Semantics: Content-Encoding ↗](https://www.rfc-editor.org/rfc/rfc9110.html#section-8.4)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fresource-delivery)

Passing**Schema + Noindex Conflict**crawl/schema-noindex-conflict+

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

-

No schema+noindex conflicts detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fschema-noindex-conflict)

Passing**Schema Content Mismatch**schema/content-mismatch+

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

-

All 2 FAQ answers are present in the page

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No FAQPage answers to verify against the page

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

No FAQPage answers to verify against the page

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)

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

**External sources**[Google Search Central: General structured data guidelines ↗](https://developers.google.com/search/docs/appearance/structured-data/sd-policies)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fcontent-mismatch)

Passing**Site-wide AI Readability**ai-visibility/ssr-coverage+

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

-

All 25 assessable raw response(s) avoid the shell heuristic.

[https://trychad.ai/ ↗](https://trychad.ai/)

**External sources**[Google: server-side rendering and pre-rendering help crawlers that cannot execute JavaScript ↗](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fssr-coverage)

Passing**Sitemap Coverage**crawl/sitemap-coverage+

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

-

100% of indexable pages are in sitemap (25 pages)

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fsitemap-coverage)

Passing**Sitemap Domain**crawl/sitemap-domain+

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

-

All sitemap URLs match the expected domain (trychad.ai)

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fsitemap-domain)

Passing**Sitemap Exists**crawl/sitemap-exists+

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

-

Valid sitemap found

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fsitemap-exists)

Passing**Sitemap hygiene**crawl/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fsitemap-hygiene)

Passing**Sitemap Valid**crawl/sitemap-valid+

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

-

All 1 sitemap(s) are valid

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fsitemap-valid)

Passing**Slug Keywords**url/slug-keywords+

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

-

URL slug appears descriptive (for-marketing-teams)

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

URL slug appears descriptive (arriba-safeswitch)

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

URL slug appears descriptive (launch-checklist)

[https://trychad.ai/ai-built-websites/launch-checklist/ ↗](https://trychad.ai/ai-built-websites/launch-checklist/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Fslug-keywords)

Passing**Social Profiles**social/social-profiles+

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

-

1 social profile signal(s) detected (0 links, 1 sameAs)

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

1 social profile signal(s) detected (0 links, 1 sameAs)

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)
-

1 social profile signal(s) detected (0 links, 1 sameAs)

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=social%2Fsocial-profiles)

Passing**Source Maps**perf/source-maps+

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

-

No exposed source maps detected in page HTML

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

No exposed source maps detected in page HTML

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

No exposed source maps detected in page HTML

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fsource-maps)

Passing**Tel & Mailto Links**links/tel-mailto+

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

-

No tel: or mailto: links

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

No tel: or mailto: links

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

No tel: or mailto: links

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=links%2Ftel-mailto)

Passing**Terms of Service**legal/terms-of-service+

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

-

Terms of service link found

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Terms of service link found

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

Terms of service link found

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=legal%2Fterms-of-service)

Passing**Terms of Service**eeat/terms-of-service+

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

-

Terms of service link found

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fterms-of-service)

Passing**Third-Party Cookies**security/third-party-cookies+

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

-

No third-party cookie risks detected

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

No third-party cookie risks detected

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

No third-party cookie risks detected

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fthird-party-cookies)

Passing**Time To First Byte**perf/ttfb+

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

-

TTFB 27ms

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

TTFB 33ms

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

TTFB 47ms

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Fttfb)

Passing**Trailing Slash**url/trailing-slash+

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

-

Trailing slash consistent between URL and canonical

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Trailing slash consistent between URL and canonical

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

Trailing slash consistent between URL and canonical

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Ftrailing-slash)

Passing**Trust Signals**eeat/trust-signals+

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

-

2 trust signal type(s) detected: testimonials/reviews text, social proof numbers

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Ftrust-signals)

Passing**Twitter Cards**core/twitter-cards+

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

-

Twitter Card (summary_large_image) with title+description

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

Twitter Card (summary_large_image) with title+description

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

Twitter Card (summary_large_image) with title+description

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=core%2Ftwitter-cards)

Passing**Unrecognised third-party hosts**analytics/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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=analytics%2Ftech-candidates)

Passing**URL Hyphens**url/hyphens+

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

-

URL uses hyphens (no underscores)

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

URL uses hyphens (no underscores)

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

URL uses hyphens (no underscores)

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Fhyphens)

Passing**URL Length**url/length+

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

-

URL length 32

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)
-

URL length 34

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

URL length 37

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Flength)

Passing**URL Lowercase**url/lowercase+

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

-

URL path is lowercase

[https://trychad.ai/geo/financial-services/ ↗](https://trychad.ai/geo/financial-services/)
-

URL path is lowercase

[https://trychad.ai/ai-built-websites/ ↗](https://trychad.ai/ai-built-websites/)
-

URL path is lowercase

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Flowercase)

Passing**URL Parameters**url/parameters+

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

-

No query parameters

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No query parameters

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

No query parameters

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Fparameters)

Passing**URL Special Characters**url/special-chars+

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

-

URL path has no problematic characters

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

URL path has no problematic characters

[https://trychad.ai/book/ ↗](https://trychad.ai/book/)
-

URL path has no problematic characters

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=url%2Fspecial-chars)

Passing**Video Accessibility**video/video-accessible+

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

-

No <video> elements on page

[https://trychad.ai/case-studies/arriba-safeswitch/ ↗](https://trychad.ai/case-studies/arriba-safeswitch/)
-

No <video> elements on page

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No <video> elements on page

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=video%2Fvideo-accessible)

Passing**Video Schema**video/video-schema+

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

-

No video content detected on page

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

No video content detected on page

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)
-

No video content detected on page

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](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 →](https://trychad.ai/changelog/?q=video%2Fvideo-schema)

Passing**Video Schema**schema/video+

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

-

No video content on this page — VideoObject not applicable

[https://trychad.ai/can-ai-replace-a-marketing-agency/ ↗](https://trychad.ai/can-ai-replace-a-marketing-agency/)
-

No video content on this page — VideoObject not applicable

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

No video content on this page — VideoObject not applicable

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fvideo)

Passing**Video Thumbnail**video/video-thumbnail+

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

-

No video content detected on page

[https://trychad.ai/blog/ ↗](https://trychad.ai/blog/)
-

No video content detected on page

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

No video content detected on page

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](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 →](https://trychad.ai/changelog/?q=video%2Fvideo-thumbnail)

Passing**Viewport Meta**mobile/viewport+

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

-

Viewport meta present

[https://trychad.ai/resources/answer-engine-optimization/ ↗](https://trychad.ai/resources/answer-engine-optimization/)
-

Viewport meta present

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)
-

Viewport meta present

[https://trychad.ai/claude-tag/ ↗](https://trychad.ai/claude-tag/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=mobile%2Fviewport)

Passing**Viewport Zoom**mobile/viewport-zoom+

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

-

Viewport allows user zoom

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

Viewport allows user zoom

[https://trychad.ai/partners/apply/ ↗](https://trychad.ai/partners/apply/)
-

Viewport allows user zoom

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)

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

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=mobile%2Fviewport-zoom)

Passing**WAF Challenge Pages**crawl/waf-challenge-pages+

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

-

No WAF-challenged pages detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=crawl%2Fwaf-challenge-pages)

Passing**WebSite Search Schema**schema/website-search+

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

-

WebSite schema present — a SearchAction is not needed, the searchbox it fed is retired

[https://trychad.ai/claude-tag/for-marketing-teams/ ↗](https://trychad.ai/claude-tag/for-marketing-teams/)
-

WebSite schema present — a SearchAction is not needed, the searchbox it fed is retired

[https://trychad.ai/alternatives/ ↗](https://trychad.ai/alternatives/)
-

WebSite schema present — a SearchAction is not needed, the searchbox it fed is retired

[https://trychad.ai/vibe-coding/affordable-marketing-for-startups/ ↗](https://trychad.ai/vibe-coding/affordable-marketing-for-startups/)

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

**External sources**[Google Search Central: Farewell, Sitelinks Search Box (21 November 2024) ↗](https://developers.google.com/search/blog/2024/10/sitelinks-search-box)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Fwebsite-search)

Passing**X-Content-Type-Options**security/x-content-type+

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

-

X-Content-Type-Options: nosniff present

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fx-content-type)

Passing**X-Frame-Options**security/x-frame-options+

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

-

Clickjacking protection present

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=security%2Fx-frame-options)

Passing**YMYL Detection**eeat/ymyl-detection+

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

-

No YMYL (Your Money or Your Life) content categories detected

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=eeat%2Fymyl-detection)

Not applicable**A2A Agent Card**ai-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/ ↗](https://trychad.ai/)

**External sources**[Agent2Agent (A2A) Protocol Specification 1.0 ↗](https://a2a-protocol.org/v1.0.0/specification/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fa2a-agent-card)

Not applicable**Agent documents for developer sites**ai-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/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fagent-docs)

Not applicable**API 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/ ↗](https://trychad.ai/)

**External sources**[RFC 9727: api-catalog ↗](https://www.rfc-editor.org/rfc/rfc9727.html)[RFC 9264: Linkset media types (application/linkset+json) ↗](https://www.rfc-editor.org/rfc/rfc9264.html)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fapi-catalog)

Not applicable**Captured Rating Association**schema/rating-scope · Unscored+

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

-

No AggregateRating declaration found in the supported captured JSON-LD.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

No AggregateRating declaration found in the supported captured JSON-LD.

[https://trychad.ai/blog/93-percent-zero-click-geo/ ↗](https://trychad.ai/blog/93-percent-zero-click-geo/)
-

No AggregateRating declaration found in the supported captured JSON-LD.

[https://trychad.ai/geo/hospitality/bars/ ↗](https://trychad.ai/geo/hospitality/bars/)

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

**External sources**[Google Search Central: Review Snippet Structured Data ↗](https://developers.google.com/search/docs/appearance/structured-data/review-snippet)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Frating-scope)

Not applicable**Content Signals in robots.txt**ai-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/ ↗](https://trychad.ai/)

**External sources**[Cloudflare: managed robots.txt and the Content Signals Policy ↗](https://developers.cloudflare.com/bots/additional-configurations/managed-robots-txt/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Fcontent-signals)

Not applicable**LCP Optimization Hints**perf/lcp-hints · Unscored+

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

-

No eligible eager content-image candidate was identified in the captured DOM; LCP was not measured.

[https://trychad.ai/ai-marketing-operator/ ↗](https://trychad.ai/ai-marketing-operator/)
-

No eligible eager content-image candidate was identified in the captured DOM; LCP was not measured.

[https://trychad.ai/pricing/ ↗](https://trychad.ai/pricing/)
-

No eligible eager content-image candidate was identified in the captured DOM; LCP was not measured.

[https://trychad.ai/marketing-agent-slack/ai-search-visibility/ ↗](https://trychad.ai/marketing-agent-slack/ai-search-visibility/)

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

**External sources**[Google web.dev: optimize LCP resource priority ↗](https://web.dev/articles/optimize-lcp)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=perf%2Flcp-hints)

Not applicable**LocalBusiness Schema**schema/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/ ↗](https://trychad.ai/)

**External sources**[Google Search Central: Local Business Structured Data ↗](https://developers.google.com/search/docs/appearance/structured-data/local-business)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Flocal-business)

Not applicable**Near-identical templated pages**content/templated-near-duplicates · Unscored+

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

-

No group of 8 or more pages shares one URL template in the pages crawled.

[https://trychad.ai/ ↗](https://trychad.ai/)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=content%2Ftemplated-near-duplicates)

Not applicable**OAuth 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/ ↗](https://trychad.ai/)

**External sources**[RFC 8414: OAuth 2.0 Authorization Server Metadata ↗](https://www.rfc-editor.org/rfc/rfc8414.html)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Foauth-server-metadata)

Not applicable**OAuth 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/ ↗](https://trychad.ai/)

**External sources**[RFC 9728: OAuth 2.0 Protected Resource Metadata ↗](https://www.rfc-editor.org/rfc/rfc9728.html)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=ai-visibility%2Foauth-resource-metadata)

Not applicable**Review Schema**schema/review · Unscored+

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

-

No Review or AggregateRating declaration found in this captured document; review markup is not required on every page.

[https://trychad.ai/alternatives/ahrefs-site-audit/ ↗](https://trychad.ai/alternatives/ahrefs-site-audit/)
-

No Review or AggregateRating declaration found in this captured document; review markup is not required on every page.

[https://trychad.ai/changelog/ ↗](https://trychad.ai/changelog/)
-

No Review or AggregateRating declaration found in this captured document; review markup is not required on every page.

[https://trychad.ai/case-studies/ ↗](https://trychad.ai/case-studies/)

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

**External sources**[Google Search Central: Review Snippet Structured Data ↗](https://developers.google.com/search/docs/appearance/structured-data/review-snippet)

[Look up this check's recorded history →](https://trychad.ai/changelog/?q=schema%2Freview)

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 →](https://trychad.ai/score/#scan)[Read the audit changelog →](https://trychad.ai/changelog/)
