Read the page
Fetch the served HTML and separate the main content into sections and passages.
Behind the audit
SiteClarity looks at how clearly your content answers a reader’s questions, and how easily those answers can be extracted. Here’s what goes into each finding.
Fetch the served HTML and separate the main content into sections and passages.
Apply structure and language rules, then ask the decision model focused questions.
Pair each observation with a next step and evidence verified against the extracted page.
SiteClarity is planned as 10 modules over one shared analysis. 9 are built, and every finding in a report is tagged with the module that produced it.
Can a search engine or AI assistant find, understand and quote the answers on this page? Structured data, heading hierarchy, extractability, self-containment, promotional density, buried answers.
Does each marketing claim have proof beside it? Claims and evidence are both located deterministically and the distance between them is measured. Whether nearby proof is actually about the claim is the one judgement left to the model.
Does the page make its case? Whether it names the problem it solves, says who it is for, says what makes it different, and offers a next step that states what it does.
What the page says it does, who for, the problem it solves and what makes it different — shown as the page’s own sentences. The model selects which sentence states each thing; it never writes one, so a dimension the page does not address is reported as not stated rather than paraphrased into existence.
Which buyer questions the site answers, partly answers, or leaves unanswered.
Whether content exists for each stage from awareness through to decision.
Which audiences the content actually addresses, against those it intends to.
Pages competing for the same topic or intent.
A prioritised roll-up of everything the other modules found.
Planned: product portfolio.
Markup and shape. These run even when the decision model is unavailable.
Finding template
“{heading}” makes readers wade through {words} words before answering.
Why it matters
The answer is there, but it starts {words} words in. Readers scanning the page give up before reaching it, and AI tools quote whatever comes first — which here is preamble, not your answer.
Recommended action
Move the sentence that answers the heading to the top of the section, and put the background after it.
Check: answer_buried_positional
Finding template
This page has no structured data.
Why it matters
Structured data tells search engines and AI what kind of page this is, instead of making them guess. Pages that spell it out are easier to trust and reuse.
Recommended action
Add a JSON-LD block saying what this page is — an article, a product, an FAQ — with a name, a description, and who wrote it.
Check: no_structured_data
Finding template
{count} structured-data block(s) on this page are broken.
Why it matters
A broken block is ignored completely, so the work of adding it is wasted — and it looks like the page has structured data when it does not.
Recommended action
Run the JSON-LD through a validator and fix the error. It is usually a stray comma or a missing quote.
Check: malformed_structured_data
Finding template
This page has {count} question headings but no FAQ markup.
Why it matters
This page is already written as questions and answers. Marking it up properly makes it directly usable by AI tools — without it, they have to guess which answer goes with which question.
Recommended action
Add FAQ structured data linking each question heading to its answer.
Check: missing_faq_markup
Finding template
This page has no H1.
Why it matters
The H1 is the clearest signal of what a page is about. Without one, search engines fall back to the title tag or guess from the text.
Recommended action
Add one H1 that plainly says what the page is about.
Check: no_h1
Finding template
This page has {count} H1 headings.
Why it matters
With more than one H1, it is unclear what the page is mainly about. Search engines have to pick one, and it may not be the one you want.
Recommended action
Keep one H1 — currently “{first}” — and change the others to H2.
Check: multiple_h1
Finding template
Heading levels jump around in {count} place(s).
Why it matters
Heading levels show how sections sit inside each other. Skipping one makes the page outline confusing to anything reading the structure rather than the design.
Recommended action
Go one level at a time — {example}.
Check: skipped_heading_levels
Finding template
The page is {count} paragraphs with no lists or tables.
Why it matters
AI tools pull lists and tables much more easily than paragraphs, because it is obvious where the answer starts and stops. In solid prose, they have to guess.
Recommended action
Turn the steps, comparisons and option lists into bullet points or a table. Same words, different shape.
Check: no_structured_formats
Finding template
{count} paragraph(s) are too long to quote — the longest is {longest} words.
Why it matters
A very long paragraph cannot be quoted without cutting it off, so tools usually pick something shorter from another site.
Recommended action
Split these into shorter paragraphs, one point each.
Check: passages_too_long
Finding template
This page tells search engines not to list it ({value}).
Why it matters
While this tag is there, the page will not show up in search at all. If that is on purpose, ignore this. If not, fix this before anything else.
Recommended action
Remove “noindex” from the robots meta tag if this page should be findable.
Check: meta_noindex
Finding template
This page tells AI tools not to use it ({value}).
Why it matters
This tells AI tools not to use your content. That may be what you want — but if not, nothing else on this page will help.
Recommended action
Remove the “noai” tag if you want AI tools to use this page.
Check: meta_noai
Finding template
This page declares no canonical URL.
Why it matters
Without one, the same page reachable at several web addresses competes with itself and the credit gets split.
Recommended action
Add a canonical link pointing at the address you want people to land on.
Check: no_canonical
Finding template
The canonical link points at a different website.
Why it matters
This tells search engines the real version of this page lives on another site, handing them the credit. It is almost always a mistake.
Recommended action
Point the canonical at this page, unless the content really does belong to {canonical}.
Check: canonical_offsite
Finding template
The canonical link is not a valid address ({canonical}).
Why it matters
A broken canonical is ignored, so the page behaves as if it had none at all.
Recommended action
Fix it to a full, valid web address.
Check: canonical_invalid
Finding template
The page title is missing or very short.
Why it matters
The title is what shows in search results, in citations and when someone shares the link. A weak one costs you everywhere it appears.
Recommended action
Write a title that says specifically what the page is about, in about 50 to 60 characters.
Check: weak_title
Finding template
This page has no meta description.
Why it matters
Without one, search engines grab whatever text comes first — often a menu or an intro line rather than a summary.
Recommended action
Add one sentence describing what this page answers.
Check: no_meta_description
Finding template
This page builds its content with JavaScript.
Why it matters
The page sends almost no text to start with. Many AI tools do not run JavaScript, so they may see a nearly empty page where a visitor sees a full one.
Recommended action
Make the main content part of the page that is sent first, rather than loading it afterwards.
Check: js_dependent
Measured from the text itself — pronoun-heavy openings, vague quantifiers, sentence length. English only.
Finding template
{count} paragraph(s) start with “it”, “this” or “they” instead of naming the subject.
Why it matters
These words only make sense if you read what came before. AI tools quote one paragraph at a time, so the reader sees “it” with no idea what “it” is.
Recommended action
Start each paragraph with the actual name, so it still makes sense on its own.
Check: high_anaphora
Finding template
Some paragraphs use vague words — {words} — with no actual numbers.
Why it matters
Words like “many” and “several” sound specific but say nothing. A reader cannot judge them and an AI tool cannot quote them.
Recommended action
Put the real number in, or cut the word. “Several integrations” becomes “14 integrations”.
Check: vague_quantifiers
Finding template
{count} paragraph(s) have sentences averaging {mean} words.
Why it matters
Long sentences get cut off when quoted, so tools tend to pick shorter ones — often from someone else’s site.
Recommended action
Break the longest sentences up so each one makes a single point.
Check: long_sentences
A passage counts as a claim only when it carries both a superlative and one of six claim families. Whether nearby proof is actually about the claim is the one judgement left to the model.
Finding template
A claim about {what} here has nothing to back it up.
Why it matters
The page asserts {what} but gives no number, source or example anywhere near it. A reader cannot check it, and an AI tool has no fact to quote — so the claim adds length without adding trust.
Recommended action
Add one concrete detail beside this claim: a figure, a named customer, a link to a case study, or the conditions it was measured under.
Check: claim_without_evidence
Finding template
The detail next to a claim about {what} does not actually support it.
Why it matters
There is a real fact beside this claim, which makes the page look evidenced when it is not. A reader who checks will find the number answers a different question — and that costs more trust than having no number at all.
Recommended action
Replace it with something that speaks to {what} directly, or move this claim next to proof that does.
Check: evidence_irrelevant
Finding template
The proof for a claim about {what} sits {distance} paragraphs away.
Why it matters
The evidence exists but not beside the claim. AI tools quote a passage at a time, so the claim gets lifted without its support and reads as an empty boast.
Recommended action
Move {evidence} into the same paragraph as the claim, or repeat it there.
Check: evidence_too_far
Checks that need several pages together. Every page is judged on its own first; these count those judgements rather than re-reading anything, so they cost one short call over an inventory of page summaries.
Finding template
Only {named} of {pages} pages say who they are for.
Why it matters
A visitor landing on any single page has to work out whether it is meant for them. Most will not bother, and an AI assistant has nothing to match against someone describing their own situation.
Recommended action
Name the reader on each page that sells something — the role, the size of business, the situation. It need not be a whole section; one sentence near the top is enough.
Check: audience_rarely_named
Finding template
{count} of {pages} pages offer no next step.
Why it matters
Someone convinced by one of these pages has nowhere to go from it. Every extra click they have to invent is somewhere to lose them.
Recommended action
Add one clear action to each — the same action is fine, as long as it says what happens.
Check: site_has_no_next_step
Finding template
{sell} of {pages} pages are selling; {explain} explain anything.
Why it matters
People search for their problem long before they search for a product. A site that only sells is invisible to everyone who has not yet decided they need one, and those are the searches AI assistants answer most.
Recommended action
Write for the earlier question. One page explaining the problem you solve reaches people no product page will.
Check: site_sells_without_explaining
Finding template
The audience shifts between pages without any page saying so.
Why it matters
Each page reads as if written for someone different, so a visitor cannot tell which parts apply to them. Serving several audiences is fine — leaving them to work out which one they are is not.
Recommended action
Either say on each page who it is for, or give each audience its own entry point that names them.
Check: audience_drifts
Finding template
No audience is identifiable anywhere across these pages.
Why it matters
Nothing on the site tells a reader whether it is for them, so every visitor has to guess — and an AI assistant has nothing to match a person’s description of themselves against.
Recommended action
Decide who the site is for and say it plainly on the pages that matter most.
Check: audience_none_evident
Which moments in a buying decision the site writes for, and which it leaves empty. Each page is placed at a stage individually; the gaps are then arithmetic.
Finding template
No page here is written for {audience}.
Why it matters
{cost}
Recommended action
Write one page for that moment. It does not need to be long — it needs to exist, and to use the words someone at that stage would actually type.
Check: journey_stage_missing
Finding template
Most of this site sits at one stage: {stage}.
Why it matters
A visitor arrives at whatever stage they are already at. When the content clusters in one place, everyone arriving earlier or later finds nothing written for them and leaves.
Recommended action
Spread coverage outward from where it is thickest — one page earlier in the journey and one later will reach people the rest of the site currently misses.
Check: journey_concentrated
Pages competing for the same ground. Reported only when heading vocabulary overlaps heavily AND both pages sit at the same buying stage AND serve the same purpose — any one signal alone is noise.
Finding template
Two pages cover the same ground: {a} and {b}.
Why it matters
Both are written for the same moment, about {shared}. Search engines have to pick one and may pick neither, and a reader who lands on the weaker one never learns the other exists.
Recommended action
Decide which page owns this topic. Make the other point at it, narrow it to a genuinely different angle, or merge the two.
Check: pages_compete
Optional, and only runs when you tell us what your content is meant to communicate. The model is asked which of your own sentences says it; never whether the statement is true, because nothing here can know that. On a site scan the question becomes which page says it, and the finding fires only when none does.
Finding template
You said this page is about “{focus}” — but no sentence here says so.
Why it matters
A reader or an AI assistant only knows what the page says. If this is central to what you do and the page never states it, nobody looking for it will find you here — and you would have no way of noticing, because you already know it.
Recommended action
Add a sentence that says it plainly, near the top. Use the words someone searching for it would use, not the internal name for it.
Check: focus_not_communicated
Finding template
You said this site is about “{focus}” — none of the {checked} pages scanned says so.
Why it matters
This is central to what you do and no page states it, so nobody searching for it finds you and no assistant can answer with it. It is the hardest kind of gap to notice yourself, because you already know it is true.
Recommended action
Pick the page where it most belongs and say it plainly near the top, in the words someone searching for it would use.
Check: focus_not_communicated_sitewide
A bank of 15 questions buyers ask, written by people and kept in the repository — nothing here is generated. A question is only put to the model when the page's own words raise it, so a page is never faulted for being about something else.
Finding template
This page raises “{question}” without answering it.
Why it matters
Bringing the subject up and leaving it open is worse than silence: the reader now has the question in mind and no way to resolve it here. An AI assistant asked the same thing will quote whichever site did answer it.
Recommended action
Answer it where you raise it — the figure, the limit, the timeframe. If it genuinely belongs elsewhere, link straight to the answer rather than to a section.
Check: question_raised_unanswered
Finding template
“{question}” comes up on {pages}, and is answered on none.
Why it matters
The subject runs through the site without ever being settled. Someone comparing options has to ask you directly or assume the worst, and an assistant answering for them has nothing here to quote.
Recommended action
Answer it once, properly, on the page where it most belongs, and point the others at it.
Check: question_unanswered_sitewide
Whether the page makes its case: the problem it solves, who it is for, what makes it different, and whether the next step says what it does.
Finding template
{count} link(s) on this page say nothing about where they go — {examples}.
Why it matters
"Click here" and "read more" tell a reader nothing, so fewer people follow them. They also give search engines no idea what the destination is about, which wastes the link.
Recommended action
Rewrite the link text to name the destination: "read the pricing guide" instead of "read more".
Check: vague_cta
Finding template
This page has links but none of them offer an obvious next step.
Why it matters
A reader who is convinced has nowhere to go. Every link here is navigation or reading; none invites them to start, try, book or get in touch.
Recommended action
Add one clear action that names what happens — "Start a free trial", "Book a 20-minute call", "Download the guide".
Check: no_clear_action
Finding template
The page describes what it offers but never says what problem it solves.
Why it matters
A reader arrives with a problem, not a shopping list. Without naming the situation this exists to fix, they have to work out for themselves whether it applies to them — and most will not bother.
Recommended action
Open with the problem in one sentence: what goes wrong today for the person you are writing for.
Check: no_problem_stated
Finding template
The page never says who it is for.
Why it matters
Writing for "teams" or "businesses" means writing for nobody. A reader cannot tell whether they qualify, and search and AI systems cannot match the page to a specific kind of person looking for it.
Recommended action
Name the reader plainly — the role, the size of business, the situation. "For WooCommerce stores with more than 500 products" beats "for growing businesses".
Check: audience_not_named
Finding template
The page says it is good, but not what makes it different.
Why it matters
Every competitor claims to be powerful and easy, so those words carry no information. Without a specific difference — something it does that others do not, or a trade-off it chose — a reader has no basis for picking this.
Recommended action
State one concrete difference, and be willing to name the trade-off that comes with it.
Check: no_differentiation
The decision model evaluates clarity and substance. Its typed answers select findings from these templates; it does not write the report copy.
Finding template
“Section title” does not answer its own heading.
Why it matters
Google and AI tools pull the text sitting right under a heading. If the heading asks one thing and the text below answers something else, they skip it — even if the answer is further down the page.
Recommended action
Answer the heading in the first sentence or two. Add the detail after that.
Check: heading_not_answered · Question: answers_heading · only for headings that promise a question or topic
Finding template
“Section title” only makes sense if you have read the rest of the page.
Why it matters
AI tools quote one section at a time, without the rest of the page. Words like “it”, “this” and “as mentioned above” have nothing to point at once the section is on its own, so it gets skipped.
Recommended action
Say the actual name instead of “it” or “this”. Make sure the section reads fine on its own.
Check: not_self_contained · Question: self_contained
Finding template
The answer in “Section title” is buried too far down.
Why it matters
The answer is there, but it takes digging to find. Pages that put the answer in the first line get quoted instead of yours.
Recommended action
Move the answer to the top. Put background, exceptions and selling points underneath.
Check: answer_buried · Question: extraction_readiness · only for headings that promise a question or topic
Finding template
“Section title” has a heading but no real answer under it.
Why it matters
A heading tells readers and AI what to expect. When nothing useful follows it, visitors leave and AI tools have nothing to quote.
Recommended action
Either write a real answer under this heading, or delete the heading.
Check: answer_absent · Question: extraction_readiness · only for headings that promise a question or topic
Finding template
“Section title” has the answer, but only if you read what comes before it.
Why it matters
On its own it would confuse someone, so AI tools are less likely to use it — even though what it says is correct.
Recommended action
Add one short sentence at the start explaining what this is about.
Check: needs_context · Question: extraction_readiness · only for headings that promise a question or topic
Finding template
“Section title” sounds like an advert instead of giving facts.
Why it matters
Words like “best” and “world-class” are not facts. There is nothing here an AI tool can quote, and nothing a reader can check.
Recommended action
Swap each of these words for the fact behind it — a number, a limit, or a real example.
Check: heavily_promotional · Question: promotional_intensity
Finding template
The page never says what it is actually about.
Why it matters
Saying only “we” or “our platform” leaves search engines and AI tools unable to work out which product or company this is.
Recommended action
Put the product or company name in the first paragraph and in at least one heading.
Check: entity_unclear · Question: entity_clarity
Finding template
This claim is too vague to check.
Why it matters
A claim with no numbers cannot be checked by a reader or quoted by an AI tool. It adds words without adding trust.
Recommended action
Add a number or a source. What was measured, and compared to what?
Check: vague_claim · Question: claim_specificity
A model judgment still needs review. Typed answers can be incorrect. Answers below the configured confidence threshold are not reported, and every evidence quote must match an extracted passage.
Suggestions use predefined actions and words found in the page. SiteClarity identifies what to work on; it leaves the writing to you.
This module describes rather than faults, so it produces no findings. For each dimension the model is shown a shortlist of the page’s own sentences and asked which one states that thing. The answer is a reference to a sentence, so the report shows your words verbatim — nothing is written by a model.
Every dimension can come back “not stated”, and does when the page does not say. That is the answer, not a failure to report. A closed list of business types is the one exception, because that genuinely is a fixed set.
What is asked
What kind of business or offering is this page for?
Why it matters
Everything else on the page is read against this. A reader who cannot tell whether they are looking at software, a service or a shop has to work the rest out from scratch.
If the page does not say it
Say plainly what you are, early. One clause in the opening line is enough.
Dimension: business_type · reported as “Nothing on this page makes the kind of business clear.”
What is asked
Which sentence best says what this product or service does?
Why it matters
This is the sentence a search engine or AI assistant quotes when someone asks what you are. If no sentence says it, they quote something else — usually a claim or a call to action.
If the page does not say it
Write one plain sentence describing what it does, and put it near the top.
Dimension: what_it_does · reported as “No sentence on this page plainly says what it does.”
What is asked
Which sentence best says who this is for?
Why it matters
A reader decides whether to keep reading by finding themselves on the page. Without that sentence they have to guess, and most guess wrong or leave.
If the page does not say it
Name the reader — the role, the size of business, the situation. One sentence.
Dimension: who_its_for · reported as “No sentence on this page says who it is for.”
What is asked
Which sentence describes a difficulty the reader has, rather than a thing the product does?
Why it matters
People search for their problem long before they search for a product. A page that only lists capabilities is invisible to everyone still describing the difficulty.
If the page does not say it
State what goes wrong today for the person you are writing for, before describing the fix.
Dimension: problem_solved · reported as “No sentence on this page names the problem it solves.”
What is asked
Which sentence names something this does that alternatives do not, or a trade-off it makes?
Why it matters
Every competitor claims to be powerful and easy, so those words distinguish nothing. Without a specific difference a reader has no basis for choosing.
If the page does not say it
Name one concrete difference, and be willing to state the trade-off that comes with it.
Dimension: differentiator · reported as “No sentence on this page says what makes it different.”
A list sorted by severity is not a plan: the same problem appears on nine pages with nothing to say it is one job. This groups the findings into pieces of work — at most 6, because a backlog of thirty is not a backlog and every finding is still listed underneath.
No model runs here. Every input has already been judged, quoted and verified, so grouping is arithmetic — which means the plan still appears with the decision model switched off. Items are ordered, never scored: a rank says only do this before that, and that is all the evidence supports.
How it groups
A check that fires across 3 or more pages is a template, a habit or a house style rather than a page problem, so it is reported once with the pages named. On a single-page audit the unit is occurrences instead, at 2 or more: the same fault twice on one page is already the same mistake twice, where twice across unrelated pages could be chance.
Rule: recurring
How it groups
An empty buying stage, a drifting audience, two pages competing for the same ground, a question the site never answers. These are about the site by construction, so they pass through — reworded from what is wrong to what to do.
Rule: site_level
How it groups
Three unanswered pricing questions are not three jobs; they are a missing pricing page. Grouping by the area the question bank already declares turns a checklist into a subject.
Rule: by_area
Each question receives the relevant page, section or passage. Expand a question to inspect its available answers. Rubric answers are used internally, never as a page rating.
Asked once, against a compact page-scope state.
Available answers
Question: entity_clarity
Available answers
Question: purpose_clarity
Asked once per section, against that section alone — feeding in the surrounding page would corrupt the self-containment answer.
Available answers
Question: answers_heading
Available answers
Question: self_contained
Available answers
Question: extraction_readiness
Available answers
Question: improvement_type
Available answers
Question: promotional_intensity
Asked per candidate claim.
Available answers
Question: is_claim
Available answers
Question: claim_specificity
Asked once per claim that has evidence nearby. Proximity is measured; whether the proof is about the claim is not.
Available answers
Question: evidence_supports_claim
Asked once per page, riding in the existing page-scope call.
Available answers
Question: journey_stage
Asked once over an inventory of page summaries — one short line per page, so twenty-five pages cost about a thousand tokens.
Available answers
Question: site_audience_consistency
Asked against the page-scope state. These are properties of the whole argument rather than of one section.
Available answers
Question: states_the_problem
Available answers
Question: names_the_audience
Available answers
Question: states_differentiation
The full bank. At most 6 are asked of any one page — only those its own text raises — and they ride in the existing page-scope call, so the module adds no calls of its own.
Available answers
Question: q_what_is_it
Available answers
Question: q_what_problem
Available answers
Question: q_what_it_costs
Available answers
Question: q_free_tier
Available answers
Question: q_is_it_for_me
Available answers
Question: q_when_not_to_use
Available answers
Question: q_what_can_i_do
Available answers
Question: q_how_to_start
Available answers
Question: q_integrations
Available answers
Question: q_vs_alternatives
Available answers
Question: q_who_uses_it
Available answers
Question: q_who_is_behind_it
Available answers
Question: q_data_safety
Available answers
Question: q_support
Available answers
Question: q_next_step
An audit is a view of the content examined. Every report includes its scope and any analysis limitations.