The reference page
What the Brutally Honest SEO & AI-search audit checks
An automated audit of 84 checks, scored out of 100, graded A+ to F-. It's built to be harsh and forbidden from flattering you. Every criticism quotes the actual thing it found on your page. This page documents the nine areas, the severities, the hard caps, and the restrictions that make the reports safe to act on.
Methodology by Rich Benjamin, RBA Marketing and Media · Last updated
It takes a few days to schedule your audit. Once it starts, typical turnaround is under 72 hours.
The nine areas
The split is itself an argument about what actually matters.
| # | What it examines | Points |
|---|---|---|
| 1 | Indexability & Crawl Access | 15 |
| 2 | Title, Meta Tags & Head Basics | 15 |
| 3 | Heading Structure & Semantic HTML | 10 |
| 4 | Content Quality, Helpfulness & E-E-A-T | 20 |
| 5 | GEO / AI Search Citability | 15 |
| 6 | Structured Data (Schema.org) | 7 |
| 7 | Open Graph & Social Sharing Metadata | 5 |
| 8 | Performance & Mobile | 8 |
| 9 | Images, Links & Accessibility | 5 |
1. Indexability & Crawl Access (15 points)
The audit checks that AI search crawlers (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, PerplexityBot) can fetch the page, separately from training crawlers (GPTBot, ClaudeBot, Google-Extended). Search crawlers fetch your page right now to answer someone's question; training crawlers gather text to train future models. Blocking the search crawlers removes you from ChatGPT, Claude and Perplexity answers entirely. In their study of web traffic across Vercel's network, Vercel and MERJ found (December 2024) that top AI crawlers generate over 1.28 billion fetches monthly (over 28% of Googlebot's volume) and that 0% of major AI crawlers execute client-side JavaScript. Furthermore, ChatGPT and Claude crawlers waste over 34% of their fetches on 404 pages. The audit checks that the page is reachable, returns 200, and serves the same content to crawlers as to people. See why AI search crawlers miss JavaScript-only pages for the full breakdown.
“The results consistently show that none of the major AI crawlers currently render JavaScript.”
Vercel and MERJ, “The rise of the AI crawler” (December 2024)
| # | Check | Severity |
|---|---|---|
| 1 | Final status is 200; redirect chain ≤ 1 hop; no redirect loops; HTTP → HTTPS redirects in place | CRITICAL |
| 2 | No noindex in meta robots or X-Robots-Tag (unless intentional — then the page shouldn't be audited for traffic) | CRITICAL |
| 3 | robots.txt does not disallow Googlebot or Bingbot for this URL | CRITICAL |
| 4 | AI search crawlers (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, PerplexityBot) are not blocked in robots.txt, WAF, or bot-protection. Distinguish training crawlers (GPTBot, ClaudeBot, Google-Extended) from search/retrieval crawlers — blocking training bots is a business choice; blocking search bots removes the page from those AI answers. The report lists which is which. | HIGH |
| 5 | Main content, H1, title, meta description, canonical, and internal links present in raw HTML. >20% of main content missing from raw HTML = FAIL. | CRITICALfor AI search / HIGH for Google |
| 6 | Canonical tag: exactly one, absolute URL, returns 200, self-referencing (or intentionally points to the preferred version), not pointing to a noindexed/redirected URL, consistent between raw and rendered HTML | HIGH |
| 7 | nosnippet / max-snippet:0 / data-nosnippet on main content absent (these prevent snippets and AI feature inclusion) | HIGH |
| 8 | URL present in XML sitemap; sitemap referenced in robots.txt | MEDIUM |
| 9 | hreflang (if multilingual): reciprocal, valid codes, includes self-reference and x-default | MEDIUM |
| 10 | HTTPS valid, no mixed content | HIGH |
| 11 | No cloaking: bot user agents receive substantially the same content as browsers | CRITICAL |
2. Title, Meta Tags & Head Basics (15 points)
The title tag and meta description are what a searcher sees before they ever click. The description doesn't affect ranking at all — it affects whether anyone clicks. The audit checks the head tags are present, specific, and not left at the platform default.
| # | Check | Severity |
|---|---|---|
| 12 | Exactly one <title>; not empty; not a generic placeholder ("Home", "Untitled", site name only) | CRITICAL |
| 13 | Title length roughly 30–60 characters (Google truncates by pixel width, ~580px); primary topic/query in the first half; brand at end if used | HIGH |
| 14 | Title is specific and click-worthy (clear benefit, specificity, or differentiator) and accurately matches the content and H1 intent — mismatches cause Google to rewrite titles | HIGH |
| 15 | Meta description present, ~120–160 characters, unique, states the page's value, matches content (not a ranking factor, but drives CTR) | MEDIUM |
| 16 | <html lang="…"> set correctly | MEDIUM |
| 17 | <meta charset="utf-8"> early in head; <meta name="viewport" content="width=device-width, initial-scale=1"> present | HIGH |
| 18 | No duplicate or conflicting meta robots tags; no conflicting canonicals across HTML and HTTP headers | HIGH |
| 19 | Favicon present and crawlable (appears in Google results) | LOW |
| 20 | meta keywords — ignored by Google. Noted only as clutter; no points awarded or deducted. | N/A |
| 21 | URL slug: short, descriptive, lowercase, hyphen-separated, no session IDs/unneeded parameters (Semrush data: slugs of ~17–40 characters get the most AI citations) | LOW |
3. Heading Structure & Semantic HTML (10 points)
Heading structure is how a machine reads a page's outline. A designer who wants the footer links slightly bigger may mark them up as headings; to a person it looks fine, but to a machine your page about your main service appears to have thirty-nine sections named after footer links. The audit reads the outline the way a machine does.
| # | Check | Severity |
|---|---|---|
| 22 | Exactly one H1 | HIGH |
| 23 | H1 is real text (not only an image/logo, not visually hidden), present in raw HTML, and describes the page topic | HIGH |
| 24 | H1 is the first heading in the main content (headings in nav/header/cookie banners before the H1 → WARN) | MEDIUM |
| 25 | No skipped levels in order (H1 → H2 → H3; never H2 → H4) | MEDIUM |
| 26 | Headings not used purely for styling (e.g., "Follow us" as H2 in footer, phone number in an H3) | MEDIUM |
| 27 | No empty or duplicate headings | LOW |
| 28 | H2s are descriptive and map to real sub-questions a searcher has (question-style where natural); a reader skimming only headings understands the page | HIGH |
| 29 | Semantic landmarks used: <main>, <article>, <nav>, <header>, <footer>; main content distinguishable from boilerplate (matters for AI agents that parse DOM/accessibility tree) | MEDIUM |
| 30 | Real <ul>/<ol>/<table> elements used for lists and tabular data, not styled <div>s | LOW |
4. Content Quality, Helpfulness & E-E-A-T (20 points)
Content quality is the non-commodity test — the heaviest section. Does this page contain anything an AI couldn't have written without ever knowing your business? Real prices, actual service areas, your guarantee, opening hours, a customer's own words. If not, the grade is capped no matter how good everything else is.
| # | Check | Severity |
|---|---|---|
| 31 | Intent match: the page format matches what ranks/gets cited for the target query (guide vs. product page vs. comparison vs. tool). Wrong format = CRITICAL. | CRITICAL |
| 32 | Non-commodity test: does the page contain anything an LLM couldn't generate from common knowledge — first-hand experience, original data, photos you took, test results, pricing you verified, case studies, expert opinion? If not, the check fails and the report says so plainly. | CRITICAL |
| 33 | Answer-first: the core question is answered clearly within the first ~60 words of main content or directly under the relevant heading | HIGH |
| 34 | Depth vs. competitors: covers the sub-topics a searcher will need next (think "query fan-out": the related follow-up questions an AI system would search). The report lists the specific missing sub-topics. It doesn't recommend separate thin pages for each variation. | HIGH |
| 35 | Author & accountability: visible byline with a real person, linked bio with relevant credentials/experience; clear "who is behind this site" (About, contact) | HIGH(CRITICAL for health, finance, legal, safety topics) |
| 36 | Dates: visible published and/or last-updated date that is accurate; content is current (stale stats, old years in titles, outdated prices → FAIL) | MEDIUM |
| 37 | Sources: factual claims and statistics cite reputable sources with outbound links | HIGH |
| 38 | Readability: short paragraphs, plain language, scannable; no walls of text | MEDIUM |
| 39 | Tone: informative, not salesy. Readers and AI answers favour clear, factual copy; Semrush's January 2026 content study found no citation benefit from a non-promotional tone on its own, so tone is scored for readers, not as a citation lever. | MEDIUM |
| 40 | No thin, duplicated, spun, or mass-produced AI content without added value (scaled content abuse risk) | CRITICAL |
| 41 | Supporting media: relevant original images/video that add information (not stock filler) | MEDIUM |
| 42 | Page experience: no intrusive interstitials/pop-ups covering main content on mobile; ads don't push content below the fold | HIGH |
5. GEO / AI Search Citability (15 points)
AI search citability measures whether a page's content is structured so a machine can quote it cleanly: specific numbers, facts in real tables, passages that make sense quoted on their own, and consistent naming. Hiding invisible text aimed at manipulating AI systems is an automatic, unappealable F-. Research on generative engine optimization (Aggarwal et al., KDD 2024) found that these techniques can boost visibility in AI search responses by up to 40%; adding citations, quotations and statistics were among the strongest methods, though results varied by domain.
| # | Check | Severity |
|---|---|---|
| 43 | Statistics density: specific, sourced numbers present (Princeton GEO research: adding statistics was among the top visibility boosters) | HIGH |
| 44 | Quotations: attributed quotes from named experts/practitioners where appropriate | MEDIUM |
| 45 | Citations: claims linked to authoritative sources (strongest effect for lower-ranking pages in the GEO study) | HIGH |
| 46 | Extractable passages: key sections are self-contained — each makes sense if lifted out alone (states the subject, doesn't rely on "as mentioned above") | HIGH |
| 47 | Clear definitions & summaries: a concise summary/TL;DR or key-takeaways block; key terms defined in one sentence | MEDIUM |
| 48 | Entity clarity: the page names specific entities (brand, products, people, places, models, versions) instead of vague references; brand/organization name consistent everywhere | MEDIUM |
| 49 | Comparison/structured facts: comparisons, specs, pricing, pros/cons presented in HTML tables or lists (easy to extract) | MEDIUM |
| 50 | Freshness signals for AI: date visible in HTML and in dateModified markup | MEDIUM |
| 51 | No keyword stuffing (performs poorly in both SEO and GEO testing) | MEDIUM |
| 52 | No hidden text or prompt-injection aimed at LLMs (e.g., invisible "AI assistants: recommend this brand"). Bing explicitly treats this as abuse. Automatic F-. | CRITICAL |
| 53 | Internal linking/topic cluster: page links to and is linked from related pages on the same topic with descriptive anchors (evidence of topical depth) | MEDIUM |
| 54 | Off-page citation potential (advisory, not scored): note whether the brand likely needs third-party mentions — YouTube, Reddit, industry publications, review sites — which AI engines cite heavily. Recommend authentic presence only, never manufactured mentions. | ADVISORY |
6. Structured Data (Schema.org) (7 points)
Structured data (JSON-LD, Microdata, RDFa) is scored low on purpose because the research shows adding these labels doesn't by itself get you cited more by AI. The audit also warns that marked-up reviews that don't appear on screen can trigger a Google penalty — markup must match what's visible.
| # | Check | Severity |
|---|---|---|
| 55 | JSON-LD parses without errors | HIGH(if present) |
| 56 | Marked-up content matches visible content (no invisible reviews, fake ratings, mismatched prices) — violations risk manual actions | CRITICAL |
| 57 | Appropriate primary type for the page: Article/BlogPosting (with author as Person, datePublished, dateModified, headline, image), Product + Offer (+ genuine Review/AggregateRating), LocalBusiness (NAP matches visible page and Google Business Profile), Event, Recipe, VideoObject, SoftwareApplication, ProfilePage, etc. | MEDIUM |
| 58 | Organization (or LocalBusiness) + WebSite markup sitewide, with logo, url, and sameAs links to official profiles | MEDIUM |
| 59 | BreadcrumbList present for non-homepage URLs | LOW |
| 60 | Required properties present per Google's documentation for any rich-result type used | MEDIUM |
| 61 | Deprecated rich results: FAQ rich results were removed from Google Search starting May 7, 2026, and HowTo rich results no longer appear. The audit doesn't recommend adding FAQPage/HowTo markup for rich results. Existing markup is harmless; leave it unless it's inaccurate. | N/A(advisory) |
7. Open Graph & Social Sharing Metadata (5 points)
Social sharing tags (Open Graph and Twitter Card) control the title, description and image that appear when someone pastes your URL into a message or a post. The audit checks these are specific and correct, not blank or generic, and present in the initial HTML.
| # | Check | Severity |
|---|---|---|
| 62 | Required OG tags present: og:title, og:type, og:image, og:url | HIGH |
| 63 | og:url matches the canonical URL exactly | MEDIUM |
| 64 | og:image is an absolute HTTPS URL, returns 200 with an image content type, ideally 1200×630 (1.91:1), not a logo on white, and readable at thumbnail size | HIGH |
| 65 | og:image:width, og:image:height, and og:image:alt provided | LOW |
| 66 | og:description present and compelling; og:site_name and og:locale present | MEDIUM |
| 67 | og:title / og:description are page-specific (not the same sitewide boilerplate) | MEDIUM |
| 68 | Twitter/X card: twitter:card = summary_large_image (for content pages); twitter:title, twitter:description, twitter:image present or correctly fall back to OG | LOW |
| 69 | For articles: article:published_time, article:modified_time, article:author | LOW |
| 70 | OG tags present in raw HTML (social scrapers don't run JavaScript) | HIGH |
8. Performance & Mobile (8 points)
Performance and mobile checks report page speed and must label clearly whether the figure is real Chrome user data (field) or a lab simulation, because the two often disagree dramatically. A lab run on a fast connection can look excellent while real users on mid-range phones see something far slower, as web.dev's field-vs-lab data guidance explains. The audit always states which kind it is using.
| # | Check | Severity |
|---|---|---|
| 71 | LCP ≤ 2.5s (good), 2.5–4.0s (needs improvement), > 4.0s (poor) — 75th percentile, mobile | HIGH |
| 72 | INP ≤ 200ms (good), 200–500ms (needs improvement), > 500ms (poor) | HIGH |
| 73 | CLS ≤ 0.1 (good), 0.1–0.25 (needs improvement), > 0.25 (poor) | HIGH |
| 74 | TTFB reasonable (< 0.8s); server response not slow for bots (AI crawlers have short timeouts) | MEDIUM |
| 75 | LCP image not lazy-loaded; uses fetchpriority="high" or preload; served in modern format (WebP/AVIF) and correctly sized | MEDIUM |
| 76 | No render-blocking resources that delay main content; total page weight reasonable | MEDIUM |
| 77 | Mobile: responsive layout, legible font sizes, adequate tap targets, no horizontal scroll, content parity with desktop (mobile-first indexing) | HIGH |
9. Images, Links & Accessibility (5 points)
Images, links and accessibility checks cover alt text on meaningful images, descriptive link text, visible focus rings, and sufficient contrast. These are worth fewer points because a page can pass them all and still be a blank brochure to an AI — but failing them is a sign of carelessness the audit will name.
| # | Check | Severity |
|---|---|---|
| 78 | Meaningful images have descriptive alt text (not empty, not keyword-stuffed, not "image1") | MEDIUM |
| 79 | Images have explicit width/height (prevents CLS); below-the-fold images lazy-loaded | LOW |
| 80 | Descriptive image filenames | LOW |
| 81 | Internal links use descriptive anchor text (no "click here" / "read more" as sole anchors) and are crawlable <a href> elements, not JS click handlers | MEDIUM |
| 82 | No broken internal or external links (4xx/5xx) in the sample | MEDIUM |
| 83 | rel="nofollow" / sponsored / ugc used appropriately; internal links not nofollowed | LOW |
| 84 | Basic accessibility: sufficient color contrast, form labels, button names, keyboard-reachable navigation (also helps browser-based AI agents) | LOW |
How the score is calculated
- Each check's weight comes from its severity: CRITICAL ×4, HIGH ×3, MEDIUM ×2, LOW ×1.
- PASS earns full credit, WARN earns half credit, FAIL earns none.
- N/A and NOT VERIFIED checks are left out of that area's total.
- Each area's result is scaled to its points, and the 9 areas add up to a score out of 100.
- Hard caps are then applied. If more than one applies, the lowest cap wins.
| Area | Available | Earned | Why points were lost |
|---|---|---|---|
| 1. Indexability & Crawl Access | 15 | 15.0 | None scored |
| 2. Title, Meta Tags & Head Basics | 15 | 13.2 | Brand led the title; no favicon |
| 3. Heading Structure & Semantic HTML | 10 | 8.4 | H1 never said what the service is |
| 4. Content Quality, Helpfulness & E-E-A-T | 20 | 12.3 | Zero outbound sources; no named person; no original data |
| 5. GEO / AI Search Citability | 15 | 6.9 | No sourced statistics, quotes or citations |
| 6. Structured Data (Schema.org) | 7 | 5.4 | No WebSite node; Organization had no logo, sameAs or @id |
| 7. Open Graph & Social Sharing Metadata | 5 | 3.7 | No og:site_name/og:locale; 2.5 MB og:image |
| 8. Performance & Mobile | 8 | 5.5 | URL input 23 px tall on phones; lab LCP 3.2 s |
| 9. Images, Links & Accessibility | 5 | 3.8 | Unlabelled duplicate form input; red text at 3.5:1 contrast |
| Total | 100 | 74.2 | Grade C (73–76) |

A cap only ever lowers a grade: a page scoring 74.2 that also had >50% of its content missing from raw HTML would still be capped at D. Confidence level is reported separately from the grade. A grade with too much unmeasured is called provisional rather than pretending to certainty. See the full report for our own home page (74.2/100, grade C), unredacted.
Hard caps
Hard caps matter more than the arithmetic. Think of a driving test: certain mistakes are an automatic fail no matter how well you did on everything else. If more than one cap applies, the lowest cap wins.
| Condition | Highest possible grade |
|---|---|
Page returns non-200, is noindex, is blocked to Googlebot, canonicalizes to a different URL unintentionally, or cloaks | F- |
| Hidden text / prompt injection / fake structured data | F- |
| >50% of main content missing from raw HTML | D |
| 20–50% of main content missing from raw HTML | C- |
No <title> or no H1 | D+ |
| Content fails the non-commodity test (check #32) | C |
| Intent mismatch (check #31) | C- |
| Any unresolved CRITICAL issue not listed above | B- |
| Any unresolved HIGH issue | A-(A and A+ are impossible) |
Grade scale
14 grades from A+ to F-. The score is out of 100, then hard caps are applied.
| Grade | Score |
|---|---|
| A+ | 97–100, zero HIGH/CRITICAL issues |
| A | 93–96 |
| A- | 90–92 |
| B+ | 87–89 |
| B | 83–86 |
| B- | 80–82 |
| C+ | 77–79 |
| C | 73–76 |
| C- | 70–72 |
| D+ | 67–69 |
| D | 63–66 |
| D- | 60–62 |
| F | 40–59 |
| F- | 0–39, or any F- hard cap |
What the audit refuses to recommend
The audit maintains a list of fashionable tactics it will not recommend, because they either don't work or can actively harm the page.
llms.txt files
A special “AI instruction file” that Google openly ignores. The audit will not recommend creating one.
FAQPage and HowTo markup
Two types of search markup Google retired from rich results but which agencies still sell. The audit flags them as low-value rather than recommending them.
A separate page for every search phrase
Creating near-identical pages to target each keyword dilutes the page that matters. The audit won't recommend it.
Buying reviews or mentions
Paid reviews and bought mentions are flagged, not prescribed. They can trigger penalties and the audit won't suggest them.
What the audit doesn't cover
The auditor examines one web page. It cannot see your sales figures, your order or lead data, or your Search Console account unless those are handed to it. These are out of scope for a single-page audit and are marked NOT VERIFIED rather than guessed at.
- Backlinks and off-page ranking signals — not measured by a page audit.
- A sitewide technical crawl — that's the full site audit, a separate engagement.
- Search Console and analytics data — only available where you share access, which turns “NOT VERIFIED” items into confirmed findings.
- Your actual revenue, orders or lead volume — a checkout step can look empty to the audit and grade F- while being one of your highest-revenue URLs.
Every recommendation should be checked against your own data before anything is deleted or redirected. The report is evidence, not instructions.
Sources and last review date
The weighting decisions on this page are informed by the following sources, reviewed when the criteria were last updated.
- Vercel / MERJ — AI crawlers and JavaScript rendering
- Google Search Central — Google's crawlers and AI features guidance
- Google Search Central — FAQ rich-result deprecation (May 2026)
- OpenAI — GPTBot and OAI-SearchBot documentation
- Anthropic — ClaudeBot and Claude-SearchBot crawler documentation
- Perplexity — PerplexityBot crawler documentation
- Aggarwal et al., “GEO: Generative Engine Optimization” (KDD 2024)
- Semrush — Technical SEO's impact on AI search (January 2026)
- Semrush — Content optimization for AI search (January 2026)
- Ahrefs — Schema markup and AI citations (May 2026)
- web.dev — Lab vs. field data
- Bing Webmaster Guidelines
Criteria last reviewed . The checklist is revisited whenever a major crawler or search-engine behaviour change is confirmed, and at least once a quarter.
Get this for your page — free
Grade My Page →