Pillar 01130 checks
Technical Foundations
The first pillar decides whether Google and AI crawlers can reach, render and index a page in the first place. Robots directives, status codes, canonicalisation, JavaScript rendering, Core Web Vitals, HTTPS, sitemaps and URL structure. If this pillar fails, nothing downstream matters, because the page is never eligible to be ranked or quoted.
1.1 Robots & directives (HTTP + HTML)
24 checks
001robots.txt missing entirelyLow002robots.txt returns 5xxCritical003robots.txt Disallow: / blocking whole siteCritical004robots.txt blocks CSS/JS needed to renderHigh005robots.txt blocks a directory with indexable contentHigh006Sitemap not declared in robots.txtLow007robots.txt over 500KBMedium008Conflicting Allow/Disallow rulesMedium009Crawl-delay set unreasonably highMedium010Meta robots noindex on a page that should be indexedCritical011Meta robots nofollow suppressing internal linksHigh012Meta robots nosnippet, kills AI-feature eligibilityCritical013max-snippet:0 directiveCritical014max-snippet set very lowHigh015data-nosnippet wrapping primary contentHigh016noarchive directiveLow017notranslate unintentionally setLow018noimageindex blocking image visibilityMedium019unavailable_after date in the pastHigh020X-Robots-Tag noindex in HTTP headerCritical021X-Robots-Tag nosnippet/none in headerCritical022Meta robots and X-Robots-Tag conflictHigh023Duplicate meta robots with conflicting valuesMedium024Directive placed in <body> not <head>Medium
1.2 Indexability & status
21 checks
0254xx client error on internal URLCritical0265xx server errorCritical027Soft 404High028Internal links to 3xx redirectsMedium029Redirect chain (>1 hop)Medium030Redirect loopCritical031302/307 used for a permanent moveHigh032Meta refresh redirectMedium033JavaScript redirectHigh034Redirect to an irrelevant pageHigh035HTTP→HTTPS redirect missingHigh036Mixed content (HTTPS page loading HTTP)High037Orphan pageHigh038Page only in sitemap, not internally linkedMedium039Excessive crawl depthMedium040Indexed though blocked by robotsHigh041Page indexed that should be excludedMedium042Non-canonical URL indexedHigh043Parameter URLs creating infinite spacesHigh044Session IDs in URLsMedium045URL missing from sitemapLow
1.3 Canonicalisation
13 checks
046Missing canonical tagMedium047Canonical points to non-200 URLHigh048Canonical points to a redirected URLHigh049Canonical points to a noindex pageHigh050Relative (not absolute) canonicalMedium051Multiple conflicting canonicalsHigh052Canonical in <body>High053Canonicalised page still in sitemapMedium054Unintended cross-domain canonicalHigh055Canonical chainMedium056Missing self-canonical on paginated/param pagesMedium057Protocol mismatch in canonicalMedium058HTTP-header canonical conflicting with HTMLMedium
1.4 Rendering & JavaScript ✦
18 checks
059Primary content only present after JSCritical060Large raw-vs-rendered text gapHigh061Client-side routing with no SSR fallbackCritical062Content requires interaction to loadHigh063Lazy-loaded main content not triggeredHigh064Infinite scroll with no paginated equivalentHigh065Links as span/div with JS onclickHigh066href=”#” or javascript:void(0) navigationHigh067Render-blocking JS delaying paintMedium068JS errors halting renderHigh069Blocked JS/CSS preventing renderHigh070Hydration mismatch (server ≠ client DOM)High071Content in iframe with no crawlable sourceMedium072User-agent-based content differences (cloaking risk)Critical073Different content to crawler vs user (any mechanism)Critical074Critical content in unexposed Shadow DOMMedium075Content in canvas/WebGLHigh076Render timeout exceeds budgetHigh
1.5 Performance & Core Web Vitals
14 checks
077LCP > 2.5sMedium078CLS > 0.1Medium079INP > 200msMedium080Excessive TTFBMedium081Excessive page weightMedium082Unminified CSS/JSLow083Uncompressed resourcesMedium084No browser caching headersLow085Images not next-gen formatLow086Images without width/heightMedium087Render-blocking resources in headMedium088No lazy-loading on below-fold imagesLow089Excessive DOM sizeMedium090Fonts without font-display: swapLow
1.6 HTTPS / security / infrastructure
10 checks
091No HTTPSCritical092Expired/invalid SSL certificateCritical093Certificate name mismatchHigh094HSTS header missingLow095Mixed content warningsHigh096HTTP/2 or HTTP/3 not enabledLow097CSP blocking needed resourcesMedium098Intermittent status codesHigh099No custom 404 pageLow100Slow/unreliable hostingHigh
1.7 XML sitemaps
15 checks
101No XML sitemapMedium102Sitemap not submitted to Search ConsoleMedium103Sitemap contains non-200 URLsHigh104Sitemap contains redirected URLsMedium105Sitemap contains noindex/canonicalised URLsHigh106Sitemap exceeds 50,000 URLs / 50MBHigh107lastmod missing or always-nowMedium108lastmod wrong date formatMedium109Invalid XML syntaxHigh110Sitemap not referenced in robots.txtLow111Malformed sitemap indexHigh112Protocol/slash inconsistency vs canonicalMedium113Missing image/video/news sitemapMedium114Orphan URLs only in sitemapMedium115priority/changefreq misusedLow
1.8 URL structure & internationalisation
15 checks
116Non-descriptive URLsMedium117Excessively long URLsLow118Uppercase characters in URLsMedium119Underscores instead of hyphensLow120Trailing-slash inconsistencyMedium121Multiple URLs serving identical contentHigh122Special characters/spaces in URLsMedium123hreflang missing on multilingual siteHigh124hreflang not reciprocalHigh125Invalid hreflang language/region codeHigh126hreflang to non-200/redirected URLsHigh127hreflang missing x-defaultMedium128hreflang conflict across HTML/sitemap/headerMedium129html lang mismatch vs contentMedium130Missing lang attribute on <html>Medium
The field notes
Frameworks, builds and what is changing in AI search.
Sent occasionally, never noise. The thinking behind the work, and the experiments before they ship.
No spam. Unsubscribe anytime.