Methodology
How the AI Visibility Score is calculated
Every point comes from a documented check. No language model is ever asked to rate a website — models only classify content, and the arithmetic is ours. Two scans of an unchanged site return the same number.
Current scoring version: 1.0.0. Historical scans keep the version they were scored with, so a change to these rules never silently rewrites your history.
Categories and weights
Brand Clarity
10%Whether a reader — human or machine — can tell what you do, who you serve and why you are different, without inference.
Entity Strength
20%How well your business is defined as a named entity: consistent name, category, location, people and machine-readable identity links.
AI Readability
15%How easily an AI system can extract direct, quotable answers from your pages.
Authority
15%Signals that you are a credible source: named authors, case studies, evidence, depth and third-party corroboration.
Content Coverage
15%Whether the pages a buyer (and an AI) expects to find actually exist on your site.
Technical Readiness
10%The crawl and parse fundamentals: reachability, canonicals, metadata, sitemaps, structured markup.
Comparison Presence
5%Whether comparison and alternatives content exists for the queries where AI systems recommend a shortlist.
Citation Strength
10%How often, and how credibly, other sites reference you — the material AI systems cite from.
Competitor Position
0%Your relative standing against the competitor set you selected.
Competitor Position carries a weight of zero on purpose. It is relative to the competitor set you chose, so including it would make scans incomparable over time. It is shown alongside the others, not folded into them.
Every check we run
50 checks across 9 categories. Checks marked as a penalty never add points — they only subtract when the problem is present, so a clean site is not rewarded twice for the same absence.
Brand Clarity
| Check | Points | How we measure it |
|---|---|---|
| Clear company descriptionbrand.description_clear | +12 | Language-model classification of homepage and about content. |
| Target customer is statedbrand.audience_stated | +10 | Language-model classification of homepage copy for an explicit audience statement. |
| Differentiation is statedbrand.differentiation | +8 | Language-model classification of homepage, about and product pages. |
| Products or services are enumeratedbrand.offerings_enumerated | +8 | Language-model classification plus counts of product and service page types. |
| Pricing is clearbrand.pricing_clarity | +7 | Language-model classification of the pricing page and any pricing sections found. |
Entity Strength
| Check | Points | How we measure it |
|---|---|---|
| Organization schema presententity.organization_schema | +12 | We parse every <script type="application/ld+json"> block on the crawled pages and look for an @type of Organization, Corporation or LocalBusiness. |
| sameAs identity linksentity.same_as | +8 | We count the entries in the sameAs array of your Organization schema. |
| Business category is stated explicitlyentity.category_stated | +10 | A language model classifies homepage and about-page text for the presence of an explicit category statement. The classification is a boolean; the points are fixed. |
| Operating location is statedentity.location | +7 | Language-model classification of contact, about and footer content. |
| Founders or leadership are namedentity.people_named | +6 | We look for team/author page types and classify about-page content for named individuals. |
| Contact information is publishedentity.contact_reachable | +5 | Page-type classification of the crawled URL set. |
| No conflicting business informationentity.conflicting_info | −10 | A language model compares the business facts extracted from each page and flags contradictions. |
| Brand name used consistentlyentity.name_consistency | +6 | Language-model comparison of the brand name as it appears across crawled pages. |
| Social profiles linkedentity.social_profiles | +4 | Count of distinct social platform domains linked from crawled pages. |
AI Readability
| Check | Points | How we measure it |
|---|---|---|
| Sound heading structurereadability.heading_structure | +10 | For each page we check for exactly one H1, no skipped heading levels, and headings with meaningful text. The category score is the average across pages. |
| Pages have an H1readability.h1_coverage | +6 | Share of crawled pages containing exactly one non-empty H1. |
| Direct answer blocksreadability.answer_blocks | +12 | We count sections whose heading is question-shaped or definitional and whose first 2-3 sentences form a complete, context-free answer. |
| FAQ content existsreadability.faq_content | +10 | We count question/answer pairs across FAQ-classified pages and FAQPage schema blocks. |
| Content depth is adequatereadability.thin_content | −8 | Share of crawled pages with fewer than 150 words of extracted body text. |
| Content readable without JavaScriptreadability.js_dependency | −12 | We fetch the page without executing scripts and compare the extracted text volume against the size of the HTML document. |
| Content carries datesreadability.dates | +4 | Detection of date markup and visible date patterns on content pages. |
Authority
| Check | Points | How we measure it |
|---|---|---|
| Named authors on contentauthority.author_identity | +10 | Detection of author markup, bylines and author-page types across content pages. |
| Person structured dataauthority.person_schema | +5 | Detection of Person @type in JSON-LD. |
| Verifiable data pointsauthority.evidence_density | +8 | We count quantitative statements and cited figures in the extracted text. |
| Sources are citedauthority.outbound_citations | +5 | Count of outbound links to non-social, non-owned domains from content pages. |
| Third-party mentionsauthority.third_party_mentions | +12needs offsite | We query a web search provider for your brand across several query patterns and count the distinct domains that mention you. |
| Review platform presenceauthority.review_presence | +8needs offsite | Search results for your brand on known review platform domains. |
Content Coverage
| Check | Points | How we measure it |
|---|---|---|
| About page existscoverage.about_page | +8 | Page-type classification of the crawled URL set. |
| Dedicated product or service pagescoverage.service_or_product_pages | +10 | Count of pages classified as product or service pages. |
| Pricing page existscoverage.pricing_page | +6 | Page-type classification of the crawled URL set. |
| Case studies or customer evidencecoverage.case_studies | +8 | Count of pages classified as case studies or testimonials. |
| Ongoing content coveragecoverage.blog_depth | +8 | Count of blog-post-classified pages within the crawl budget. Larger sites are limited by plan page budget. |
| Industry terminology coveragecoverage.terminology | +8 | A language model proposes the terminology expected for your detected industry; we measure how much of it appears in your content. This is an estimate, not a measurement. |
Technical Readiness
| Check | Points | How we measure it |
|---|---|---|
| HTTPS enabledtechnical.https | +6 | Protocol of the final URL after redirects. |
| Crawlers are not blockedtechnical.robots_allows | −10 | We fetch and parse robots.txt and check the rules applying to general user agents. |
| XML sitemap publishedtechnical.sitemap | +6 | We check robots.txt for a Sitemap directive and probe the common sitemap locations. |
| Canonical URLs declaredtechnical.canonical | +6 | Share of crawled pages with a rel="canonical" link. |
| Meta descriptions presenttechnical.meta_description | +5 | Share of crawled pages with a non-empty meta description. |
| Titles and descriptions are uniquetechnical.duplicate_metadata | −6 | Share of crawled pages whose title or meta description is not unique. |
| FAQPage structured datatechnical.faq_schema | +6 | Detection of FAQPage @type in JSON-LD across crawled pages. |
| WebSite / Breadcrumb structured datatechnical.website_schema | +5 | Detection of WebSite and BreadcrumbList @types in JSON-LD. |
| OpenGraph metadatatechnical.open_graph | +4 | Share of pages declaring at least og:title and og:description. |
Comparison Presence
| Check | Points | How we measure it |
|---|---|---|
| Comparison pages existcomparison.comparison_pages | +12 | Count of pages classified as comparison pages by URL pattern and content structure. |
| Alternatives pages existcomparison.alternatives_pages | +8 | Count of pages classified as alternatives pages. |
| Included in third-party comparisonscomparison.third_party_comparisons | +10needs offsite | Search-provider results for comparison and roundup query patterns in your category, checked for your brand. |
Citation Strength
| Check | Points | How we measure it |
|---|---|---|
| Mention volumecitation.mention_volume | +10needs offsite | Aggregate result count across brand-related search queries, deduplicated by URL. |
| Editorial mentionscitation.editorial_quality | +10needs offsite | Classification of mention domains into editorial, directory, community and review categories. |
| Directory and listing presencecitation.directory_presence | +6needs offsite | Search results on known directory and marketplace domains. |
| Community discussioncitation.community_presence | +6needs offsite | Search results on known community and forum domains. |
Competitor Position
| Check | Points | How we measure it |
|---|---|---|
| Position against tracked competitorscompetitor.relative_position | +20needs competitors | Each competitor domain is crawled and scored with the identical rule set, then ranked. |
What we do not do
- We do not ask a model for a score. Language models classify content — is a target audience stated, is pricing explicit — and those classifications feed fixed arithmetic.
- We do not claim access to data we do not have. Where a value is estimated or inferred rather than measured, the report says so on that specific value.
- We do not penalise you for what we could not measure. If off-site data is unavailable, those categories are excluded from the overall score and the report lists them, rather than scoring them zero.
- We do not promise placement in any AI system. No tool controls the output of a model it does not operate.
AI Ranker Tool analyzes signals that may affect how brands are discovered, understood and referenced by AI-powered search and recommendation systems. Results do not guarantee inclusion or ranking.