50 checks in Technical Foundation & Rendering. Automated Its subsection has a live automated checker in the engine.
| ID | Check | Passes when |
|---|---|---|
| 1.2.01 | GET / (raw HTTP) and store HTML snapshot | Raw HTML captured |
| 1.2.02 | Render / using headless browser and store DOM snapshot | DOM captured |
| 1.2.03 | Compare raw HTML vs DOM length | Difference <= 25% |
| 1.2.04 | Count <h1> tags in raw HTML vs DOM | Match |
| 1.2.05 | Count <h2> tags in raw HTML vs DOM | Match |
| 1.2.06 | Count <p> tags in raw HTML vs DOM | +/- 10% tolerance |
| 1.2.07 | Compare <img> tag count raw vs DOM | +/- 10% tolerance |
| 1.2.08 | Compare <a> tag count raw vs DOM | Link count parity |
| 1.2.09 | Extract title from raw HTML and DOM | Titles identical |
| 1.2.10 | Extract meta description raw vs DOM | Match |
| 1.2.11 | Extract canonical URL raw vs DOM | Identical |
| 1.2.12 | Compare OpenGraph tags raw vs DOM | Match |
| 1.2.13 | Compare Twitter Card tags raw vs DOM | Match |
| 1.2.14 | Compare JSON-LD schema raw vs DOM | Structurally identical |
| 1.2.15 | Detect hidden content injected by JavaScript | No major DOM-only blocks |
| 1.2.16 | Compare number of <script> tags | +/- 20% |
| 1.2.17 | Identify DOM nodes removed during hydration | < 10 nodes removed |
| 1.2.18 | Identify DOM nodes added during hydration | < 20 nodes added |
| 1.2.19 | Check if JS prevents content from loading without JS | Raw HTML contains main content |
| 1.2.20 | Detect client-side rendering (CSR) only content | Majority content server-rendered |
| 1.2.21 | Compare navigation <nav> structure raw vs DOM | Match |
| 1.2.22 | Validate footer structure raw vs DOM | Match |
| 1.2.23 | Compare image src values raw vs DOM | Consistent |
| 1.2.24 | Check srcset appears in both raw & DOM | Present |
| 1.2.25 | Check lazy-loaded images are visible in DOM | True |
| 1.2.26 | Compare <link rel='stylesheet'> raw vs DOM | Same set |
| 1.2.27 | Compare preload tags raw vs DOM | Same set |
| 1.2.28 | Compare favicon link tags | Identical |
| 1.2.29 | Detect if DOM includes cloaked content not visible in raw HTML | No cloaking |
| 1.2.30 | Validate that core content blocks remain present after render | Present |
| 1.2.31 | Compare structured data types raw vs DOM | Identical |
| 1.2.32 | Compare structured data property counts | +/- 10% |
| 1.2.33 | Ensure primary content (text) is not injected entirely by JS | Present in raw HTML |
| 1.2.34 | Measure DOM load time | < 3 seconds |
| 1.2.35 | Measure DOM size | < 12 MB |
| 1.2.36 | Detect duplicate nodes between raw and DOM | < 5 duplicates |
| 1.2.37 | Detect missing raw HTML sections in DOM | None |
| 1.2.38 | Verify if dynamic JS rewrites canonical tag | No rewrite |
| 1.2.39 | Verify if dynamic JS rewrites robots meta tag | No rewrite |
| 1.2.40 | Check DOM for injected “noindex” | Not present |
| 1.2.41 | Validate header logo raw vs DOM match | Identical |
| 1.2.42 | Validate footer logo raw vs DOM match | Identical |
| 1.2.43 | Compare class attributes raw vs DOM (top 20 nodes) | Similar |
| 1.2.44 | Compare id attributes raw vs DOM | Similar |
| 1.2.45 | Validate that structured navigation links remain clickable in DOM | True |
| 1.2.46 | Identify JS that removes indexing-critical content | None |
| 1.2.47 | Identify JS that adds cloaked keyword blocks | None |
| 1.2.48 | Compare innerText of primary H1 raw vs DOM | Match |
| 1.2.49 | Compare hero section HTML raw vs DOM | +/- 10% |
| 1.2.50 | Compute total render parity score (composite) | ≥ 85% parity |
← 1.1 Raw HTTP Status Suite1.3 JavaScript Blocking & Hydration Suite →
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 plansMachine-readable: catalog totals and the full catalog as JSON (IDs, section, weight, status).