Home›Core Web Vitals›PageSpeed Insights

Google PageSpeed Insights: Beyond the Score

Tom LindgrenSeptember 23, 202612 min read

Google PageSpeed Insights (PSI) is the single most commonly used web performance tool — and the most commonly misunderstood. Teams fixate on the 0-100 score, chase green checkmarks, and optimize for the synthetic test environment rather than for their actual users. The score is a proxy, not a goal. Understanding what PSI actually measures, where its data comes from, and how to translate its output into prioritized engineering work is what separates effective performance optimization from score-chasing theater.

This guide breaks down every section of a PSI report, explains the relationship between field data and lab data, and provides a framework for turning PSI findings into an actionable optimization roadmap.

Anatomy of a PSI Report

A PageSpeed Insights report has two distinct data sources, each with different implications for optimization priority:

Field Data (CrUX) Lab Data (Lighthouse) Real users, real devices 28-day rolling window Chrome browsers only p75 evaluation Metrics: LCP, INP, CLS, FCP, TTFB ★ Used for Google rankings Simulated Moto G Power Throttled 4G connection Headless Chrome Single run snapshot Metrics: FCP, LCP, TBT, CLS, Speed Index, SI ★ Drives the 0-100 score

Field Data: What Actually Matters

The field data section displays Core Web Vitals collected from real Chrome users over the past 28 days via the Chrome User Experience Report (CrUX). This is the data Google uses for its page experience ranking signal. If your field data shows green for LCP, INP, and CLS, your page passes Core Web Vitals for ranking purposes — regardless of what the lab score says.

Field data is reported at two levels: the specific URL and the entire origin. If the URL has insufficient traffic for CrUX to have data, PSI shows origin-level data instead (or no field data at all for very low-traffic sites).

Lab Data: The Diagnostic Tool

The lab data section runs a Lighthouse audit on the page using a simulated mid-range mobile device (historically a Moto G Power) on a throttled 4G connection. This produces the 0-100 performance score, which is a weighted composite of six metrics:

MetricWeightGood Threshold
Total Blocking Time (TBT)30%< 200ms
Largest Contentful Paint (LCP)25%< 2.5s
Cumulative Layout Shift (CLS)25%< 0.1
First Contentful Paint (FCP)10%< 1.8s
Speed Index10%< 3.4s
Time to Interactive (TTI)0%*< 3.8s

*TTI was removed from the score weighting in Lighthouse 10+ but is still reported for reference.

Critical distinction: The lab score does not measure INP because lab tests perform no real user interactions. Total Blocking Time (TBT) serves as a lab proxy for interactivity, but it does not capture the same behavior as INP. A page can score 100 in the lab and still fail INP in the field.

Why Field and Lab Data Disagree

It is common for PSI to show "Good" field data alongside a low lab score, or vice versa. This is not a bug — the two data sources measure different things under different conditions:

The Lighthouse Audit Categories

Below the score, Lighthouse provides categorized audit results. These are the actionable findings that guide optimization work:

Opportunities

Opportunities are suggestions for reducing load time. Each includes an estimated time savings. High-impact opportunities typically include:

Diagnostics

Diagnostics provide performance-related information that does not directly map to a time savings estimate but highlights patterns that commonly cause problems:

Passed Audits

Passed audits confirm what you are doing right. These are worth reviewing when establishing a baseline — they tell you which optimizations are already in place and should be maintained.

Performance Budgets

A performance budget sets quantitative limits on performance metrics or resource sizes that a page must not exceed. Budgets transform performance from a reactive fix-it exercise into a proactive constraint that prevents regressions.

Budget Types

Budget TypeExampleEnforcement
Metric budgetsLCP < 2.5s, TBT < 200msLighthouse CI assertions
Size budgetsTotal JS < 300KB, total images < 500KBbundlesize, webpack performance hints
Count budgetsMax 3 third-party scripts, max 50 requestsCustom CI checks

Lighthouse CI can enforce metric budgets in your CI/CD pipeline, failing builds that exceed thresholds. This prevents new features or dependencies from silently degrading performance.

// lighthouserc.js
module.exports = {
  ci: {
    assert: {
      assertions: {
        'largest-contentful-paint': ['error', { maxNumericValue: 2500 }],
        'cumulative-layout-shift': ['error', { maxNumericValue: 0.1 }],
        'total-blocking-time': ['warn', { maxNumericValue: 200 }],
        'resource-summary:script:size': ['error', { maxNumericValue: 300000 }]
      }
    }
  }
};

Optimization Priority Framework

Not every PSI finding deserves equal attention. A pragmatic priority framework considers three factors:

  1. Impact on field metrics: Does the finding directly affect a metric that is currently failing in field data? If field LCP is poor, prioritize LCP-related audits over passing metrics.
  2. Estimated time savings: Lighthouse's "Opportunities" section estimates the potential savings for each audit. Focus on items with the largest savings first.
  3. Implementation effort: Image dimension fixes (CLS) are often one-line changes. JavaScript refactoring (TBT/INP) may require weeks. Sequence quick wins before deep refactors.

Integrating PSI findings with your APM data and error tracking creates a complete picture: PSI tells you what is slow, APM tells you why, and error tracking reveals what breaks under the performance pressure.

Common PSI Misconceptions

Automating PSI Monitoring

Running PSI manually is useful for spot checks, but continuous monitoring requires automation:

Key Takeaways