Skip to main content

Every score here is contestable. This is what it was judged against.

ClearAudit grades a page on eight dimensions, each with five observable bands. The model reads the page and scores against those bands; it never computes the overall score and never rates its own confidence. Confidence is derived from the evidence we actually collected, and the final number is produced in code.

Engine stampprompt@v3.0+market@v1.0+rubric@rubric-v3.0+score@score-v3.0+rules@v1.0+contract@audit-contract-v3.0

The eight dimensions.

Band descriptors name an element, a number or a state — never “good” or “strong” — so a second reviewer can check a score and disagree with it on the evidence.

First impression

first_impression

What a visitor can understand about the offer from the mobile above-the-fold view alone, without scrolling or interacting.

  1. 02Nothing above the fold identifies the business or what it sells — logo and navigation only, an unskippable splash/age gate, or a hero that fails to render.
  2. 34Above the fold is a bare hero image or carousel with no statement of what is sold, or two or more overlays (cookie bar + popup + chat widget) cover the content on load.
  3. 56The visitor must scroll once, or read a secondary element, to work out what is sold; the hero is decorative (stock photo, abstract slogan) rather than explanatory.
  4. 78The offer and the next action are both identifiable without scrolling; at most one element competes with them (cookie bar, promo strip, chat bubble) and it closes in one tap.
  5. 910Above the fold names the product, says who it is for, and shows one next action; at most one primary and one secondary CTA; no overlay obscures the hero; headline and body text are legible at default zoom.
Requires
SCREENSHOT — mobile viewport (412px)
If absent
Without a mobile render the above-the-fold view is unknown. Score at low confidence inside the neutral band, state that the viewport was not captured, and do not claim an element is or is not visible.

Headline clarity×2

headline_clarity

Whether the largest text on the page states what is sold and to whom, in the visitor's language rather than the company's.

  1. 02No H1, or the H1 is the company name alone, or it is an image with no text alternative, or it describes something the page does not sell.
  2. 34The H1 is a brand slogan or feature jargon that cannot be decoded without reading body copy, or several H1s compete on the same page.
  3. 56The H1 is understandable but generic — it would fit a competitor unchanged ("Quality you can trust", "Powering growth").
  4. 78The H1 states the product or outcome and is specific to this business (a competitor could not paste it verbatim); at most one abstract term is used.
  5. 910The H1 names a concrete outcome and the audience in under 12 words with no unexplained jargon, and the sub-headline adds mechanism or proof rather than restating it.
Requires
DOM SIGNALS (buttons, CTAs, forms, headings, images) · PAGE CONTENT (extracted text)
If absent
Without the extracted heading structure the "largest text" cannot be identified — a paragraph read from flattened text is not an H1. Score at low confidence in the neutral band and say the heading structure was unavailable. Never claim "no H1" from missing evidence.

CTA effectiveness

cta_effectiveness

Whether a visitor who is ready to act finds one obvious action, understands what it will do, and can reach it without hunting.

  1. 02No call to action anywhere on the page, or every CTA is disabled, broken, or leads off-site to an unrelated destination.
  2. 34The only CTA sits below the fold, is buried in navigation, is rendered as plain text, or is a phone number/email with no tap-to-act behaviour.
  3. 56A CTA appears above the fold but its label is generic ("Submit", "Learn more", "Click here"), or three or more equally weighted CTAs compete for the same click.
  4. 78A single primary CTA is visible without scrolling on mobile, its label states the outcome, and no more than two competing CTAs appear above the fold.
  5. 910Exactly one primary CTA, repeated with the same label and styling at each decision point, its label naming the outcome ("Get my free audit", not "Submit"), visible above the fold on mobile with a tap target of at least 44px.
Requires
DOM SIGNALS (buttons, CTAs, forms, headings, images) · SCREENSHOT — mobile viewport (412px)
If absent
DOM signals are the source of truth for which buttons exist; the mobile render is the source of truth for whether they are above the fold. With either missing, score at low confidence in the neutral band and state which half is unknown. Never report "no CTA found" when the DOM was not read.

Trust signals

trust_signals

Whether a first-time visitor is given verifiable reasons to believe the business is real, competent, and safe to transact with.

  1. 02No testimonials, reviews, policies, company identity or contact route — or claims that are demonstrably fake (duplicate stock-photo faces, dead award links).
  2. 34One weak signal only: a generic "as seen in" strip, a security badge image with no issuer link, or a contact form as the sole route to a human.
  3. 56Trust claims exist but are unattributable — anonymous testimonials ("— J.D., happy customer"), unlinked logo walls, round unsourced numbers ("10,000+ customers").
  4. 78At least two independent and attributable trust categories — e.g. reviews carrying reviewer identity AND a published guarantee/refund/privacy position — plus working contact details.
  5. 910Named customers with attributable detail (full name plus company or city, photo or verified review source), a named third-party proof (press, certification, audited figure), a reachable human channel (address, phone, registered entity), and a stated refund or guarantee position.
