Performance score — combined rating for your website speed

Understand how Qvicko's performance score is calculated from Core Web Vitals (LCP, FCP, CLS) and what you can do to improve it.


Performance scoreis a combined rating between 0 and 100 that measures how fast and stable your website loads. The score is based on Google's Core Web Vitals — three key metrics that measure loading speed and visual stability.

Three metrics that build the score

The performance score is calculated as an average of scores from three Web Vitals:

LCP — Largest Contentful Paint

Measures how long it takes before the largest visible element (e.g. a hero image or heading) has rendered on screen. LCP is the most important measure of perceived loading speed.

Good: ≤ 2.5 s · Needs improvement: ≤ 4.0 s · Poor: > 4.0 s

FCP — First Contentful Paint

Measures how long it takes before the first visible content (text, image, or SVG) appears on screen. FCP shows how quickly the visitor sees that something is happening after clicking the link.

Good: ≤ 1.8 s · Needs improvement: ≤ 3.0 s · Poor: > 3.0 s

CLS — Cumulative Layout Shift

Measures how much the page layout jumps or shifts during loading. A high CLS value means elements (images, ads, buttons) shift unexpectedly — which is frustrating for visitors.

Good: ≤ 0.1 · Needs improvement: ≤ 0.25 · Poor: > 0.25

How is the score calculated?

Each metric yields a sub-score between 0 and 100 based on Google's thresholds. The final score is the average of all available sub-scores.

MetricGoodNeeds workPoor
LCP≤ 2,500 ms → 100p≤ 4,000 ms → 50–100p> 4,000 ms → 0–50p
FCP≤ 1,800 ms → 100p≤ 3,000 ms → 50–100p> 3,000 ms → 0–50p
CLS≤ 0.1 → 100p≤ 0.25 → 50–100p> 0.25 → 0–50p

For example, if your site's average LCP is 2,000 ms (100p), FCP is 1,500 ms (100p), and CLS is 0.15 (67p), your performance score becomes: (100 + 100 + 67) ÷ 3 ≈ 89.

How Web Vitals are measured technically

Qvicko's tracking pixel collects Web Vitals directly from each visitor's browser using web standard APIs:

  • Navigation Timing API — Provides load time and TTFB (Time to First Byte) via PerformanceNavigationTiming.
  • Paint Timing API — Provides the FCP value via performance.getEntriesByType("paint").
  • PerformanceObserver — Listens for largest-contentful-paint and layout-shift events for LCP and CLS.

The pixel waits 100 ms to let the browser stabilize, and an additional 1,000 ms for LCP and CLS observers to report their values. Averages are then computed on the server across all page views in the selected period.

Real values, not simulated

Unlike tools like Google Lighthouse (which runs simulated tests), Qvicko's performance score shows data from real visitors under real network conditions. This provides a more representative picture of the user experience.

Tips to improve your score

  • Optimize images — Use the right image format (WebP) and size. Large images are the most common cause of high LCP.
  • Set dimensions — Give all images and iframes a fixed width and height to reduce CLS.
  • Minimize blocking resources — Load CSS and JavaScript asynchronously where possible.