Methodology
How we measure — in the open
Two numbers drive most decisions in SearchVoro: your AI Share of Voice and your Site Health score. Here is how each metric is measured, what data it uses, and the rules we follow to keep the results honest.
AI Share of Voice
Measuring who AI answer engines cite
AI Share of Voice is the proportion of AI answers, across the prompts you track, that cite you versus your competitors.
The steps
- You define the prompts and competitors that matter for your category.
- On a schedule (and on demand), SearchVoro sends each prompt to the supported AI engines and captures the answer plus the sources it cites.
- We parse the cited URLs and attribute each citation to you, a competitor, or another source.
- Share of Voice is the share of tracked answers that cite your domain; we also surface a ranked leaderboard of the domains AI cites most for your prompts.
Perplexity
Verified citations
Perplexity returns explicit source citations, so we read the exact URLs cited for each tracked prompt.
OpenAI (ChatGPT)
Web-search mode
We query the web-search-enabled model and parse the sources surfaced in the answer for each tracked prompt.
Google Gemini
Web-search mode
We query Gemini with web search and parse the sources surfaced in the answer for each tracked prompt.
What the number does and doesn't mean
AI answers vary with prompt phrasing, model version, region, and time. Share of Voice is a measured sample of real answers on the prompts you chose — a reliable trend line for your visibility, not a guarantee of what every user will see on every query. We report what was observed and when, so the trend is honest and reproducible.
Site Health
How the unified score is calculated
Site Health rolls several evidence-backed dimensions into one number your whole team can rally around.
| Dimension | Weight | How it is scored |
|---|---|---|
| On-page | 18% | A weighted homepage check covering HTTP/HTTPS, indexability, title and description, headings, canonical, language, structured data, image alt coverage, and content depth. |
| Canonical & redirects | 20% | Missing, conflicting, cross-domain, and non-production canonicals plus redirect defects. |
| Metadata | 14% | Missing and duplicate titles or descriptions, plus incomplete template coverage. |
| Internationalization | 6% | Missing or invalid hreflang, reciprocal-link problems, and incomplete locale clusters. |
| Structured data | 12% | 60% schema coverage and 40% validity when schema is present; no schema scores 40. |
| Internal linking | 14% | Broken links, sitemap-backed orphan candidates, and weak internal-link coverage. |
| Measurement | 16% | Presence and quality of analytics tags, including unreachable pages, missing analytics, duplicate GA4, and deprecated Universal Analytics. |
The headline formula
Each measured dimension produces a 0–100 score. Site Health is the weighted average of those scores, rounded to the nearest whole number. If a dimension did not run, it is excluded and the remaining weights are renormalized. Finding-based dimensions start at 100 and subtract the penalties below. Repeated instances scale a finding's penalty by 15% per additional instance, up to 2.5× the base penalty.
| Severity | Base penalty | Headline rule |
|---|---|---|
| Critical | 30 points | Overall score capped at 79 |
| High | 18 points | Overall score capped at 89 |
| Medium | 9 points | No headline cap |
| Low | 3 points | No headline cap |
| Informational | 0 points | No headline cap |
The 15 weighted homepage checks
The On-page dimension uses the checks below. Its score is the sum of passed weights divided by all 22 available weight points, multiplied by 100 and rounded to the nearest whole number.
| Check | Pass rule | Weight |
|---|---|---|
| Final HTTP response | Final response is successful (2xx) | 3 |
| HTTPS | Final URL uses HTTPS | 2 |
| Title | Estimated rendered width is 200–580px (roughly 30–60 characters) | 2 |
| Meta description | Present and 70–160 characters | 2 |
| H1 | At least one H1 is present | 1 |
| Mobile viewport | Viewport meta tag is present | 1 |
| Canonical | Canonical link element is present | 1 |
| Language | The html element has a lang attribute | 1 |
| Character set | A charset meta declaration is present | 1 |
| Structured data | At least one JSON-LD block is present | 1 |
| Image alternatives | No images, or at least 80% have alt attributes | 1 |
| Indexability | No robots, Googlebot, or X-Robots-Tag noindex directive | 2 |
| Content depth | At least 300 visible body words | 2 |
| Open Graph | An og:title or og:image tag is present | 1 |
| Heading hierarchy | Adjacent headings do not skip a level | 1 |
Crawl scope, thresholds, and comparability
- The on-page score evaluates the final homepage response. Technical SEO and internal-link analyzers use a breadth-first sample of up to 15 same-site URLs and two link levels from the homepage.
- Thin homepage content means fewer than 300 body words. Duplicate metadata means two or more sampled pages use the same non-empty title or description.
- Sitemap-backed orphan candidates can include false positives when a linking page falls outside the 15-URL sample, so they are presented with that limitation.
- Where a PageSpeed key is configured, the Lighthouse performance score is blended into the on-page dimension; Core Web Vitals are not yet shown as a separate panel.
- Scores are comparable over time when the crawl scope and available analyzers stay similar. Comparing sites of very different sizes is directional because both use the same bounded sample.
Scoring rules we hold ourselves to
- Every finding links to its evidence — the raw response, the HTML element, the schema node, the link graph, or the metric it came from.
- A dimension we couldn't measure is excluded and the weights renormalized — we never default a missing dimension to 100 and average it in, so the score never looks healthier than the evidence supports.
- The score comes from a real crawl, not a checklist, and re-running after a fix shows the movement directly.
See it on your own site
Run a live audit and an AI Share of Voice snapshot on a domain you choose.