Requires
DOM SIGNALS (buttons, CTAs, forms, headings, images) · PAGE CONTENT (extracted text)
If absent
Trust evidence is textual and structural. Without the page text and DOM signals, absence cannot be distinguished from non-extraction. Score at low confidence in the neutral band; do not assert missing testimonials or missing policies.

Mobile readiness

mobile_readiness

Whether the page is usable on a 412px phone without zooming, horizontal scrolling, or mis-tapping.

  1. 02Unusable on a phone: layout does not render, a desktop-only table or menu is required, an interstitial cannot be dismissed, or zoom is disabled on illegible text.
  2. 34Horizontal scrolling is required, text needs pinch-zoom to read, elements overlap, or a fixed-width desktop layout has simply been scaled down.
  3. 56Readable but cramped — body text between 12px and 16px, tap targets between 30px and 44px, or a sticky bar/chat widget covering part of the primary CTA.
  4. 78Layout reflows cleanly with no horizontal scroll; at most one interactive target is undersized or one fixed element crowds the viewport.
  5. 910No horizontal overflow, body text at least 16px, every interactive target at least 44px with at least 8px spacing, sticky elements under a quarter of the viewport, and form fields using the correct input types.
Requires
SCREENSHOT — mobile viewport (412px)
If absent
Mobile readiness is a rendering property. With no mobile render, score at low confidence in the neutral band and state that the 412px viewport was not captured. A responsive meta tag in the DOM is not evidence that the layout works.

Page speed perception

page_speed_perception

How quickly the page becomes usable on a mid-tier mobile device on a typical connection, measured rather than felt.

  1. 02Lighthouse mobile performance below 30, LCP over 6s, or the main content never renders inside the measurement window.
  2. 34Performance 30–49, LCP 4.0–6.0s, or INP above 500ms — the wait is long enough that visitors abandon before first paint of content.
  3. 56Performance 50–69, LCP 3.0–4.0s, or CLS 0.10–0.25 — a visible wait or a visible layout shift during load.
  4. 78Performance 70–89 with LCP at or under 3.0s and no single Core Web Vital in a failing band.
  5. 910Performance 90 or above with LCP at or under 2.5s, CLS at or under 0.1, and INP at or under 200ms.
Requires
LIGHTHOUSE PERF (real mobile measurements)
If absent
Speed is the one dimension with a real instrument. If Lighthouse did not return, DO NOT substitute an impression of heaviness from the screenshot: score at low confidence in the neutral band and state that no measurement was collected.

SEO basics

seo_basics

Whether the page gives search engines and answer engines the minimum structured facts needed to index it and quote it correctly.

  1. 02No title, no headings, no meta description and no canonical — or the page blocks indexing (noindex/robots) while serving as a commercial landing page.
  2. 34Title or H1 missing or duplicated, no meta description, no structured data, and alt text on under a quarter of content images.
  3. 56Title present but templated or generic ("Home | Brand"), meta description missing or auto-truncated, no JSON-LD, alt coverage between 25% and 60%.
  4. 78Title, meta description, a single H1 and a canonical URL are all present and specific to the page; some valid structured data; alt coverage at or above 60%.
  5. 910Unique descriptive title (≤60 chars) and meta description (≤160 chars), exactly one H1 over a sensible H2 outline, valid JSON-LD matching the page's actual type, canonical URL, and meaningful alt text on at least 90% of content images.
Requires
DOM SIGNALS → meta/schema subset (title, meta description, JSON-LD)
If absent
Title, meta description, canonical and JSON-LD are invisible in rendered text and in screenshots. Without the meta/schema extraction, score at low confidence in the neutral band and state that head metadata was not read. Never report "no meta description" from an unread head.

Conversion flow×2

conversion_flow

Whether the path from arrival to the completed action is short, unblocked, and free of steps that give the visitor a reason to stop.

  1. 02The stated action cannot be completed — broken form, non-functional cart or booking, a CTA pointing at a 404, or no path from this page to any conversion at all.
  2. 34Hard blocks on the path: mandatory account creation before any value, more than 8 form fields, or a checkout/enquiry demanding information the page never explains.
  3. 56The path works but leaks: 5–8 form fields, at least one field the offer does not justify (company size for a PDF, phone for a newsletter), or the price only becomes visible after a form.
  4. 78The primary action completes in 3 steps or fewer, every field asked for is justified by the offer, and the main objection (price, timing, commitment) is answered before the CTA.
  5. 910The primary action completes in 2 steps or fewer with 4 or fewer fields, price/terms/delivery are stated before the commitment point, errors are inline and recoverable, and no account or payment detail is demanded before value is shown.
Requires
DOM SIGNALS (buttons, CTAs, forms, headings, images) · PAGE CONTENT (extracted text)
If absent
Form counts, field counts and destinations come from the DOM. Without them the funnel is guesswork: score at low confidence in the neutral band and state that form structure was not read. Never claim "no form on the page" when forms_count was never collected.

What we did not observe, we may not certify.

