SEO + GEO Audit: Brutally Honest Website Reviews — Free SEO & AI-Search Audit
URL: https://brutallyhonest.rbamarketing.com/ | Audited: 2026-09-25 | Target query: free SEO and AI search audit / brutally honest website review (inferred from title, meta description and body)
Sample report. A real Brutally Honest audit of our own website, from our first audit round (September 2026). Nothing is redacted, and the page grades, scores and findings are exactly what the audit produced. We only removed notes that compared it with an earlier test run and corrected a few category letter grades that didn't match the published grade scale.
Grade: C (74.2/100) — Confidence: High
The canonical points at the live domain, so no F- cap applies. The page holds the grade its content earns, and that content is the problem. The body never uses the words "SEO" or "AI search", and it shows no real audit data or named expert behind "Your website probably deserves a D." Put the topic into the H1 and opening paragraph, then publish real numbers from the audits you have already run.
The rendered-DOM, raw-vs-rendered and crawler-UA checks confirm 0.0% of main content is missing from raw HTML and every bot gets identical content. They also turned up two mobile and accessibility defects: the primary URL field collapses to 23 px tall on phones, and the second form's input has no label because of duplicate IDs. No hard cap applies. The two open CRITICAL checks (4.1 intent match, 4.2 non-commodity) are narrow WARNs, not FAILs. They would cap the grade at B-, which is above the current score.
🚨 Critical Blockers
None found that block indexing or citation. The canonical, og:url, robots.txt Sitemap: line and sitemap <loc> entries all use https://brutallyhonest.rbamarketing.com/. Two CRITICAL-severity content checks are unresolved at WARN level:
- 4.1 Intent match (WARN). Results for "free SEO audit" are instant, no-email tools. This page is a request form: "It takes a few days to schedule your job. Typical turnaround is less than 72 hours." The format fits "honest / human website review" intent, not "free SEO checker".
- 4.2 Non-commodity test (WARN, narrow pass). The only original material is methodology: the 9-area weighting table and the hard-caps table. The sample card is a CSS mock-up (
[business name redacted],D+,Score 41/100). The headline claim "Your website probably deserves a D." has no data behind it.
Scorecard
| Category | Weight | Score | Grade | Worst issue |
|---|---|---|---|---|
| 1. Indexability & Crawl Access | 15 | 15.0 | A+ | None scored. The robots.txt comment mislabels OAI-SearchBot as a training crawler; sitemap has no <lastmod> |
| 2. Title, Meta & Head | 15 | 13.2 | B+ | Brand leads the title; "SEO" doesn't appear until character 34; no favicon (/favicon.ico 404) |
| 3. Headings & Semantic HTML | 10 | 8.4 | B | H1 "Your website probably deserves a D." never says what the service is |
| 4. Content Quality & E-E-A-T | 20 | 12.3 | D- | Zero outbound sources; no named person; no original data |
| 5. GEO / AI Citability | 15 | 6.9 | F | No sourced stats, quotes or citations; "SEO" appears 0 times in 1,865 words of main content |
| 6. Structured Data | 7 | 5.4 | C+ | No WebSite node; Organization has no logo, sameAs or @id |
| 7. Open Graph & Social | 5 | 3.7 | C | No og:site_name/og:locale; 2,527,439-byte og:image at 1.78:1 |
| 8. Performance & Mobile | 8 | 5.5 | D+ | Primary URL input renders 23 px tall on mobile; lab LCP 3.2 s (lab only) |
| 9. Images, Links & Accessibility | 5 | 3.8 | C | Duplicate id="page-url" leaves the second form input unlabelled; red accent text at 3.5:1 contrast |
| Total | 100 | 74.2 | C | Commodity-looking content without evidence, author or topic words |
Top 10 Fixes (ranked by impact ÷ effort)
| # | Fix | Category | Impact | Confidence | Effort |
|---|---|---|---|---|---|
| 1 | Verify the subdomain in Google Search Console and Bing Webmaster Tools, submit /sitemap.xml, request indexing of / and push all 9 URLs via IndexNow |
Indexability | Prerequisite for any measurable traffic. Size can't be estimated: indexing status and baseline are unknown | High | S |
| 2 | Put the words people search into the H1 and opening paragraph: "SEO", "AI search", "website audit". Today they appear 0, 0 and 0 times respectively in main content ("audit" alone appears 18 times) | Content / Headings | +10–30% non-branded impressions once indexed (Google organic, AI features) | Medium | S |
| 3 | Publish original data from the audits you have already run, e.g. "We graded N pages: median grade D, X% failed the raw-HTML check." Add a real (redacted) report screenshot | Content / GEO | +15–40% over 3–6 months. It is the only non-commodity, linkable and citable asset available | Medium | M–L |
| 4 | Add a named human: who runs the audits, credentials, years in SEO, photo, link to /about | E-E-A-T | +5–10%: trust, conversions and citation eligibility | Medium | S |
| 5 | Link the factual claims to their sources: AI crawlers don't run JavaScript, Google ignores llms.txt, FAQ/HowTo rich results retired | GEO | +5–15% AI-citation likelihood (ChatGPT, Perplexity, Copilot) | Low | S |
| 6 | Use one brand name everywhere ("Brutal Honest Website Report" tier, "RBA Marketing" footer, "RBA Marketing and Media" JSON-LD). Add WebSite + one @id'd Organization with logo and sameAs |
GEO / Schema | +3–8% entity recognition in AI answers | Low | S |
| 7 | Add a "How is this different from instant SEO checkers?" section and aim at the intent you can win: human-reviewed, evidence-quoting audits | Content / Intent | +5–15% on comparison and "honest website review" queries | Medium | M |
| 8 | Fix the conversion path. Stop the mobile URL input collapsing to 23 px (flex-1 → sm:flex-1). Give each form unique IDs so both inputs have labels. Point the three /request-report links at the final URL. Relabel "Schedule Your Scan" (×2 → /pricing) |
Links / UX / Mobile | +5–10% form conversions on mobile; cleaner crawl | Medium | S |
| 9 | Social and head cleanup: add a favicon, og:site_name, og:locale and og:image:width/height/alt; re-export the og:image at 1200×630, under 300 KB | Social / Head | +2–5% social CTR; favicon in Google results | Medium | S |
| 10 | Self-host the fonts, cut them to the weights actually used and preload the H1 font. Target lab LCP under 2.5 s (now 3.2 s) | Performance | +0–5% (tie-breaker only) | Low | M |
Path to +50%
Baseline first. No Search Console or analytics data was supplied, and indexing of the subdomain is NOT VERIFIED. A correct canonical produces no traffic until Google and Bing crawl and index the URL, typically within 2–4 weeks of submission. Until then, +50% of close to zero is still close to zero.
Midpoint math, measured against the post-indexing baseline:
- Fix 2 (topic words in H1 and opening): ~+20%
- Fix 3 (original data, real report screenshot): ~+25% (3–6 months)
- Fixes 4 + 5 (named expert, cited sources): ~+10%
- Fix 7 (differentiation section): ~+10%
- Fixes 6, 8, 9, 10 combined: ~+7%
- Sum of midpoints: ~+72%. Discount it heavily. The effects overlap, and "free SEO audit" is dominated by instant tools on established domains. A new subdomain won't outrank them on page quality alone.
Honest verdict: on-page work alone will not credibly deliver +50% on non-branded queries. It also needs:
- Fix 1 this week.
- Outside links and mentions: a contextual link from
www.rbamarketing.comto the subdomain, a data-led write-up of the grade distribution pitched to SEO publications, and YouTube walkthroughs of real, permissioned audits on@rbamarketing. - Targeting the intent this page can win: "honest website review", "human SEO audit", "AI search visibility audit for small business", "why can't ChatGPT see my website".
Realistic timeline: indexed in 2–4 weeks; measurable non-branded traffic in 3–6 months, if fix 3 and the off-page work happen.
Detailed Findings
1. Indexability & Crawl Access — 15.0/15
- 1.6: the canonical is
<link rel="canonical" href="https://brutallyhonest.rbamarketing.com/"/>: one tag, absolute, self-referencing, returns 200. 1.8: robots.txt declaresSitemap: https://brutallyhonest.rbamarketing.com/sitemap.xml(200), which lists<loc>https://brutallyhonest.rbamarketing.com/</loc>and the 8 other pages on the same host. - Advisory (not scored): the sample grade card is in the raw HTML twice, once inside
relative hidden lg:block(desktop) and once insidelg:hidden(mobile). Browsers show one copy, but AI crawlers reading raw HTML get the "[business name redacted] D+ 41/100" block twice, and the two forms are duplicated as well. The text is the same in both copies, so this is not cloaking. Render one copy and reposition it with CSS. - Advisory (not scored): the sitemap has no
<lastmod>and carries<priority>values, which Google ignores. Add real modification dates:<url><loc>https://brutallyhonest.rbamarketing.com/</loc><lastmod>2026-09-25</lastmod></url> - Advisory (not scored): the robots.txt comment reads
Training crawlers (e.g. Google-Extended, OAI-SearchBot's training role, ClaudeBot). That's wrong: OAI-SearchBot is OpenAI's search crawler and GPTBot is its training crawler. On a site that sells exactly this distinction, the error damages credibility. Replace it withTraining crawlers (e.g. GPTBot, ClaudeBot, Google-Extended). The file also has twoUser-agent: *groups (Allow: /andDisallow: /thanks). Google merges them, but a single group is clearer:User-agent: * Disallow: /thanks - Passed: 1.1 (200, no redirect;
http://→ 301 →https://), 1.2 (no noindex in meta or headers), 1.3, 1.4 (every search and training botAllow: /), 1.5 (measured: 0.0% of main content missing from raw HTML (576 unique words raw, 576 rendered); title, canonical, meta description, 1 JSON-LD block, 7 OG/Twitter tags, the H1, all 20 headings and all 25 unique hrefs are identical in raw and rendered HTML), 1.6, 1.7 (no nosnippet), 1.8, 1.10 (HTTPS; the rendered load made 12 requests, allhttps://, with zero console errors), 1.11 (identical 58,613-byte raw responses and identical 56,904-byte rendered DOMs, each with 0.0% missing, for Googlebot, Bingbot, GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot and PerplexityBot; ChatGPT-User also got 200). 1.9 N/A.
2. Title, Meta Tags & Head Basics — 13.2/15
- [HIGH] 2.2 Title length/placement — WARN
- Found:
<title>Brutally Honest Website Reviews — Free SEO & AI-Search Audit</title>(60 chars). The brand takes the first 31 characters, and "SEO" doesn't appear until character 34. - Why it matters: nobody searches the brand yet. The query-bearing half is the part most likely to be truncated or rewritten.
- Fix:
<title>Free SEO & AI Search Audit, Graded A+ to F- | Brutally Honest</title>
- Found:
- [LOW] 2.8 Favicon — FAIL
- Found: no
<link rel="icon">in the head;/favicon.icoand/favicon.svgboth return404. - Fix:
<link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="icon" href="/favicon.ico" sizes="48x48">(square icon, 48×48 or larger).
- Found: no
- Passed: 2.1, 2.3, 2.4 (150 chars, page-specific), 2.5 (
lang="en"), 2.6, 2.7 (one canonical, no HTTPLink:canonical). 2.9 N/A (no meta keywords). 2.10 N/A (homepage).
3. Heading Structure & Semantic HTML — 8.4/10
- [HIGH] 3.2 H1 describes the topic — WARN
- Found:
H1: Your website probably deserves a D. We'll tell you exactly why. - Why it matters: a strong hook, but it contains none of "SEO", "audit" or "AI search". The H1 is the strongest on-page topic label.
- Fix:
<h1>Your website probably deserves a D. <span>A free, brutally honest SEO and AI-search audit shows you why.</span></h1>
- Found:
- [HIGH] 3.7 Descriptive H2s — WARN
- Found:
84 checks. Nine areas. Weighted on purpose./Roughly half of the auditor's instructions are restrictions./One page. One grade. No sales call.These are clever, but a reader skimming only the headings can't tell what each section answers. - Fix: see the H2 outline in Rewrites.
- Found:
- Passed: 3.1, 3.3, 3.4, 3.5, 3.6, 3.8 (
<header>,<nav aria-label="Primary">,<main id="main">,<footer>, skip link), 3.9 (real<table>and<ul>).
4. Content Quality, Helpfulness & E-E-A-T — 12.3/20
- [CRITICAL] 4.1 Intent match — WARN
- Found: the page is a request form with a report delivered later ("Typical turnaround is less than 72 hours"). Searchers typing "free SEO audit" get instant, no-email tools.
- Fix: target "honest website review", "human SEO audit" and "AI search visibility audit". Say plainly why a human-checked report is worth the wait (fix 7).
- [CRITICAL] 4.2 Non-commodity test — WARN (narrow pass; no C cap applied)
- Found: the weighting and hard-cap tables are original. Everything else is claims without evidence. The sample card is CSS (
[business name redacted] D+ Score 41/100 Product grid invisible to AI), and there are no audit counts or grade distribution. - Fix:
<p>Of the <strong>N</strong> pages we graded between [month] and [month] 2026, the median grade was <strong>D</strong>; <strong>X%</strong> were missing main content from raw HTML.</p>. Use only real numbers.
- Found: the weighting and hard-cap tables are original. Everything else is claims without evidence. The sample card is CSS (
- [HIGH] 4.3 Answer-first — WARN
- Found:
An automated audit of 84 checks, scored out of 100, graded A+ to F-.It never says what gets audited. - Fix: use the opening paragraph in Rewrites.
- Found:
- [HIGH] 4.4 Depth — WARN
- Missing: who it's for, which AI engines are tested, how it differs from instant checkers, and paid-tier prices (both paid tiers say "Contact for Quote"). There is also no real before/after example.
- [HIGH] 4.5 Author & accountability — WARN
- Found: the footer has NAP ("RBA Marketing | 1002 Boardly Hills | Sevierville, TN 37876 | (865) 328-7990") and an /about link. No named person appears anywhere on the page.
- Fix: add a "Who grades your page" block with name, role, years of experience, photo and a link to /about.
- [MEDIUM] 4.6 Dates — WARN
- Found: no
<time>element and no visible date. "2026" does not appear in main content. - Fix:
<p>Last updated <time datetime="2026-09-25">September 25, 2026</time></p>
- Found: no
- [HIGH] 4.7 Sources — FAIL
- Found: 0 outbound links in
<main>. The only external links are the footer's Facebook, Instagram, YouTube and rbamarketing.com. Unsourced claims include "The crawlers behind ChatGPT, Claude and Perplexity read the page as it first arrives and move straight on", "special 'AI instruction files' that Google openly ignores" and "two types of search markup that Google retired". - Fix: link each claim to its source: Vercel/MERJ AI-crawler study, Google Search Central AI-features guidance, and Google's FAQ/HowTo deprecation notices.
- Found: 0 outbound links in
- [MEDIUM] 4.11 Supporting media — WARN
- Found: the only
<img>is the footer logo. The "What Google sees / What ChatGPT sees" panels and the grade card are CSS mock-ups. - Fix: add a real, redacted report screenshot and a real raw-vs-rendered comparison image, each with descriptive alt text.
- Found: the only
- Passed: 4.8, 4.9 (blunt, not hype), 4.10, 4.12 (no interstitial markup; lab CLS 0).
5. GEO / AI Search Citability — 6.9/15
- [HIGH] 5.1 Statistics density — FAIL
- Found: every number describes the method ("84 checks", "20 points", "less than 72 hours"). None is a sourced or original statistic.
- [MEDIUM] 5.2 Quotations — FAIL
- Found: no attributed quotes or testimonials. Fix: add 2–3 named client quotes, with permission.
- [HIGH] 5.3 Citations — FAIL. Same evidence as 4.7.
- [HIGH] 5.4 Extractable passages — WARN
- Found: H3s like
It cannot make things up.andIt cannot promise you traffic.start with "It" and only make sense in context. - Fix: "The audit cannot make things up: anything it couldn't measure is marked NOT VERIFIED."
- Found: H3s like
- [MEDIUM] 5.6 Entity clarity — FAIL
- Found: "Brutally Honest" appears 0 times in main content. The tier heading says
Brutal Honest Website Report, the og:image artwork reads "Brutally Honest Website Report", the footer says "RBA Marketing" and the JSON-LD says "RBA Marketing and Media". - Fix: one product name ("Brutally Honest Website Reviews") and one company name ("RBA Marketing and Media"), used everywhere.
- Found: "Brutally Honest" appears 0 times in main content. The tier heading says
- [MEDIUM] 5.8 Freshness signals — FAIL
- Found: no visible date and no
dateModified. Fix: 4.6 plus"dateModified":"2026-09-25"on aWebPagenode.
- Found: no visible date and no
- [MEDIUM] 5.11 Internal linking — WARN
- Found: the section "Google waits for your page to load. ChatGPT doesn't." has no link to
/ai-search(200), the page on exactly that topic. - Fix:
<a href="/ai-search">why AI crawlers miss JavaScript content</a>inside that section.
- Found: the section "Google waits for your page to load. ChatGPT doesn't." has no link to
- Passed: 5.5, 5.7 (tables), 5.9, 5.10. The off-screen
Leave this emptyfield is a standard form honeypot, not text aimed at LLMs. - 5.12 Advisory: the site has no visible third-party footprint yet. It needs authentic outside mentions: YouTube walkthroughs on
@rbamarketing, data posts in SEO publications and client write-ups.
6. Structured Data — 5.4/7
- [MEDIUM] 6.3 Primary type — WARN
- Found:
Service+Offer"price":"0"fits the page. ButOrganizationandLocalBusinessare two separate nodes with the same name, no@id, andLocalBusinesshas nourl.
- Found:
- [MEDIUM] 6.4 Organization + WebSite — FAIL
- Found: no
WebSitenode.Organizationhas nologoand nosameAs, although the footer links tohttps://www.facebook.com/rbamarketing,https://www.instagram.com/rbamarketingandhttps://www.youtube.com/@rbamarketing. - Fix (replaces the Organization and LocalBusiness nodes; keep the existing FAQPage node):
{"@context":"https://schema.org","@graph":[ {"@type":"LocalBusiness","@id":"https://www.rbamarketing.com/#org","name":"RBA Marketing and Media","url":"https://www.rbamarketing.com","logo":"<URL of a logo readable on white>","telephone":"+1-865-328-7990","address":{"@type":"PostalAddress","streetAddress":"1002 Boardly Hills","addressLocality":"Sevierville","addressRegion":"TN","postalCode":"37876","addressCountry":"US"},"sameAs":["https://www.facebook.com/rbamarketing","https://www.instagram.com/rbamarketing","https://www.youtube.com/@rbamarketing"]}, {"@type":"WebSite","@id":"https://brutallyhonest.rbamarketing.com/#website","name":"Brutally Honest Website Reviews","url":"https://brutallyhonest.rbamarketing.com/","publisher":{"@id":"https://www.rbamarketing.com/#org"}}, {"@type":"WebPage","@id":"https://brutallyhonest.rbamarketing.com/#webpage","url":"https://brutallyhonest.rbamarketing.com/","isPartOf":{"@id":"https://brutallyhonest.rbamarketing.com/#website"},"dateModified":"2026-09-25"}, {"@type":"Service","name":"Brutally Honest Website Reviews","serviceType":"SEO and AI-search website audit","provider":{"@id":"https://www.rbamarketing.com/#org"},"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"}} ]}
- Found: no
- 6.7 Advisory: the
FAQPagemarkup (3 of the visible questions) matches visible text and does no harm, but it won't earn a Google rich result. Don't expand it. - Passed: 6.1, 6.2, 6.6. 6.5 N/A (homepage).
7. Open Graph & Social Sharing — 3.7/5
- 7.2:
<meta property="og:url" content="https://brutallyhonest.rbamarketing.com/"/>matches the canonical. - [HIGH] 7.3 og:image — WARN
- Found:
https://assets.cdn.filesafe.space/jr5tnGZ1CNwntuZjbMrl/media/6aae921ade8ed1c29f6ddbfe.pngreturns 200,image/png, 1672×940 (1.78:1) and 2,527,439 bytes. The artwork says "Brutally Honest Website Report", which is a different product name. - Fix: re-export at 1200×630, WebP/JPEG under 300 KB, with the site's real name.
- Found:
- [LOW] 7.4 og:image dimensions/alt — FAIL
- Fix:
<meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Brutally Honest Website Reviews: free SEO and AI-search audit graded A+ to F-"/>
- Fix:
- [MEDIUM] 7.5 og:site_name / og:locale — FAIL
- Fix:
<meta property="og:site_name" content="Brutally Honest Website Reviews"/><meta property="og:locale" content="en_US"/>
- Fix:
- Passed: 7.1, 7.2, 7.6, 7.7 (
summary_large_image; twitter:image set; title and description fall back to OG), 7.9. 7.8 N/A (og:type= website).
8. Performance & Mobile — 5.5/8 (lab only; CrUX has no field data for this URL)
- [HIGH] 8.7 Mobile usability — WARN
- Found (Playwright, Pixel 5 at 393 px wide): the layout is responsive,
scrollWidth393 = viewport 393 (no horizontal scroll), no visible text under 12 px, and mobile and desktop show the same 1,362 visible words. But the hero URL field, the page's primary conversion control, renders at361×23px. The input hasclass="h-12 flex-1 …". In the mobileflex-direction: columnwrapper,flex-1setsflex-basis: 0%, and that overridesh-12(48 px). In the screenshot the placeholderhttps://yoursite.com/the-page-you-care-abouttouches both borders. That is below the 24 px WCAG 2.2 minimum target size and half the 48 px Google recommends. The footer links are also 16 px tall (What We Check,Pricing,Terms, etc.). - Why it matters: most small-business owners will open this page on a phone, and the one field they have to tap is a sliver.
- Fix: apply
flex-1only from the breakpoint where the wrapper becomes a row, and set a minimum height:
Add<input id="page-url-hero" name="pageUrl" type="url" required class="h-12 min-h-12 w-full sm:flex-1 rounded-md border-2 …">py-2ormin-h-6spacing to the footer links.
- Found (Playwright, Pixel 5 at 393 px wide): the layout is responsive,
- [HIGH] 8.1 LCP — WARN
- Found: lab LCP 3.2 s, FCP 3.2 s, Speed Index 4.6 s, TBT 0 ms, performance score 85. LCP equals FCP, so the delay is render-blocking CSS and fonts, not JavaScript.
- [MEDIUM] 8.6 Render-blocking resources — WARN
- Found: two blocking stylesheets,
/assets/styles-ASJNGGOi.cssandhttps://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;600;700;900&family=Roboto+Slab:wght@400;700&family=Permanent+Marker&display=swap. The rendered load then fetched 5 WOFF2 files fromfonts.gstatic.com(37,520 + 36,292 + 34,160 + 29,296 + 16,692 bytes = 153,960 bytes of fonts). Total transfer for the initial view is only ~151 KB (the fonts come from cache after the first hit), so page weight is fine and the problem is the cross-origin chain. - Fix: self-host the fonts, keep only the weights in use, inline critical CSS, and add
<link rel="preload" as="font" type="font/woff2" href="/fonts/roboto-900.woff2" crossorigin>.
- Found: two blocking stylesheets,
- Passed: 8.3 (lab CLS 0), 8.4 (root document 10 ms in lab). 8.5 N/A (LCP is H1 text). 8.2 INP NOT VERIFIED: it is a field-only metric and CrUX has no data. The lab proxy, TBT 0 ms, suggests low risk.
9. Images, Links & Accessibility — 3.8/5
- [MEDIUM] 9.4 Anchor text — WARN
- Found:
Schedule Your Scan(×2) →/pricing. The anchor promises scheduling and delivers a price list. - Fix: relabel as "See full pricing" or link to
/request-report?pageUrl=.
- Found:
- [MEDIUM] 9.5 Link status — WARN
- Found:
/request-report(the primary CTA, linked 3 times) returns307→https://brutallyhonest.rbamarketing.com/request-report?pageUrl=. None of the other sampled links returned 4xx or 5xx.
- Found:
- [LOW] 9.7 Basic accessibility — WARN
- Found, duplicate IDs: both lead forms use
<input id="page-url" …>and<input id="company_website_hp" …>with<label for="page-url" class="sr-only">Page URL to grade</label>. Because the IDs repeat, both labels bind to the first input. In the rendered DOM the secondpageUrlinput haslabels: [], so a screen reader or browser agent sees an unnamed URL field. - Found, contrast (computed in the rendered DOM): the red accent
oklch(0.53 0.24 27)fails WCAG AA 4.5:1 on small text.Free · one page · no sales call(14 px) is 3.53:1, and the weighting-table point values20,15,10(16 px) are 3.53:1. The grey captionsPage audit,Sample — critical issues only shown,What Google seesandWhat ChatGPT sees(12 px,oklab(0.34 … / 0.6)) are 3.35–3.54:1.If the page…andThe grade cannot exceed(12 px, 70% opacity) are 4.38:1. - Fix: give each form instance its own IDs (
page-url-hero/page-url-footer,hp-hero/hp-footer) with matchingfor=values. Darken the red used on text to aboutoklch(0.45 0.2 27)(or keep the current red for fills only). Raise the caption opacity from/0.6and/0.7to at least/0.85. - Passed within 9.7: the skip link is the first Tab stop (
<a href="#main" class="sr-only focus:not-sr-only …">); there are 0 unnamed buttons; the honeypot sits off-screen atleft: -9878pxwithtabindex="-1".
- Found, duplicate IDs: both lead forms use
- Passed: 9.1 (logo
alt="RBA Marketing and Media"), 9.2 (width="220" height="60" loading="lazy"), 9.3, 9.6.
Heading Outline
H1: Your website probably deserves a D. We'll tell you exactly why.
H2: Google waits for your page to load. ChatGPT doesn't.
H2: 84 checks. Nine areas. Weighted on purpose.
H2: Some mistakes are an automatic fail.
H2: Roughly half of the auditor's instructions are restrictions.
H3: It cannot make things up.
H3: It cannot promise you traffic.
H3: It cannot fudge the numbers.
H3: It won't sell you popular nonsense.
H3: It won't touch your customers or your data.
H2: What lands in your inbox
H2: What a page audit can't see on its own
H3: Revenue lands on the wrong page.
H3: Some sales are invisible.
H3: Some traffic isn't customers.
H2: What it costs
H3: One Page
H3: Brutal Honest Website Report
H3: The Full Site Audit
H2: Questions, answered bluntly
H2: One page. One grade. No sales call.
(Verified: the rendered-DOM outline from Playwright is identical to the raw-HTML outline, 20 headings, same order and levels.)
Raw HTML vs. Rendered Comparison
- Main content missing from raw HTML: 0.0% (measured: 576 unique main-content words raw, 576 rendered). PASS, no cap.
- Raw response: 58,613 bytes. Rendered DOM: 56,904 bytes. The difference is serialization (React self-closing
/>vs. browser output), not content. - Elements that exist only after JavaScript: none. Title, canonical, meta description, meta robots (none in either), 1 JSON-LD block (byte-identical
@graph), 7 OG/Twitter tags, H1 count (1), all 20 headings and all 25 uniquehrefvalues match exactly. - JavaScript on the page (
index-CdoXzAC2.js,routes-CN7iDiX3.js,useRouter-Dpb7RwMI.js,lead-form-68HPcB_W.js) only hydrates the forms and navigation. Every crawler that doesn't run JavaScript sees the full page. - Main-content word counts: 1,865 words in raw
<main>, including the 12 collapsed<details>FAQ answers. 1,362 words are visible in the rendered page with the FAQ closed.
AI Crawler Access Matrix
| Bot | Purpose | robots.txt | HTTP response (raw) | Rendered DOM | Sees main content? |
|---|---|---|---|---|---|
| Googlebot | Google Search | Allow: / | 200, 58,613 B | 56,904 B, 0.0% missing | Yes |
| Bingbot | Bing / Copilot / ChatGPT search index | Allow: / | 200, 58,613 B | 56,904 B, 0.0% missing | Yes |
| GPTBot | OpenAI training | Allow: / | 200, 58,613 B | 56,904 B, 0.0% missing | Yes |
| OAI-SearchBot | ChatGPT search | Allow: / | 200, 58,613 B | 56,904 B, 0.0% missing | Yes |
| ChatGPT-User | ChatGPT live fetch | Allow: / | 200 | not rendered (no script preset) | Yes |
| ClaudeBot | Anthropic training | Allow: / | 200, 58,613 B | 56,904 B, 0.0% missing | Yes |
| Claude-SearchBot | Claude search | Allow: / | 200, 58,613 B | 56,904 B, 0.0% missing | Yes |
| PerplexityBot | Perplexity search | Allow: / | 200, 58,613 B | 56,904 B, 0.0% missing | Yes |
| Google-Extended | Gemini training control token | Allow: / | n/a (robots.txt token only) | n/a | n/a |
Every user agent got a 200, the same byte count and the same canonical, with no redirects or challenge pages. The site is behind Cloudflare (server: cloudflare). How Cloudflare treats requests from real crawler IP ranges is NOT VERIFIED: these were spoofed user-agent strings from a non-crawler IP.
Social Share Preview
+--------------------------------------------------------------+
| [image: 1672x940 PNG, 2.5 MB, 200 OK — "Brutally Honest |
| Website Report", flaming shattered monitor] |
+--------------------------------------------------------------+
| BRUTALLYHONEST.RBAMARKETING.COM |
| Brutally Honest Website Reviews — Free SEO & AI-Search Au... |
| Free brutally honest website audit: 84 checks scored out of |
| 100, graded A+ to F-. Built to be harsh, not flattering... |
+--------------------------------------------------------------+
og:url resolves, so the card should render. The image is oversized, not 1.91:1, and names a different product.
Rewrites
Title
Free SEO & AI Search Audit, Graded A+ to F- | Brutally Honest(61 chars)Brutally Honest SEO Audit: 84 Checks, Graded A+ to F-(53 chars)
Meta description
Get a free, brutally honest SEO and AI-search audit of one page: 84 checks, a grade from A+ to F-, and evidence quoted for every mark. No card, no sales call.(157 chars)See what is costing your page traffic: 84 SEO and AI-search checks, scored out of 100, with fixes ranked by impact. One page free, no sales call.(145 chars)
H1
Your website probably deserves a D. A free, brutally honest SEO and AI-search audit shows you why.
Opening paragraph (56 words)
Brutally Honest Website Reviews is a free SEO and AI-search audit of one web page. We run 84 checks, score the page out of 100 and grade it A+ to F-, quoting the exact title, heading or tag behind every mark we take off. You get the grade, evidence and ranked fixes within 72 hours.
H2 outline
- What does the SEO and AI-search audit check? (9-area weighting table)
- Why can't ChatGPT, Claude and Perplexity see some pages? (link to /ai-search; cite the source)
- What we found auditing N real pages (new: original data, the most important addition)
- Which mistakes automatically fail a page? (hard-caps table)
- What the auditor will never do (name the subject in each H3)
- What's in the report? (plus a real, redacted screenshot)
- How is this different from free instant SEO checkers? (new)
- Who grades your page? (new: named person and credentials)
- What a page audit can't see on its own
- How much does a full website audit cost? (give a starting price, not only "Contact for Quote")
- Questions, answered bluntly
Competitor Gap (if competitors provided)
No competitor URLs were provided, so no competitor pages were fetched. The instant free-SEO-checker format dominates the head term. This page's winnable edge is a human-checked, evidence-quoting report plus the raw-vs-rendered AI-crawler test. It needs real data and a named expert to prove that edge.
Measurement Plan
- Google Search Console: verify
brutallyhonest.rbamarketing.comand submit the sitemap. Run URL Inspection on/to confirm "Google-selected canonical" equalshttps://brutallyhonest.rbamarketing.com/. Then baseline clicks, impressions, CTR and position in the Performance and Generative AI performance reports. - Bing Webmaster Tools: add the site, submit the sitemap, push all 9 URLs via IndexNow, and track the AI Performance report for Copilot citations and grounding queries.
- GA4: segment referrals from chatgpt.com, perplexity.ai, claude.ai, gemini.google.com and copilot.microsoft.com. Track
/request-reportsubmissions as the conversion. - Manually test "free SEO and AI search audit", "honest website review", "why can't ChatGPT see my website", "website audit graded A to F", "AI search visibility audit small business" and "brutally honest website review" in Google AI Mode, ChatGPT, Perplexity and Copilot. Record whether the site or brand is cited.
- Re-audit in 30 and 90 days.
Audit Limitations
- Rendered checks: rendered DOM, the raw-vs-rendered diff, the rendered crawler-UA comparison, mobile layout (8.7) and basic accessibility (9.7) were all measured with Playwright/Chromium (Pixel 5 profile and a 1366×900 desktop viewport).
- Performance: lab only. CrUX has no field data for this URL. INP (8.2) is NOT VERIFIED.
- Colour contrast was computed from computed styles in the rendered DOM, so text over background images or gradients was skipped. Treat it as a floor on the failures, not a full WCAG audit.
- Indexing status: NOT VERIFIED. No Search Console access was available.
- Bot checks used spoofed user-agent strings from a non-crawler IP. Cloudflare's treatment of verified crawler IPs is NOT VERIFIED.
- No competitor URLs, Search Console data or analytics data were supplied, so impact ranges are directional.
- Off-page factors (backlinks, brand mentions, subdomain authority) and sitewide issues were not fully assessed from a single page. The other 8 pages' canonicals were not checked here.
/llms.txtreturns 404. Not scored, and not recommended for Google.

