{
  "slug": "cwv-vital-grade",
  "name": "Vital grade",
  "aliases": [
    "Per-vital grade",
    "Vital bucket"
  ],
  "definition": "The band a single page-experience vital falls into: good, needs improvement, or poor.",
  "category": "Page experience",
  "type": "derived metric",
  "unit": "one of good, needs-improvement, poor",
  "direction": "higher-better",
  "verification": "verified",
  "calculation": "Computed in our own code, not in the semantic layer, and applied to the RAW value as it arrives rather than to a rescaled one, there is no conversion step anywhere in the grading function. The bands are the standard Core Web Vitals ones, expressed in the units the values already carry: rendering at 2.5 and 4 seconds, responsiveness at 0.2 and 0.5 seconds, layout shift at 0.1 and 0.25, and performance at 0.9 and 0.5 with the comparison reversed because higher is better there.",
  "aggregation": "Applied to a single value, either the weighted headline average for the site grade, or a single page's value for a per-page grade. Grades are never averaged.",
  "grain": "One grade per vital per date range, optionally per device, or one grade per vital per page in the scorecard.",
  "dimensions": [
    "page",
    "device"
  ],
  "requiredFilters": [
    "date_range"
  ],
  "sources": [
    "lighthouse"
  ],
  "reports": [
    "core-web-vitals-report"
  ],
  "skills": [
    "cwv-regression-watch",
    "technical-health-audit"
  ],
  "verbs": [
    "site_health_cwv_check"
  ],
  "rungs": [
    "R1"
  ],
  "levers": [
    "L1"
  ],
  "questions": [
    "Is our LCP good or poor?",
    "Which vitals are failing?"
  ],
  "interpretation": "The band, not the number. It exists because the four vitals sit on three different scales, seconds, a unitless shift score, and a zero-to-one score, and cannot be compared numerically. Grading is the only common currency between them. Quote the grade beside the value, never instead of it.",
  "caveats": [
    "No rescaling happens at grading time. A band and the value it is applied to are always in the same unit, so a grade computed against a converted figure is wrong by whatever the conversion was.",
    "The threshold values are recorded in code as pending product-specific confirmation, responsiveness most of all, with a note that observed pages have tended to land in the poor band.",
    "The grade for the site is computed from the weighted headline average, so it is not the same as the most common per-page grade.",
    "A null value produces no grade rather than a poor grade.",
    "Trend mode returns ungraded per-bucket values, grading is not applied to a time series."
  ],
  "freshness": "varies by site, priority URLs can run nightly; most pages far less often. The collection date rides on the card rather than being assumed.",
  "failureModes": [
    "Restating a band in a unit the value is not in, the rendering and responsiveness bands are seconds, not milliseconds.",
    "Reading a site-level grade as a statement about most pages.",
    "Averaging grades, or treating an absent grade as a failure."
  ],
  "notSameAs": [
    {
      "slug": "largest-contentful-paint",
      "why": "Score versus verdict: the vital is a numeric average, the grade is the band it lands in. The two are kept as separate fields on every vital and neither substitutes for the other."
    },
    {
      "slug": "cwv-grade-distribution",
      "why": "This is one grade for one value; the distribution is the count of pages in each band. A good headline grade is compatible with a large poor bucket."
    },
    {
      "slug": "interaction-to-next-paint",
      "why": "The number is a weighted average; the grade is the band it lands in. Score and verdict stay separate on every vital.",
      "mirroredFrom": "interaction-to-next-paint"
    },
    {
      "slug": "cumulative-layout-shift",
      "why": "The number is a weighted average; the grade is the band. Score and verdict stay separate on every vital.",
      "mirroredFrom": "cumulative-layout-shift"
    },
    {
      "slug": "cwv-overall-verdict",
      "why": "The per-vital grade covers whichever vital it names; the overall verdict covers performance only despite its name.",
      "mirroredFrom": "cwv-overall-verdict"
    },
    {
      "slug": "cwv-weakest-vital",
      "why": "The grade tells you which band a named vital is in; the weakest vital tells you which vital sits in the worst band on a page. A value versus a selection.",
      "mirroredFrom": "cwv-weakest-vital"
    },
    {
      "slug": "lighthouse-category-scores",
      "why": "There is no grade for any of these eight. Presenting one as good or poor invents a band the product does not have.",
      "mirroredFrom": "lighthouse-category-scores"
    }
  ],
  "related": [
    "cwv-grade-distribution",
    "cwv-overall-verdict",
    "cwv-weakest-vital",
    "largest-contentful-paint"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}