Seven signals are collected per audit. Confidence is derived from which of a dimension’s required signals actually arrived — the model gets no vote. A model that can assert its own confidence will assert high for a guess.

  • page_textPAGE CONTENT (extracted text)
  • dom_signalsDOM SIGNALS (buttons, CTAs, forms, headings, images)
  • meta_schemaDOM SIGNALS → meta/schema subset (title, meta description, JSON-LD)
  • screenshot_mobileSCREENSHOT — mobile viewport (412px)
  • screenshot_desktopSCREENSHOT — desktop viewport (1280px)
  • lighthouseLIGHTHOUSE PERF (real mobile measurements)
  • multi_pageADDITIONAL PAGES (deep audit)
ConfidenceDerived whenScore may fall inCounts for
Highevery required signal present0 – 101× weight
Mediumsome but not all present3 – 80.75× weight
Lownone present — inferred4 – 70.4× weight

The clamp cuts both ways on purpose. An engine that only capped the top would still invent failures — “no testimonials found” when the page structure was never read is a false accusation about a real business. Unobserved dimensions keep participating at reduced weight rather than being dropped, because dropping them would silently change what the number means between two audits of the same site. The shortfall surfaces as coverage instead.

Weights are data, not opinion.

Base weights sum to 10. A vertical replaces the whole curve rather than nudging one value, so you can read a single column and know the entire weighting.

DimensionBaseEcommerceSaaSReal estateAgencylocal_businessPortfolio
First impression11111.512
Headline clarity21.52.51.521.51.5
CTA effectiveness11.51.51.511.51
Trust signals12121.51.51
Mobile readiness11.511.5121.5
Page speed perception11.511111
SEO basics111111.51
Conversion flow22221.51.51

Market modifiers then multiply on top. They make a different claim from a vertical profile — not “this is a different product” but “in this market this dimension costs you more conversions”.

MarketModifier
INMobile readiness ×1.25 · Page speed perception ×1.25
IDMobile readiness ×1.25 · Page speed perception ×1.25
NGMobile readiness ×1.25 · Page speed perception ×1.3
BRMobile readiness ×1.2 · Page speed perception ×1.2
ZAMobile readiness ×1.2 · Page speed perception ×1.25

Code owns the number.

The model returns per-dimension scores and its evidence. It is forbidden from emitting overall_score; if it does, the value is discarded.

effectiveWeight_i = weight_i × confidenceFactor_i
score_i           = clamp(modelScore_i, confidenceRange_i)

overall_score     = Σ(score_i × effectiveWeight_i) / Σ(effectiveWeight_i)
coverage          = Σ(effectiveWeight_i) / Σ(weight_i)

Audit-level confidence falls out of coverage: ≥0.85 high, ≥0.6 medium, otherwise low. Every dimension records what the model said, what shipped, whether it was clamped, and which evidence was missing — so a score is explainable line by line.

Graded against the market it actually sells into.

Detected from the audited site’s own signals — ccTLD, declared currency, hreflang, phone and postal formats, payment brands, regulatory identifiers — and never from the IP of whoever ran the audit.

MarketCurrencyChecksRegulatory
Global (baseline)USD102
IndiaINR195
United StatesUSD154
United KingdomGBP145
European Union (eurozone baseline)EUR156
United Arab EmiratesAED165
SingaporeSGD154
AustraliaAUD154
Global (baseline)USD102
BrazilBRL154
Global (baseline)USD102
IndonesiaIDR174
European Union (eurozone baseline) — serving DEEUR156
European Union (eurozone baseline) — serving FREUR156
Global (baseline)USD102
Global (baseline)USD102

Overrides run in both directions. The UK tightens the global company-identity check, because the Companies Act 2006 trading-disclosure regime makes a company number mandatory. The US relaxes it, because no federal statute requires publishing one. Auditing a US site as though it were breaking a law it is not subject to is the same class of error as asking a Brazilian site for a RERA number.

Facts with a shelf life.

Core Web Vitals thresholds, AI-crawler user agents, consent regimes, accessibility deadlines — all held as dated data, not as prose in a prompt.

The current bundle is 54 dated, sourced rules, generated 2026-09-12, each carrying a source URL and a review date. This is why an audit recommends optimising INP rather than FID — and why correcting a fact like that is a data edit and a version bump, not a prompt rewrite.

Does the score predict anything?

The test we hold ourselves to: audits where the owner marked a recommended fix as shipped, re-audited automatically after 30 days, same URL and same rubric version — measured against sites that were re-audited and shipped nothing.

Not enough data to publish yet — 0 completed 30-day pairs against a floor of 30.

We publish this at the same n ≥ 30 floor the benchmark index uses, and not before. A median over a handful of sites is an anecdote with a decimal point, and quoting one here would undermine everything above it.

Think a score is wrong?

A rubric you cannot argue with is a black box with extra steps. Quote the band you think applies and the element on your page that meets it. Corrections that hold change the rubric — and the rubric version changes with them.