Join our community of websites already using SEOJuice to automate the boring SEO work.
See what our customers say and learn about sustainable SEO that drives long-term growth.
Explore the blog →<p>A practical Core Web Vitals KPI for measuring how much of a site actually meets Google’s real-user performance thresholds.</p>
<p>Vitals Compliance Score is the percentage of eligible URLs or URL groups that pass Google’s Core Web Vitals thresholds using field data, usually as a sitewide or template-level KPI for real-user page experience.</p>
Vitals Compliance Score is the percentage of eligible URLs or URL groups that pass Google’s Core Web Vitals thresholds using field data. I use it as a reporting shortcut for a simple question: of the pages Google can actually judge, how many are passing?
That sounds almost too simple. It isn’t.
I started using this KPI because Core Web Vitals reporting kept creating the same mess in meetings: one chart for LCP, another for CLS, another for INP, mobile grouped one way, desktop grouped another way, and then someone asks, “So… are we getting better?” Search Console is useful for diagnosis, but not always for portfolio-level communication. A Vitals Compliance Score turns that sprawl into one number.
Important distinction: Google does not publish an official metric called “Vitals Compliance Score.” This is an internal KPI you build from Google’s own Core Web Vitals definitions and reporting surfaces, usually from some combination of:
I used to resist creating “custom KPIs” like this because I thought they watered down the source data. After a few years of watching teams drown in raw CWV outputs, I changed my mind. The problem wasn’t simplification—the problem was simplifying badly.
Vitals Compliance Score = passing eligible URLs / total eligible URLs × 100
If 1,000 URLs have enough field data and 620 pass Core Web Vitals, the Vitals Compliance Score is 62%.
This KPI is built on Google’s current Core Web Vitals:
As documented by Google, the commonly used “good” thresholds are:
In practice, a page or page group counts as passing when it meets those thresholds at the 75th percentile of real-user visits in field data. That last part matters more than many teams realize. This is not a lab score. It’s not Lighthouse pretending to be your users. It’s a read on what actual visitors experienced through the Chrome ecosystem.
And yes—device context matters. Mobile and desktop can tell very different stories.
Most stakeholders do not want three separate distribution charts for LCP, INP, and CLS. They want to know whether the site is healthier than last month. This score gives them that without forcing the SEO lead to translate six dashboards on the fly.
I like Lighthouse. I use Lighthouse. I also think teams over-trust it when reporting upward. I’ve seen pages with excellent synthetic scores still fail badly in real usage because ad slots, consent layers, third-party scripts, or low-end mobile devices changed the experience after the initial render. (I should mention—we tried once to report only synthetic performance for a fast-moving content site, and the dashboard looked great right up until Search Console started filling with poor mobile groups.)
Vitals Compliance Score keeps the KPI anchored to the same reality Google is using in its reporting surfaces.
One of the most useful implementations is by template: product pages, category pages, article pages, account flows, location pages, whatever structure the site actually has. If 82% of articles pass but only 19% of category pages do, you stop arguing in the abstract. The work queue becomes clearer.
Not perfectly. Still well.
A single percentage is easier to track monthly than a pile of issue labels that may shift as Search Console regroups URLs or as your frontend changes. You can annotate launches, migrations, tag-manager accidents, and front-end refactors against one stable KPI.
This is where most bad implementations go sideways.
An eligible URL is not every page on the site. It is a page—or page group—you have enough field data to judge. If you dump your whole indexable inventory into the denominator, including thousands of pages with no useful CrUX or Search Console visibility, your score stops meaning much.
I learned this the hard way on a large content-and-commerce hybrid site. The first version of the dashboard looked terrible, which initially felt honest. Then I traced the denominator and realized we were punishing the score with long-tail pages Google couldn’t meaningfully evaluate. My mental model was wrong there. I thought “complete inventory” meant “better truth.” It didn’t. It meant measurement noise.
Usually, eligibility comes from one of these:
In many cases, I recommend reporting two numbers, not one:
That split matters. A low compliance rate means performance is weak. A low eligibility coverage rate means measurement is thin. Those are different problems—very different operationally.
Google Search Console often reports Core Web Vitals by groups of similar URLs, not every individual URL. Because of that, you need to choose the unit of analysis.
Count each Search Console issue group or page group once.
Best for: quick operational reporting when Search Console is the main source.
Main limitation: one giant group and one tiny group may count equally unless you apply weighting.
Expand the groups to the URLs they represent and count URLs individually.
Best for: more precise portfolio reporting.
Main limitation: you need stronger data plumbing, and you need to be honest about assumptions when group status is inherited by member URLs. (Quick caveat: this is the part teams often over-engineer. If your source data is group-based, pretending you have perfect URL-level truth can create fake precision.)
My default these days: start with group-level if that’s what you can maintain consistently, then graduate to URL-level only when the pipeline is reliable enough to justify it.
A plain Vitals Compliance Score treats every eligible URL equally. That’s often the right starting point.
But not always.
A site can improve hundreds of low-traffic pages while its money pages remain broken. An unweighted score may rise while the business barely feels it. That’s why I often pair the standard score with a weighted version, such as:
A Shopify store we worked with had this exact issue. Their unweighted compliance improved after they cleaned up a large set of low-value informational pages. Nice win. But the category and collection templates—the pages driving search revenue—were still failing due to a combination of oversized hero media and app-script overhead. The executive dashboard looked healthier than the business actually was. Once I added a traffic-weighted view, the story changed immediately.
That’s why I usually want both:
Both matter. Different lenses.
A workable process usually looks like this:
A monthly scorecard might include:
Keep the methodology visible. Always.
A few months ago I was looking at a site that had a strange pattern: Lighthouse scores were respectable, but Search Console kept showing poor mobile groups on key landing templates. We dug into the field data and found the culprit wasn’t one dramatic failure—it was a stack of smaller issues. Late-loading review widgets. A chat script waking up too aggressively. Image containers reserving space inconsistently. A sticky mobile header changing height during interaction.
Nothing looked catastrophic in isolation. Together, they hammered INP and CLS.
When I rolled the site into a Vitals Compliance Score, the headline number was worse than the team expected—just under half of eligible mobile groups were passing. That stung. But it also gave product and engineering a target they could rally around. Not “make performance better,” which usually goes nowhere. Instead: get the mobile compliance rate on commercial templates above the current baseline, then track movement release by release.
The score improved after fixes, but not immediately everywhere because field data takes time to catch up. That’s another reason I like this KPI: it forces patience. Sometimes deserved patience…
A rising score usually means more measurable pages are meeting Google’s real-user thresholds. Good sign. But don’t over-narrate it.
The score can change because:
So when the score moves, I try to ask two questions:
You need both questions. Otherwise teams celebrate phantom wins or panic over reporting artifacts.
Core Web Vitals matter for SEO, but I’d be careful with the claim set here.
Google has said page experience signals are among many ranking systems, not the dominant factor for most queries. So I would not tell a client, “Improve Vitals Compliance Score and rankings will rise.” That’s too neat. I used to be more optimistic about direct SEO visibility effects from performance work alone. Over time—and after enough before/after reviews where rankings barely moved despite better vitals—I revised that view.
What I believe now is more grounded:
Sometimes rankings improve. Sometimes conversions improve more than rankings. Sometimes the biggest win is that engineering finally has a performance KPI leadership can understand.
If you report this KPI internally, include the methodology beside the number. Say:
Without that context, dashboards start fights.
Use this quick decision tree:
Use Vitals Compliance Score.
Don’t start with this. Use Lighthouse, DevTools, RUM, and page-level analysis first.
Start with a group-level compliance score.
Consider a URL-level score.
Add a traffic-weighted or revenue-weighted version.
Report eligibility coverage alongside the compliance score.
Here are the mistakes I see most often:
This is the classic one. If pages have no usable field data, they usually should not be counted as eligible.
A 68% score means almost nothing if nobody knows whether it’s mobile-only, weighted, URL-level, or based on Search Console groups.
Lab tools are for diagnosis. Vitals Compliance Score is usually for reporting real-user outcomes.
Mobile can fail while desktop passes comfortably. Combining them too early hides useful signal.
This KPI tells you how much is passing, not why pages are failing.
Better CWV can help the overall site experience and support SEO work, but it is not a guaranteed ranking lever by itself.
A barely failing page and a wildly broken page are both just “fail” inside this metric. That simplification is useful—but it also hides nuance.
If you’re implementing this KPI, ask yourself:
If you can’t answer those cleanly, the KPI probably isn’t ready yet.
I like this metric, but I don’t romanticize it.
It can hide which specific metric is failing. It can hide severity. It depends on field-data availability. It can shift when Google’s grouping changes. And it should never replace proper debugging with Lighthouse, Chrome DevTools, or your own RUM instrumentation.
Top-line KPI. Not diagnosis.
That’s the right mental model.
No. It’s an internal reporting construct built from Google’s Core Web Vitals definitions and reporting sources like Search Console and CrUX.
Passing eligible URLs or groups / total eligible URLs or groups × 100.
Usually, it means the URL or page group has enough field data to be judged. If there’s no meaningful field data, I generally wouldn’t include it in the denominator.
Use group level if Search Console is your main source and you want something maintainable. Use URL level if your internal data pipeline is strong enough to support it without pretending to be more precise than the source data.
Often, yes—but as a second view. I usually want an unweighted technical-health score and a traffic- or revenue-weighted business-impact score.
For debugging? No. For a portfolio KPI tied to real-user performance? Usually yes. They answer different questions.
It can help overall page experience and may support SEO outcomes, but I would not promise ranking gains from this metric alone.
Monthly is a sensible default for most teams because field data moves more slowly than lab tests. Weekly can work if your organization needs tighter operational tracking and understands the lag.
I prefer reporting them separately first. Combining them too early can hide important problems, especially on sites with heavy mobile traffic.
Higher is better, but I care less about some universal benchmark and more about whether the score is improving on the templates and devices that matter to the business. A sitewide 70% can be less useful than a focused 90% on critical landing templates.
If you need a concise version for docs or dashboards, use this:
Vitals Compliance Score is the percentage of eligible URLs or URL groups that pass Google’s Core Web Vitals thresholds in field data, used as a sitewide or template-level KPI for real-user page experience.
https://developers.google.com/search/docs/appearance/core-web-vitals
What's happening: Google's Search Central documentation explains how Core Web Vitals fit into search-facing guidance and points readers toward the relevant performance concepts and reporting framework.
What to do: Use this resource when defining your KPI methodology so your internal score uses Google's current terminology, thresholds, and expectations. It is especially useful for explaining the SEO context to non-engineering stakeholders.
https://web.dev/articles/vitals
What's happening: web.dev provides Google's broader overview of Core Web Vitals, including what the metrics measure and why they matter for user experience. It is one of the clearest canonical explainers of LCP, INP, and CLS.
What to do: Reference this page when training teams on what is actually inside your compliance score. It helps prevent the common mistake of treating the KPI as if it were a separate performance concept rather than a rollup of real Core Web Vitals outcomes.
https://developer.chrome.com/docs/crux
What's happening: The Chrome UX Report documentation explains the field data source that underpins much of public Core Web Vitals reporting, including origin and URL-level datasets and related tooling.
What to do: Use this source when deciding what counts as eligible data and when building dashboards from field measurements. It is particularly useful if your Vitals Compliance Score relies on CrUX instead of Search Console exports.
What's happening: PageSpeed Insights shows both lab data and field data when available, making it a practical example of why the two data types should not be conflated in one KPI.
What to do: Use PSI to validate whether a failing template appears problematic in real-user data and to get debugging hints from lab analysis. Keep its lab section separate from your formal compliance calculation unless explicitly labeled as a forecast.
| Approach | Unit counted | Best use case | Main limitation |
|---|---|---|---|
| Unweighted URL-level | Each eligible URL | Precise sitewide technical reporting | Requires stronger data mapping and may be hard to maintain from grouped sources |
| Unweighted group-level | Each eligible Search Console or CrUX group | Fast operational reporting from existing exports | Large and small groups can count the same |
| Template-level | Each template or page type | Product and engineering prioritization | Can hide variation within a template |
| Traffic-weighted | Eligible URLs or groups weighted by sessions | Business-impact reporting for SEO landing pages | Needs trusted analytics joins and can underrepresent low-traffic technical debt |
| Revenue-weighted | Eligible URLs or groups weighted by revenue value | Executive prioritization for ecommerce or lead generation | May overlook experience issues on informational content |
✅ Better approach: A common mistake is using every known or indexed URL in the denominator even when many pages do not have enough field data to be judged. That produces a score that looks objective but is not measuring actual Core Web Vitals compliance. Restricting the denominator to eligible pages, or publishing coverage separately, makes the KPI much more defensible and easier to interpret.
✅ Better approach: Teams sometimes combine Lighthouse results with Search Console or CrUX outcomes as if they were interchangeable. They are not. Lab data is useful for reproducing issues and estimating likely causes, but field data reflects real-user visits and is what Google's reporting uses for Core Web Vitals pass status. If both are used, they should be shown as separate layers rather than merged into one compliance figure.
✅ Better approach: An unweighted score can be useful, but it may hide business reality. A tiny set of low-traffic pages can count the same as major revenue-driving landing pages. If stakeholders use the KPI for prioritization, consider pairing the plain compliance rate with a traffic-weighted or revenue-aware version. Otherwise, the score may encourage engineering effort that improves the KPI without improving the most important user journeys.
✅ Better approach: Mobile and desktop performance can differ significantly, especially for responsive sites with heavy JavaScript or image payloads. If you publish only a combined score, strong desktop performance may mask meaningful mobile failures. Since much SEO landing-page traffic is mobile-first, reporting separate mobile and desktop compliance figures usually leads to more accurate prioritization and more honest communication with product and engineering teams.
✅ Better approach: Because Vitals Compliance Score is a custom KPI, the calculation method matters a great deal. If the dashboard does not explain whether the score is based on URLs, groups, or templates, or whether it is weighted, comparisons become unreliable. Stakeholders may also misread changes caused by methodology updates as genuine site improvements. A short methodology note on every dashboard can prevent that confusion.
✅ Better approach: This KPI is designed to summarize compliance, not to diagnose why pages fail. A drop in the score could come from LCP regressions, input delay problems, layout instability, changes in traffic mix, or reporting regrouping. Teams sometimes overuse the single number and skip the metric-level analysis needed to fix the issue. The score should trigger investigation, not replace engineering diagnosis.
A control layer for CDN and edge runtime rollouts that …
A practical way to strengthen how clearly Google associates your …
<p>A practical way to catch when Google starts rewarding a …
Internal links shape crawl paths, distribute authority, and tell Google …
Google evaluates your mobile page as the main version, so …
When rendered output diverges from source HTML, rankings drop for …
Get expert SEO insights and automated optimizations with our platform.
Get Started Free