Pillar · 42 errors
Speed & Core Web Vitals
A slow site costs you rankings and conversions. Google’s Core Web Vitals put hard numbers on the experience — LCP, CLS and INP — and falling short quietly buries you in search.
DNS_FAILURELighthouse error "DNS_FAILURE": servers could not resolve domain Lighthouse's headless Chrome could not resolve the hostname to an IP, so the audit never loaded the page. critical CHROME_INTERSTITIAL_ERRORLighthouse error "CHROME_INTERSTITIAL_ERROR" Chrome showed a full-page warning screen before the site loaded, so Lighthouse aborted instead of measuring anything. critical LCP > 2.5sLargest Contentful Paint (LCP) too slow The biggest element above the fold paints later than 2. high INP > 200msInteraction to Next Paint (INP) poor Taps, clicks, and keystrokes feel laggy because the main thread is busy, pushing INP past the 200ms threshold. high TTFB > 600msReduce initial server response time (slow TTFB) Lighthouse flags the page when the server takes more than 600ms to return the first byte of the HTML document. high No explicit width/heightImage elements do not have explicit width and height Images shipped without width and height attributes give the browser no box to reserve, so layout jumps as each one loads. high Reduce unused JavaScriptReduce unused JavaScript The page downloads, parses, and compiles JavaScript it never executes, burning main-thread time and delaying interactivity. high Enable text compressionEnable text compression (gzip/Brotli) Text-based files are served uncompressed because gzip or Brotli isn't enabled, so transfers are several times larger than needed. high FCP > 1.8sFirst Contentful Paint (FCP) too slow More than 1. high TBT > 200msTotal Blocking Time (TBT) too high Long main-thread tasks between first paint and interactivity sum past 200ms, making the page feel frozen to early clicks and taps. high LCP lazily loadedLargest Contentful Paint image was lazily loaded loading="lazy" on the hero image de-prioritizes its fetch, so the browser downloads it late and LCP suffers. high Minimize main-thread workMinimize main-thread work The browser's main thread spends too long parsing, compiling, and running JavaScript plus doing layout and paint. high Third-party codeReduce the impact of third-party code Off-domain scripts like analytics, ads, chat, and tag managers block the main thread and slow your page's startup. high Avoid large layout shiftsAvoid large layout shifts The diagnostic names the exact DOM elements that move during load and the root cause behind a high CLS score. high NO_FCPLighthouse returned error: NO_FCP PageSpeed's test aborted because Chrome never detected a first contentful paint inside its 15-second load budget. high ERRORED_DOCUMENT_REQUESTLighthouse returned error: ERRORED_DOCUMENT_REQUEST PageSpeed could not fetch the page's main HTML document, so the run failed before any analysis started. high PROTOCOL_TIMEOUTLighthouse returned error: PROTOCOL_TIMEOUT Headless Chrome didn't answer a DevTools protocol command in time, so Lighthouse gave up mid-run. high ERR_INSUFFICIENT_RESOURCESnet::ERR_INSUFFICIENT_RESOURCES (too many concurrent requests) Chrome's network stack runs out of internal resource handles when a page fires too many simultaneous requests, so assets silently fail. high NOT_HTMLLighthouse/PageSpeed error "NOT_HTML" The URL returned a non-HTML content type, so Lighthouse refused to audit it as a web page. high LCP issue: longer than 4sSearch Console Core Web Vitals "LCP issue: longer than 4s (mobile)" Real mobile visitors saw the page's largest element finish painting after 4 seconds for the slowest quarter of loads, failing LCP. high CLS > 0.1Cumulative Layout Shift (CLS) too high Page content jumps around during load, pushing CLS over 0. medium Render-blocking resourcesEliminate render-blocking resources CSS and synchronous scripts in the head stall first paint, holding the page blank until they finish downloading. medium Properly size imagesProperly size images Lighthouse flags images served far larger than the size they’re displayed at, wasting download bytes on every visit. medium Serve images in next-gen formatsServe images in next-gen formats (WebP/AVIF) Lighthouse flags JPEG/PNG assets that would be substantially smaller as WebP or AVIF, slowing image load and LCP. medium Inefficient cache policyServe static assets with an efficient cache policy Static files lack long Cache-Control max-age headers, so returning visitors re-download assets that never changed. medium FOIT / font-displayEnsure text remains visible during webfont load (FOIT) Without font-display: swap, the browser hides text while a custom font downloads, delaying when content becomes readable. medium Excessive DOM sizeAvoid an excessive DOM size A page with thousands of DOM nodes inflates memory and slows every style and layout recalculation, hurting responsiveness. medium bfcache restore failedPage prevented back/forward cache restoration The page can't be stored in the back/forward cache, so hitting Back reloads it from the network instead of restoring instantly. medium Speed Index slowSpeed Index too slow Lighthouse films the load and scores how quickly the viewport fills with content; a slow score means the page looks blank too long. medium Legacy JavaScriptAvoid serving legacy JavaScript to modern browsers Your build ships Babel transforms and core-js polyfills to browsers that already support modern JavaScript, padding every bundle. medium Preconnect missingPreconnect to required origins Critical cross-origin assets pay a full DNS, TCP, and TLS round-trip on first use because the connection wasn't opened early. medium Critical request chainsAvoid chaining critical requests Render-blocking resources that each depend on the previous one form a long serial chain, adding a round-trip per hop. medium NO_LCPLighthouse returned error: NO_LCP Chrome never recorded a Largest Contentful Paint, usually because the page's biggest element starts hidden or sits offscreen. medium NO_SCREENSHOTSLighthouse error: NO_SCREENSHOTS / SPEEDINDEX_OF_ZERO Chrome captured no filmstrip frames, so Speed Index can't be computed and the performance run fails. medium Non-composited animationsAvoid non-composited animations An animation changes a property that forces layout or paint on the main thread instead of running on the compositor, causing jank. medium Enormous payloadsAvoid enormous network payloads The total bytes transferred to load the page exceed Lighthouse's roughly 1,600 KiB budget, slowing load and costing mobile data. medium Defer offscreen imagesDefer offscreen images (lazy-load below the fold) Images below the fold download eagerly during initial load, stealing bandwidth from the above-the-fold content that decides LCP. medium Multiple redirectsAvoid multiple page redirects A page fires two or more redirect hops before the final document loads, adding a round-trip of latency per hop. medium [Violation] Forced reflowChrome console "[Violation] Forced reflow while executing JavaScript took NNms" JavaScript read a layout property right after writing to the DOM, forcing the browser to recalculate layout synchronously mid-script. medium CrUX: no field dataChrome UX Report does not have sufficient real-world speed data PageSpeed has no real-user (field) data to show because the URL or origin falls below CrUX's minimum sample threshold. low CWV: not enough dataSearch Console Core Web Vitals: "not enough usable data" The Search Console Core Web Vitals report is empty because it's built entirely from CrUX field data the property doesn't yet have. low No CrUX field dataPageSpeed Insights "not enough data" / falls back to origin-level data PageSpeed Insights can't show URL-level field data because the page doesn't get enough real Chrome traffic, so it uses origin data or none. low