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.
The three CWV metrics
Section titled “The three CWV metrics”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
widthandheightattributes (oraspect-ratioin 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
Field vs lab data
Section titled “Field vs lab data”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.
bfcache eligibility
Section titled “bfcache eligibility”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 and QUIC
Section titled “HTTP/3 and QUIC”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.
Speculation Rules API
Section titled “Speculation Rules API”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.
Image optimization
Section titled “Image optimization”- Format — prefer AVIF or WebP over JPEG/PNG. VisibilityIQ flags images served in older formats.
- Explicit dimensions — images without
widthandheightattributes 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.
Connecting CrUX for field data
Section titled “Connecting CrUX for field data”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.