Skip to content

Performance & Core Web Vitals

Core Web Vitals are Google’s user experience ranking signals. Poor CWV scores don’t just hurt conversions — they directly affect rankings. VisibilityIQ combines field data from CrUX (real user measurements) with lab data from Lighthouse to give you a complete picture.

LCP — Largest Contentful Paint (target: < 2.5s)

Section titled “LCP — Largest Contentful Paint (target: < 2.5s)”

LCP measures how long it takes for the largest visible element to load. This is usually a hero image, a large text block, or a video thumbnail. A slow LCP feels like a slow page even if most of the content loads quickly.

Common LCP problems VisibilityIQ flags:

  • Unoptimized hero image — large image without proper sizing, format (prefer AVIF or WebP), or lazy loading
  • LCP image not preloaded — the LCP element’s resource isn’t fetched early in the page load
  • Render-blocking resources — CSS or JS in <head> that delays the first paint
  • Slow server response (TTFB > 800ms) — the server is slow to respond, delaying everything downstream

INP — Interaction to Next Paint (target: < 200ms)

Section titled “INP — Interaction to Next Paint (target: < 200ms)”

INP replaced FID as the interaction CWV metric. It measures the delay between a user interaction (click, key press, tap) and the browser’s next paint update. High INP usually means the main thread is blocked.

Common INP problems:

  • Long tasks — JavaScript tasks that take > 50ms on the main thread
  • Third-party scripts — analytics, chat widgets, or ad scripts blocking the main thread
  • DOM size — pages with > 1,500 nodes are harder for the browser to update efficiently

CLS — Cumulative Layout Shift (target: < 0.1)

Section titled “CLS — Cumulative Layout Shift (target: < 0.1)”

CLS measures unexpected visual shifts during page load — elements moving around as the page loads. Common causes:

  • Images without explicit width and height attributes (or aspect-ratio in CSS)
  • Ads, embeds, or iframes that load without reserved space
  • Fonts causing text to shift as they load (FOUT/FOIT)
  • Dynamically injected content above the fold

VisibilityIQ shows both:

  • Field data (CrUX) — real user measurements at the 75th percentile, mobile and desktop separately. This is what Google actually uses for ranking. Requires the CrUX connector to be connected.
  • Lab data (Lighthouse) — synthetic measurements from a controlled environment. Useful for diagnosis and testing fixes, but not directly used for ranking.

If your field and lab scores disagree significantly, the mismatch is flagged as a finding. This usually means real-world conditions (slow networks, user devices, third-party scripts) differ from what lab tests simulate.

The browser’s back-forward cache (bfcache) allows instant navigation when users hit Back or Forward. Pages that use unload event handlers, certain HTTP headers (Cache-Control: no-store), WebSocket connections, or other features are ineligible for bfcache — costing users an extra full page load.

VisibilityIQ flags bfcache blockers at Medium severity. They’re worth fixing because bfcache hits eliminate load time entirely for back/forward navigation, which improves both CWV scores and user experience.

HTTP/3 uses QUIC instead of TCP, which reduces connection latency especially on mobile networks. VisibilityIQ checks whether your origin supports HTTP/3 and flags it at Low severity if it doesn’t. Most CDNs (including Cloudflare) support HTTP/3 by default.

The Speculation Rules API allows browsers to prefetch or prerender pages the user is likely to visit next, making navigation feel instant. VisibilityIQ detects whether your site uses this API and flags it as an opportunity if it doesn’t.

  • Format — prefer AVIF or WebP over JPEG/PNG. VisibilityIQ flags images served in older formats.
  • Explicit dimensions — images without width and height attributes contribute to CLS.
  • Lazy loading — images below the fold should use loading="lazy". Above-the-fold images should not (lazy loading the LCP image is a common mistake that slows LCP).
  • File size — oversized images flagged by comparing file size to display dimensions.

CrUX data is available without authentication for public URLs. Connect the CrUX connector under Project → Connectors → CrUX to see field data alongside your crawl findings. Pages with insufficient traffic may show “No CrUX data” — for those, lab data is the best available signal.