Crawlability Fundamentals
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.01 | Validate domain is fully crawlable (200 OK on homepage) | Crawlable | Critical | Deterministic |
| 6.48.02 | Validate no global blockers in robots.txt | None | Critical | Deterministic |
| 6.48.03 | Validate robots.txt is accessible | Accessible | Critical | Deterministic |
| 6.48.04 | Validate robots directives correctly configured | Correct | Heavy | Deterministic |
| 6.48.05 | Validate no accidental blocking of CSS/JS | None | Heavy | Deterministic |
| 6.48.06 | Validate no IP-blocking or firewall rules blocking search bots | None | Heavy | Deterministic |
| 6.48.07 | Validate robots.txt includes sitemap URL | Included | Medium | Deterministic |
| 6.48.08 | Validate robots.txt not overly permissive | Balanced | Medium | Deterministic |
| 6.48.09 | Validate crawl-delay directives absent or properly set | Proper | Medium | Deterministic |
| 6.48.10 | Validate robots.txt corrected for uppercase/lowercase path issues | Correct | Medium | Deterministic |
Indexability & Canonical State
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.11 | Validate page returns indexable status code (200 or soft 200) | Indexable | Critical | Deterministic |
| 6.48.12 | Validate no accidental noindex tags | None | Critical | Deterministic |
| 6.48.13 | Validate canonical tag present | Present | Heavy | Deterministic |
| 6.48.14 | Validate canonical tag correct self-referencing | Correct | Heavy | Deterministic |
| 6.48.15 | Detect conflicting canonical/alternate directives | None | Heavy | Deterministic |
| 6.48.16 | Validate canonical tags consistent across versions (HTTP/HTTPS) | Consistent | Medium | Deterministic |
| 6.48.17 | Validate canonical tags consistent across trailing slash variants | Consistent | Medium | Deterministic |
| 6.48.18 | Validate canonical tags consistent for UTM parameters | Consistent | Medium | Deterministic |
| 6.48.19 | Detect canonical pointing to non-indexable pages | None | Medium | Deterministic |
| 6.48.20 | Validate canonical tags use absolute URLs | Absolute | Medium | Deterministic |
Crawl Depth & Internal Discoverability
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.21 | Validate page crawl depth minimal (≤3 from homepage) | Optimal | Heavy | Deterministic |
| 6.48.22 | Validate no orphan pages exist | None | Heavy | Deterministic |
| 6.48.23 | Validate internal linking supports discoverability | Strong | Heavy | Deterministic |
| 6.48.24 | Validate homepage links to key pages | Linked | Medium | Deterministic |
| 6.48.25 | Validate header/footer includes necessary navigation | Included | Medium | Deterministic |
| 6.48.26 | Validate mobile navigation matches desktop | Matching | Medium | Deterministic |
| 6.48.27 | Validate pagination crawlable | Crawlable | Medium | Deterministic |
| 6.48.28 | Validate infinite scroll supplemented with crawlable alternative | Provided | Medium | Deterministic |
| 6.48.29 | Validate XML sitemaps support discoverability | Supportive | Medium | Deterministic |
| 6.48.30 | Detect deep pages buried beyond crawl budgets | None | Medium | Deterministic |
XML Sitemap Protocols
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.31 | Validate sitemap index exists | Exists | Heavy | Deterministic |
| 6.48.32 | Validate sitemap uses proper XML formatting | Valid | Heavy | Deterministic |
| 6.48.33 | Validate sitemap reachable via GET request | Reachable | Heavy | Deterministic |
| 6.48.34 | Validate sitemap contains all indexable pages | Complete | Heavy | Deterministic |
| 6.48.35 | Validate lastmod fields accurate | Accurate | Medium | Deterministic |
| 6.48.36 | Validate sitemap URLs canonicalized | Canonical | Medium | Deterministic |
| 6.48.37 | Validate no non-indexable URLs present | None | Medium | Deterministic |
| 6.48.38 | Validate sitemap size within limits (≤50k URLs / ≤50MB) | Within Limits | Medium | Deterministic |
| 6.48.39 | Validate sitemap referenced in robots.txt | Referenced | Medium | Deterministic |
| 6.48.40 | Validate sitemap follows priority/frequency rules appropriately | Appropriate | Medium | Deterministic |
Meta Directives & Indexing Safety
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.41 | Validate no accidental sitewide noindex | None | Critical | Deterministic |
| 6.48.42 | Validate noindex only used intentionally | Correct | Heavy | Deterministic |
| 6.48.43 | Validate nofollow used appropriately | Appropriate | Heavy | Deterministic |
| 6.48.44 | Validate hreflang tags valid and mapped properly | Valid | Heavy | Deterministic |
| 6.48.45 | Validate alternate language versions resolve properly | Proper | Medium | Deterministic |
| 6.48.46 | Detect conflicting hreflang clusters | None | Medium | Deterministic |
| 6.48.47 | Validate max-snippet, max-video-preview settings correct | Correct | Medium | Deterministic |
| 6.48.48 | Validate X‑Robots‑Tag rules correct | Correct | Medium | Deterministic |
| 6.48.49 | Detect indexation discrepancies between sitemap and SERP | None | Medium | Deterministic |
| 6.48.50 | Compute partial Crawlability & Indexing score | Finalized | Critical | Deterministic |
Server Status Code Integrity
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.51 | Validate homepage returns stable 200 status | Stable | Critical | Deterministic |
| 6.48.52 | Validate all key pages return 200 | 200 | Heavy | Deterministic |
| 6.48.53 | Detect 404 errors on navigational pages | None | Heavy | Deterministic |
| 6.48.54 | Detect 500/503 server errors | None | Heavy | Deterministic |
| 6.48.55 | Detect soft 404s | None | Medium | Deterministic |
| 6.48.56 | Validate 410 responses used for permanently removed pages | Correct | Medium | Deterministic |
| 6.48.57 | Validate server consistently responds within timeout thresholds | Consistent | Medium | Deterministic |
| 6.48.58 | Detect inconsistent response codes across devices | None | Medium | Deterministic |
| 6.48.59 | Validate 503 only used during maintenance | Correct | Medium | Deterministic |
| 6.48.60 | Validate API endpoints (if public) return correct codes | Correct | Medium | Deterministic |
Redirect Behavior & Signal Consistency
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.61 | Validate no redirect loops | None | Critical | Deterministic |
| 6.48.62 | Validate http→https redirects configured | Configured | Heavy | Deterministic |
| 6.48.63 | Validate non‑www → www OR www → non‑www canonicalized | Canonicalized | Heavy | Deterministic |
| 6.48.64 | Validate trailing slash behavior consistent | Consistent | Heavy | Deterministic |
| 6.48.65 | Validate redirect chains <2 steps | Short | Medium | Deterministic |
| 6.48.66 | Detect meta-refresh redirects | None | Medium | Deterministic |
| 6.48.67 | Validate 301 used instead of 302 for permanent moves | Correct | Medium | Deterministic |
| 6.48.68 | Validate JS-based redirects absent or minimized | Minimal | Medium | Deterministic |
| 6.48.69 | Validate mobile redirects consistent | Consistent | Medium | Deterministic |
| 6.48.70 | Detect redirecting resources (JS/CSS) | None | Medium | Deterministic |
URL Structure & Clean Architecture
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.71 | Validate URLs clean, short, readable | Clean | Heavy | Deterministic |
| 6.48.72 | Validate URLs lowercase | Lowercase | Heavy | Deterministic |
| 6.48.73 | Validate URLs use hyphens not underscores | Hyphens | Heavy | Deterministic |
| 6.48.74 | Validate URLs descriptive and match topic | Descriptive | Heavy | Deterministic |
| 6.48.75 | Validate no long query parameters | None | Medium | Deterministic |
| 6.48.76 | Validate no excessive folder nesting | Minimal | Medium | Deterministic |
| 6.48.77 | Validate URL slugs concise | Concise | Medium | Deterministic |
| 6.48.78 | Validate human-friendly structure | Human-Friendly | Medium | Deterministic |
| 6.48.79 | Detect duplicate URLs with different capitalization | None | Medium | Deterministic |
| 6.48.80 | Validate canonical matches primary URL | Matching | Medium | Deterministic |
Broken State Detection & Resource Integrity
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.81 | Detect broken internal links | None | Heavy | Deterministic |
| 6.48.82 | Detect broken external links | None | Heavy | Deterministic |
| 6.48.83 | Validate JS files return 200 | 200 | Heavy | Deterministic |
| 6.48.84 | Validate CSS files return 200 | 200 | Heavy | Deterministic |
| 6.48.85 | Validate images return 200 | 200 | Medium | Deterministic |
| 6.48.86 | Validate missing resources <1% | <1% | Medium | Deterministic |
| 6.48.87 | Detect mixed-content errors | None | Medium | Deterministic |
| 6.48.88 | Detect CORS misconfigurations | None | Medium | Deterministic |
| 6.48.89 | Validate fonts load correctly | Correct | Medium | Deterministic |
| 6.48.90 | Validate preload resources not broken | Functioning | Medium | Deterministic |
Server-Performance & Hosting Signals
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.91 | Validate TTFB ≤ 600ms | ≤600ms | Heavy | Deterministic |
| 6.48.92 | Validate server stable during load tests | Stable | Heavy | Deterministic |
| 6.48.93 | Validate CDN implemented | Implemented | Heavy | Deterministic |
| 6.48.94 | Validate server compression enabled (gzip/brotli) | Enabled | Medium | Deterministic |
| 6.48.95 | Validate hotlink protection not blocking crawlers | Correct | Medium | Deterministic |
| 6.48.96 | Validate DNS resolves quickly (≤60ms) | ≤60ms | Medium | Deterministic |
| 6.48.97 | Validate IPv6 correctly configured | Correct | Medium | Deterministic |
| 6.48.98 | Detect server CPU/RAM throttling that affects load | None | Medium | Deterministic |
| 6.48.99 | Validate edge caching effective | Effective | Medium | Deterministic |
| 6.48.100 | Compute Server Behavior & URL Integrity partial score | Finalized | Critical | Deterministic |
JavaScript Rendering Validation (Crawler-Safe JS)
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.101 | Validate page fully renderable without JS blocking | Renderable | Critical | Deterministic |
| 6.48.102 | Validate critical content accessible pre-render | Accessible | Heavy | Deterministic |
| 6.48.103 | Validate render-blocking JS minimized | Minimized | Heavy | Deterministic |
| 6.48.104 | Validate hydration does not hide main content | Visible | Heavy | Deterministic |
| 6.48.105 | Detect delayed content injection that prevents indexing | None | Medium | Deterministic |
| 6.48.106 | Validate JS not rewriting title/meta after load | Not rewriting | Medium | Deterministic |
| 6.48.107 | Validate JS inline scripts not blocking initial rendering | Not blocking | Medium | Deterministic |
| 6.48.108 | Validate third‑party JS loading async/defer | Async/Defer | Medium | Deterministic |
| 6.48.109 | Validate JS errors in console <3 | <3 | Medium | Deterministic |
| 6.48.110 | Validate no JS files served with wrong MIME types | Correct | Medium | Deterministic |
Server-Side Rendering (SSR) / Pre-Rendering / Hybrid Rendering
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.111 | Validate SSR used if site heavily JS-dependent | Implemented | Heavy | Deterministic |
| 6.48.112 | Validate prerender fallback available | Available | Heavy | Deterministic |
| 6.48.113 | Validate hydration mismatches minimal | Minimal | Heavy | Deterministic |
| 6.48.114 | Validate static HTML contains core content before JS loads | Present | Heavy | Deterministic |
| 6.48.115 | Validate structured data exists in server-rendered HTML | Exists | Medium | Deterministic |
| 6.48.116 | Validate canonical tags included server-side | Included | Medium | Deterministic |
| 6.48.117 | Validate mobile-, tablet-, and desktop-rendered versions match | Match | Medium | Deterministic |
| 6.48.118 | Detect flickering/FOUC problems | None | Medium | Deterministic |
| 6.48.119 | Validate first render meaningful without JS | Meaningful | Medium | Deterministic |
| 6.48.120 | Validate page not using client-side routing for core content | No CSR for core | Medium | Deterministic |
Client-Side Rendering (CSR) Safety Checks
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.121 | Validate CSR not blocking initial content visibility | Not blocking | Heavy | Deterministic |
| 6.48.122 | Detect CSR-only content that prevents indexing | None | Heavy | Deterministic |
| 6.48.123 | Validate content available within first paint window | Available | Heavy | Deterministic |
| 6.48.124 | Validate client routing does not break URL discoverability | Safe | Medium | Deterministic |
| 6.48.125 | Validate user-triggered content expandable without JS reliance | Expandable | Medium | Deterministic |
| 6.48.126 | Validate internal linking functional even under JS-disabled mode | Functional | Medium | Deterministic |
| 6.48.127 | Validate dynamic components load within crawl window | On-time | Medium | Deterministic |
| 6.48.128 | Detect script timing causing crawler misses | None | Medium | Deterministic |
| 6.48.129 | Validate DOM elements stable during scroll | Stable | Medium | Deterministic |
| 6.48.130 | Validate JS hydration delays <2s | <2s | Medium | Deterministic |
AI-JS Readability & AI Engine Content Grasp
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.131 | Validate core content extracted reliably from rendered HTML | Extractable | Heavy | Deterministic |
| 6.48.132 | Validate AI can parse content even when JS frameworks used | Parseable | Heavy | Deterministic |
| 6.48.133 | Validate structured data unaffected by JS mutations | Stable | Heavy | Deterministic |
| 6.48.134 | Validate content not moved below fold artificially | Not moved | Medium | Deterministic |
| 6.48.135 | Validate dynamic pricing/timing content stable | Stable | Medium | Deterministic |
| 6.48.136 | Detect hidden DOM nodes misinterpreted by AI | None | Medium | Deterministic |
| 6.48.137 | Validate semantic HTML remains intact after JS execution | Intact | Medium | Deterministic |
| 6.48.138 | Validate JS-based injected FAQs still indexable | Indexable | Medium | Deterministic |
| 6.48.139 | Validate no duplicate DOM copies created by hydration | None | Medium | Deterministic |
| 6.48.140 | Validate AI-readable text exists both pre-render and post-render | Present | Medium | Deterministic |
Rendering Consistency & Device Simulation
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.141 | Validate desktop vs mobile rendering consistency | Consistent | Heavy | Deterministic |
| 6.48.142 | Detect broken rendering on mobile | None | Heavy | Deterministic |
| 6.48.143 | Validate tablet rendering stable | Stable | Heavy | Deterministic |
| 6.48.144 | Validate responsive breakpoints correct | Correct | Medium | Deterministic |
| 6.48.145 | Validate viewport meta tag valid | Valid | Medium | Deterministic |
| 6.48.146 | Validate CSS grid/flexbox layout consistent across browsers | Consistent | Medium | Deterministic |
| 6.48.147 | Detect rendering differences in Safari vs Chrome | None | Medium | Deterministic |
| 6.48.148 | Validate fonts render properly across devices | Proper | Medium | Deterministic |
| 6.48.149 | Validate images responsive and not distorted | Correct | Medium | Deterministic |
| 6.48.150 | Compute partial Rendering & JS Integrity score | Finalized | Medium | Deterministic |
Core Web Vitals — LCP, FID/INP, CLS
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.151 | Validate LCP ≤ 2.5s on mobile | ≤2.5s | Critical | Deterministic |
| 6.48.152 | Validate LCP element stable and not shifting | Stable | Heavy | Deterministic |
| 6.48.153 | Validate INP ≤ 200ms | ≤200ms | Heavy | Deterministic |
| 6.48.154 | Validate CLS ≤ 0.1 | ≤0.1 | Heavy | Deterministic |
| 6.48.155 | Detect layout shifts due to ads/widgets | None | Medium | Deterministic |
| 6.48.156 | Validate fonts not causing FOIT/FOUT | No FOIT/FOUT | Medium | Deterministic |
| 6.48.157 | Validate hero images preloaded correctly | Preloaded | Medium | Deterministic |
| 6.48.158 | Detect CLS from dynamic content | None | Medium | Deterministic |
| 6.48.159 | Validate UI components stable during scroll | Stable | Medium | Deterministic |
| 6.48.160 | Validate mobile LCP element not hidden behind lazy‑load | Not hidden | Medium | Deterministic |
Performance Optimization — Images, Video, CDN
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.161 | Validate images served in next‑gen formats (WebP/AVIF) | Next‑gen | Heavy | Deterministic |
| 6.48.162 | Validate image compression ratio optimal | Optimal | Heavy | Deterministic |
| 6.48.163 | Validate responsive images (srcset) used | Used | Heavy | Deterministic |
| 6.48.164 | Validate lazy‑loading implemented | Implemented | Medium | Deterministic |
| 6.48.165 | Detect oversized images compared to container | None | Medium | Deterministic |
| 6.48.166 | Validate CDN caching for images | Cached | Medium | Deterministic |
| 6.48.167 | Validate video compressed and using streaming formats | Optimized | Medium | Deterministic |
| 6.48.168 | Validate poster images for videos present | Present | Medium | Deterministic |
| 6.48.169 | Detect bandwidth-heavy media elements | None | Medium | Deterministic |
| 6.48.170 | Validate images served through CDN edge locations | Served | Medium | Deterministic |
Performance — JS/CSS Optimization
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.171 | Validate JS bundle size minimal (<200kb) | <200kb | Heavy | Deterministic |
| 6.48.172 | Validate unused JS removed (tree‑shaking) | Removed | Heavy | Deterministic |
| 6.48.173 | Validate CSS optimized and purged | Optimized | Heavy | Deterministic |
| 6.48.174 | Validate critical CSS inlined properly | Inlined | Medium | Deterministic |
| 6.48.175 | Validate JS loaded async/defer | Async/Defer | Medium | Deterministic |
| 6.48.176 | Validate CSS not blocking render | Non‑blocking | Medium | Deterministic |
| 6.48.177 | Validate script execution time <2s | <2s | Medium | Deterministic |
| 6.48.178 | Detect render‑blocking third‑party scripts | None | Medium | Deterministic |
| 6.48.179 | Validate iframe loading optimized | Optimized | Medium | Deterministic |
| 6.48.180 | Validate CSS delivered via CDN | Delivered | Medium | Deterministic |
Performance — Caching, Headers, Delivery
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.181 | Validate caching headers set correctly | Correct | Heavy | Deterministic |
| 6.48.182 | Validate CDN edge caching effective | Effective | Heavy | Deterministic |
| 6.48.183 | Validate ETag/Last‑Modified headers correct | Correct | Heavy | Deterministic |
| 6.48.184 | Validate server compression (gzip/brotli) active | Active | Medium | Deterministic |
| 6.48.185 | Validate preconnect/dns‑prefetch tags implemented | Implemented | Medium | Deterministic |
| 6.48.186 | Validate HTTP/2 enabled | Enabled | Medium | Deterministic |
| 6.48.187 | Validate HTTP/3 enabled (if supported) | Enabled | Medium | Deterministic |
| 6.48.188 | Validate caching rules consistent across file types | Consistent | Medium | Deterministic |
| 6.48.189 | Detect stale caching leading to outdated content | None | Medium | Deterministic |
| 6.48.190 | Validate DNS resolution performance stable | Stable | Medium | Deterministic |
Final Performance Validation & Computation
| ID | Check | Passes when | Weight | Runs |
|---|
| 6.48.191 | Validate total page weight <2MB | <2MB | Heavy | Deterministic |
| 6.48.192 | Validate mobile load time <3.5s | <3.5s | Heavy | Deterministic |
| 6.48.193 | Validate desktop load time <2.5s | <2.5s | Heavy | Deterministic |
| 6.48.194 | Validate critical path minimal | Minimal | Medium | Deterministic |
| 6.48.195 | Validate performance stable across regions | Stable | Medium | Deterministic |
| 6.48.196 | Detect unnecessary heavy resources | None | Medium | Deterministic |
| 6.48.197 | Validate preloading and resource hints correct | Correct | Medium | Deterministic |
| 6.48.198 | Validate caching leads to improved repeat load time | Improved | Medium | Deterministic |
| 6.48.199 | Validate no regressions in performance metrics | None | Medium | Deterministic |
| 6.48.200 | Compute Final Technical Performance score | Finalized | Critical | Deterministic |
← 6.47 AI-Level Local Relevance Protocols6.49 Content Quality, EEAT, AI Readability & Factual Resilience →
Run these checks on your site
A Deep Audit scores every check here that applies to your page, then an AI pass of up to 150 checks. Included on Pro and Ultra, or $9 for one audit.
See plans
Machine-readable: catalog totals and the
full catalog as JSON (IDs, section, weight, status).