<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://web.dev/</id>
  <title>Antoine Bisch on web.dev</title>
  <updated>2026-04-15T23:21:06Z</updated>
  <author>
    <name>Antoine Bisch</name>
  </author>
  <link href="https://web.dev/authors/antoinebisch/feed.xml" rel="self"/>
  <link href="https://web.dev/"/>
  <icon>https://web-dev.imgix.net/image/admin/xCDa34tJbhKRgr8pj5BJ.jpg?auto=format</icon>
  <logo>https://web.dev/images/shared/rss-banner.png</logo>
  <subtitle>Web Ecosystem Consultant</subtitle>
  
  
  <entry>
    <title>How Renault improved its bounce and conversion rates by measuring and optimizing Largest Contentful Paint</title>
    <link href="https://web.dev/renault/"/>
    <updated>2021-10-08T00:00:00Z</updated>
    <id>https://web.dev/renault/</id>
    <content type="html" mode="escaped">&lt;p&gt;Groupe Renault is a French multinational automobile manufacturer with a presence in over 130 countries. For an automotive group such as Renault, performant brand sites driving more user engagement and conversions mean more business. All of its brand sites aim at providing the best user experience at scale while maintaining flexibility of content and features for localized sites. In this context, performance monitoring is a key stake for the customer experience team which is in charge of developing and maintaining the global platform.&lt;/p&gt;
&lt;h2 id=&quot;measuring-the-business-impact-of-core-web-vitals&quot;&gt;Measuring the business impact of Core Web Vitals &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/renault/#measuring-the-business-impact-of-core-web-vitals&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;measurement-in-google-analytics&quot;&gt;Measurement in Google Analytics &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/renault/#measurement-in-google-analytics&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Working with fifty-five, its global data partner, Renault set up the &lt;a href=&quot;https://github.com/GoogleChrome/web-vitals&quot; rel=&quot;noopener&quot;&gt;web-vitals&lt;/a&gt; library, which allows sending to Google Analytics all the Web Vitals metrics from real users in a way that accurately matches how they&#39;re measured by Chrome and reported to other Google tools.&lt;/p&gt;
&lt;p&gt;The following analysis showcases a dataset captured using these tools over four months between December 2020 and March 2021.&lt;/p&gt;
&lt;h3 id=&quot;optimized-lcp-strongly-correlates-with-user-engagement-and-business-metrics&quot;&gt;Optimized LCP strongly correlates with user engagement and business metrics &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/renault/#optimized-lcp-strongly-correlates-with-user-engagement-and-business-metrics&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The teams have identified a particularly strong correlation between a low Largest Contentful Paint (LCP) and favorable bounce rates and conversion rates, shown in the visualization below.&lt;/p&gt;
&lt;img alt=&quot;A chart showing a negative correlation between LCP and bounce rate and conversion rate.&quot; decoding=&quot;async&quot; height=&quot;372&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 782px) 782px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/A3ghcv1u3qxQKjgnb5Ru.png?auto=format&amp;w=1564 1564w&quot; width=&quot;782&quot; /&gt;
&lt;p&gt;The dataset captures over 10 million visits in 33 countries over four months and shows how lower LCP measures correlates with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lower bounce rates&lt;/li&gt;
&lt;li&gt;More conversions (lead forms completed)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Interestingly, as the website runs as a Single Page Application (SPA), all these measures are captured on landing pages only. The data shows that it is worth optimizing the website until the LCP reaches below 1 second. The group&#39;s brand sites can never be too optimized!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This dataset not only shows the negative correlation between LCP and business metrics, but also highlights performance discrepancies among the best performing landing pages. In the context of this website, getting LCP under 1 second leads to large increases in conversions and reductions in bounce.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Eja Rakotoarimanana, Consultant, fifty-five&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;1 second LCP improvement can lead to a 14 percentage points (ppt) decrease in bounce rate and 13% increase in conversions.&lt;/p&gt;
&lt;div&gt;
  &lt;table&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th&gt;1 second LCP improvement&lt;/th&gt;
        &lt;th&gt;Result&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td&gt;LCP around 1&amp;nbsp;s&lt;/td&gt;
        &lt;td&gt;+13% CVR&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;LCP under 1.6&amp;nbsp;s&lt;/td&gt;
        &lt;td&gt;-14 ppt bounce rate&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;LCP above 1.6&amp;nbsp;s&lt;/td&gt;
        &lt;td&gt;-5 ppt bounce rate&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; The numbers above are derived from linear regressions computed over the dataset to understand the relationship between LCP and other technical and business metrics. The numbers linking LCP and bounce show that the marginal gain on bounce rates increases as LCP gets low (below 1.6 seconds). &lt;/div&gt;&lt;/aside&gt;
&lt;h2 id=&quot;renaults-approach-to-optimizing-core-web-vitals-at-scale&quot;&gt;Renault&#39;s approach to optimizing Core Web Vitals at scale &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/renault/#renaults-approach-to-optimizing-core-web-vitals-at-scale&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Since early 2020, in the brand&#39;s top 5 European markets, the number of visitors experiencing a &lt;strong&gt;fast LCP (under 2.5 s) has improved by an average of 22 ppt for Renault domains&lt;/strong&gt; (from 51% to 73%).&lt;/p&gt;
&lt;img alt=&quot;A chart showing how Renault&amp;#x27;s LCP measured by RUM improved over time by 22 ppt.&quot; decoding=&quot;async&quot; height=&quot;365&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/vgdbNJBYHma2o62ZqYmcnkq3j0o1/itCYyzXJL57ZM1t31L4B.jpg?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;Here is how they&#39;ve approached it.&lt;/p&gt;
&lt;h3 id=&quot;a-central-optimization-of-the-spa&quot;&gt;A central optimization of the SPA &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/renault/#a-central-optimization-of-the-spa&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;From a platform standpoint, performance has been a priority for years and including Core Web Vitals (CWV) as key metrics was a smooth process. Central teams have set up a comprehensive monitoring solution (with &lt;a href=&quot;https://developer.chrome.com/docs/lighthouse/overview/&quot; rel=&quot;noopener&quot;&gt;Google Lighthouse&lt;/a&gt; and &lt;a href=&quot;https://developer.chrome.com/docs/crux/api/&quot; rel=&quot;noopener&quot;&gt;Chrome UX Report API&lt;/a&gt;) and established a performance culture across the organization. There were several strategies to optimize their Single Page Application, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/rendering-on-the-web/&quot;&gt;Server side rendering (SSR)&lt;/a&gt; to ensure a fast First Contentful Paint (FCP).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/codelab-code-splitting/&quot;&gt;Code splitting&lt;/a&gt; to deliver only the JS and CSS chunks needed for the landing page (for better LCP and FID).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/content-delivery-networks/&quot;&gt;CDN&lt;/a&gt; with a high level of resource caching (including a &lt;a href=&quot;https://aws.amazon.com/lambda/edge/&quot; rel=&quot;noopener&quot;&gt;Lambda@Edge&lt;/a&gt; to sort and remove unnecessary query parameters). This helped avoid the drawbacks of SSR (slower TTFB due to server computation) and deliver content closer to the final user (for better TTFB and LCP).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/codelab-text-compression-brotli/&quot;&gt;Optimizing compression with brotli&lt;/a&gt; to reduce the code size.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/performance-http2/&quot;&gt;HTTP2&lt;/a&gt; to enable multiplexing of requests and responses.&lt;/li&gt;
&lt;li&gt;Using responsive images with &lt;a href=&quot;https://web.dev/serve-images-webp/&quot;&gt;WebP support&lt;/a&gt; and &lt;a href=&quot;https://web.dev/use-srcset-to-automatically-choose-the-right-image/#help-the-browser-choose-the-right-image-size&quot;&gt;&lt;code&gt;srcset&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://web.dev/use-srcset-to-automatically-choose-the-right-image/#what-about-the-display-size-of-the-image&quot;&gt;&lt;code&gt;sizes&lt;/code&gt;&lt;/a&gt; attribute to serve the most appropriate image size and format to users.&lt;/li&gt;
&lt;li&gt;Lazy loading images, videos, and iframes using &lt;a href=&quot;https://web.dev/lazy-loading-images/#images-inline-intersection-observer&quot;&gt;&lt;code&gt;IntersectionObserver&lt;/code&gt;&lt;/a&gt; and FPOs (small 1 KB thumbnails).&lt;/li&gt;
&lt;li&gt;Removing blocking scripts and &lt;a href=&quot;https://web.dev/serve-modern-code-to-modern-browsers/#use-@babelpreset-env&quot;&gt;adjusting transpilation to browser targets&lt;/a&gt; to reduce JS file sizes (by avoiding unnecessary polyfills).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.google.com/tagmanager/answer/2772488?hl=en&quot; rel=&quot;noopener&quot;&gt;Reducing the size of the Google Tag Manager container&lt;/a&gt; to load third-party scripts only where and when needed.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/font-best-practices/#use-fewer-web-fonts&quot;&gt;Reducing the number of custom fonts&lt;/a&gt;, &lt;a href=&quot;https://web.dev/font-best-practices/#best-practices-2&quot;&gt;using woff/woff2 formats with unicode-range&lt;/a&gt;, and  &lt;a href=&quot;https://developer.chrome.com/docs/lighthouse/performance/font-display//#how-to-avoid-showing-invisible-text&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;font-display:swap&lt;/code&gt;&lt;/a&gt; to reduce font file sizes and show text as soon as possible even if custom fonts are not yet available.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/preload-responsive-images/&quot;&gt;Preloading hero images&lt;/a&gt; which are often LCP elements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The team is still working on future improvements such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/HTTP/2_Server_Push&quot; rel=&quot;noopener&quot;&gt;Server push&lt;/a&gt; to improve FCP by delivering CSS faster. (On standby due to lack of AWS support and &lt;a href=&quot;https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/vOWBKZGoAQAJ?pli=1&quot; rel=&quot;noopener&quot;&gt;deprecation proposal&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.google.com/web/updates/2019/02/rendering-on-the-web#rehydration&quot; rel=&quot;noopener&quot;&gt;Progressive hydration&lt;/a&gt; to improve FID.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/codelab-serve-modern-code/#use-lessscript-type%22module%22greater&quot;&gt;ES6 Module support&lt;/a&gt; to deliver a faster experience by using ES6 builds for modern browsers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The SPA approach can be beneficial for performance as a full page reload is not necessary when users navigate across pages. That being said, current CWV measurement methodology on SPA can be perceived as a downside as route transitions are not being measured; hence comparatively faster page loads within a session, due to UI caching, are not taken into account. It also makes it difficult to compare CWV metrics against a Multi Page Application competitor website where a warm cache would bring the measures down on each page a user would browse during a session. Read the &lt;a href=&quot;https://web.dev/vitals-spa-faq/&quot;&gt;Web Vitals SPA FAQ&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;These are &lt;a href=&quot;https://web.dev/vitals-spa-faq/&quot;&gt;known limitations&lt;/a&gt; that are being investigated by the &lt;a href=&quot;https://github.com/GoogleChrome/web-vitals/issues/119#issuecomment-767298992&quot; rel=&quot;noopener&quot;&gt;Chrome product teams&lt;/a&gt;. An &lt;a href=&quot;https://web.dev/better-layout-shift-metric/&quot;&gt;update to the CLS metric&lt;/a&gt; has already been shipped to improve measurement on SPAs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Performance requires constant monitoring as various technical teams can impact it. Despite limitations in how they are measured on SPAs, CWV metrics allow us to track the impact of the actions our teams take. Hopefully route transitions will be taken into account soon!&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Cedric Bazureau, Tech Lead, Renault&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;local-guidelines-promoting-performance-optimization-as-a-shared-responsibility&quot;&gt;Local guidelines promoting performance optimization as a shared responsibility &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/renault/#local-guidelines-promoting-performance-optimization-as-a-shared-responsibility&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Performance is communicated as both a global (central) and local responsibility. Teams have put together a series of best practices that local content owners are meant to follow. Here are a few examples from these guidelines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimize local Google Tag Manager container to improve site performance. for example conditionally trigger certain tags.&lt;/li&gt;
&lt;li&gt;Limit size of video content by compressing it using internal tools or hosting it on a external platform (such as YouTube).&lt;/li&gt;
&lt;li&gt;Avoid uploading pictures via Google Tag Manager.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;A deep understanding of our digital performance is key to ensuring a continuous optimization of our brand sites. Our customer experience team&#39;s approach is to provide a global platform that positively impacts local teams&#39; business outcomes while empowering these teams with guidelines and best practices to maintain this performance at a high level.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Alexandre Perruche, Head of Performance, Renault&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To conclude, website performance has always been a priority at Renault, and its website platform is continuously optimized. Measuring Core Web Vitals alongside business metrics has allowed them to promote this topic as a globally shared responsibility, and local guidelines equip teams with the ability to participate in this beneficial effort.&lt;/p&gt;
</content>
    <author>
      <name>Thierry Coustillac</name>
    </author><author>
      <name>Antoine Bisch</name>
    </author><author>
      <name>Cédric Bazureau</name>
    </author>
  </entry>
  
  <entry>
    <title>Core Web Vitals workflows with Google tools</title>
    <link href="https://web.dev/vitals-tools/"/>
    <updated>2021-08-09T00:00:00Z</updated>
    <id>https://web.dev/vitals-tools/</id>
    <content type="html" mode="escaped">&lt;p&gt;&lt;a href=&quot;https://web.dev/vitals/&quot;&gt;Core Web Vitals&lt;/a&gt; are a set of metrics that assess the user experience on criteria such as load performance, responsiveness to user input, and layout stability.&lt;/p&gt;
&lt;p&gt;A workflow for improving Core Web Vitals for your website will be explored in this guide, but where that workflow begins depends on whether you&#39;re collecting your own field data. Where it ends may depend on which of Google&#39;s tools you&#39;ll find useful in diagnosing and fixing user experience problems.&lt;/p&gt;
&lt;h2 id=&quot;core-web-vitals-are-best-measured-in-the-field&quot;&gt;Core Web Vitals are best measured in the field &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#core-web-vitals-are-best-measured-in-the-field&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Core Web Vitals are specifically designed to measure how users experience your website—they are &lt;a href=&quot;https://web.dev/user-centric-performance-metrics/&quot;&gt;user centric metrics&lt;/a&gt;. Lab-based tools such as Lighthouse are diagnostic tools to highlight potential performance problems and best practices. Lab-based tools are run under certain, predefined conditions and may not reflect the real-life Core Web Vitals measurements your users experience.&lt;/p&gt;
&lt;aside class=&quot;aside flow color-secondary-box-text bg-secondary-box-bg&quot;&gt;&lt;p class=&quot;cluster &quot;&gt;&lt;span class=&quot;aside__icon box-block &quot;&gt;&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; role=&quot;img&quot; aria-label=&quot;Highlighter pen&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;   &lt;path fill-rule=&quot;evenodd&quot; clip-rule=&quot;evenodd&quot; d=&quot;M10.22 9.49l-5.91 6c-.77.8-.7 2.05.08 2.85L.77 22h5.68l.74-.75c.78.81 1.95.86 2.73.05l5.96-6.05-5.66-5.76zm12.46-4l-2.82-2.87c-.78-.8-2.07-.84-2.84-.04l-5.75 5.85 5.66 5.75 5.69-5.78c.77-.81.83-2.11.06-2.91z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;&lt;/span&gt;&lt;strong&gt;Key Term&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot; flow&quot;&gt; &lt;a href=&quot;https://web.dev/lab-and-field-data-differences/#lab-data&quot;&gt;&lt;strong&gt;Lab data&lt;/strong&gt;&lt;/a&gt; describes how &lt;em&gt;hypothetical&lt;/em&gt; users &lt;em&gt;may&lt;/em&gt; experience your website. &lt;a href=&quot;https://web.dev/lab-and-field-data-differences/#field-data&quot;&gt;&lt;strong&gt;Field data&lt;/strong&gt;&lt;/a&gt; describes how &lt;em&gt;real&lt;/em&gt; users &lt;em&gt;actually&lt;/em&gt; experienced your website. Field data is also known as Real User Monitoring (RUM), and is typically collected by monitoring real user experiences using JavaScript on the pages they load, and reporting various metrics to an analytics solution. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;For example, Lighthouse is a lab-based tool that runs tests with simulated throttling in a simulated desktop or mobile environment. While such simulations of slower network and device conditions are helpful when trying to diagnose performance problems, &lt;a href=&quot;https://web.dev/lab-and-field-data-differences/&quot;&gt;they&#39;re just a single slice&lt;/a&gt; of the large variety in network conditions and device capabilities, and so may not reflect what users on your sites are experiening.&lt;/p&gt;
&lt;p&gt;Lab-based tools like Lighthouse also typically do a &amp;quot;cold load&amp;quot; of a webpage as a totally new visitor. This is often the slowest load, but in real life, visitors may have some assets cached if they have visited before, or when they are browsing around the site. New visitors, and tools, also may experience the site differently with cookie banners or other content present to them.&lt;/p&gt;
&lt;p&gt;In short, while lab-based tools can give an indication of potential performance problems and help you debug and iterate, they may not represent how many of your visitors actually experience your website. Use field data for measuring real-world performance, and lab-based tools like Lighthouse for diagnostics of how to improve it. See also the &lt;a href=&quot;https://web.dev/vitals-tools/#when-to-use-lighthouse&quot;&gt;When to use Lighthouse&lt;/a&gt; section.&lt;/p&gt;
&lt;p&gt;Google measures Core Web Vitals through the &lt;a href=&quot;https://developer.chrome.com/docs/crux/&quot; rel=&quot;noopener&quot;&gt;Chrome User Experience Report (CrUX)&lt;/a&gt;. This is a public dataset collected from real Chrome users. It is the backbone of many Google and third-party tools which report a site&#39;s Core Web Vitals.&lt;/p&gt;
&lt;p&gt;CrUX has its limitations, though. It can often tell you &lt;em&gt;when&lt;/em&gt; there is a problem, but often has insufficient data to tell you &lt;em&gt;why&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&quot;collect-your-own-field-data-if-possible&quot;&gt;Collect your own field data if possible &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#collect-your-own-field-data-if-possible&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The best dataset for improving website performance in the field is the one &lt;em&gt;you&lt;/em&gt; build. That starts with collecting field data from your website&#39;s visitors. How you do this depends on the size of your organization, and whether you want to pay for &lt;a href=&quot;https://en.wikipedia.org/wiki/Real_user_monitoring#RUM_software&quot; rel=&quot;noopener&quot;&gt;a third-party solution&lt;/a&gt; or create your own.&lt;/p&gt;
&lt;p&gt;Paid solutions will almost certainly measure Core Web Vitals (and other performance metrics) and usually provide a variety of tools to dig into the resulting data. In large organizations with significant resources, this may be the preferred method.&lt;/p&gt;
&lt;p&gt;However, you may not be part of a large organization—or even one with the means to afford a third-party solution. In these cases, Google&#39;s &lt;a href=&quot;https://github.com/GoogleChrome/web-vitals&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;web-vitals&lt;/code&gt; library&lt;/a&gt; will help you gather &lt;em&gt;all&lt;/em&gt; Web Vitals. However, you&#39;ll be responsible for how that data is reported, stored, and analyzed.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; If you&#39;re building your own metrics collection and reporting system, &lt;a href=&quot;https://web.dev/vitals-field-measurement-best-practices/&quot;&gt;this guide of best practices&lt;/a&gt; is worth a read to avoid common pitfalls. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;If you&#39;re already using Google Analytics, but you haven&#39;t started collecting your own field data, there may be an opportunity for you to use the &lt;code&gt;web-vitals&lt;/code&gt; library to &lt;a href=&quot;https://web.dev/debug-performance-in-the-field/#usage-with-the-web-vitals-javascript-library&quot;&gt;send Web Vitals collected in the field to Google Analytics&lt;/a&gt; and use the &lt;a href=&quot;https://web.dev/vitals-ga4/&quot;&gt;BigQuery exports of GA4&lt;/a&gt; to report on the data.&lt;/p&gt;
&lt;h2 id=&quot;understanding-googles-tools&quot;&gt;Understanding Google&#39;s tools &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#understanding-googles-tools&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Regardless of whether you&#39;re collecting your own field data, there are several Google tools that may be useful in analyzing Core Web Vitals. Before establishing a workflow, a high-level overview of each tool can help you to understand which tools may—or may not—be best for you.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; As you continue, understand that it&#39;s not necessary for you to use &lt;em&gt;all&lt;/em&gt; of the tools in this guide—only those that you believe will help you in improving your website&#39;s Core Web Vitals. &lt;/div&gt;&lt;/aside&gt;
&lt;h3 id=&quot;chrome-user-experience-report-crux&quot;&gt;Chrome User Experience Report (CrUX) &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#chrome-user-experience-report-crux&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;As mentioned previously, CrUX is a public data set of field data gathered from &lt;a href=&quot;https://developer.chrome.com/docs/crux/methodology/#user-eligibility&quot; rel=&quot;noopener&quot;&gt;a segment of real Google Chrome users&lt;/a&gt; from millions of websites. It includes Core Web Vital metrics and other metrics for websites with sufficient traffic.&lt;/p&gt;
&lt;p&gt;CrUX is available as a monthly &lt;a href=&quot;https://developer.chrome.com/docs/crux/bigquery/&quot; rel=&quot;noopener&quot;&gt;BigQuery dataset&lt;/a&gt; at the origin level, or as a &lt;a href=&quot;https://developer.chrome.com/docs/crux/api/&quot; rel=&quot;noopener&quot;&gt;daily API&lt;/a&gt; at the URL or origin-level, provided a URL or origin has enough samples in the CrUX dataset. The BigQuery data is also viewable in an easy to use &lt;a href=&quot;https://developer.chrome.com/docs/crux/dashboard/&quot; rel=&quot;noopener&quot;&gt;CrUX Dashboard&lt;/a&gt; allowing sites to review historical trends for their site.&lt;/p&gt;
&lt;h4 id=&quot;when-to-use-crux&quot;&gt;When to use CrUX &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-to-use-crux&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Even if you gather your own field data, CrUX is still useful. Though CrUX represents a subset of Chrome users, it&#39;s helpful to compare your website&#39;s field data to see how it aligns with its CrUX data. There are advantages and disadvantages to each, which &lt;a href=&quot;https://web.dev/crux-and-rum-differences/&quot;&gt;can result in differences&lt;/a&gt;. If you currently don&#39;t gather &lt;em&gt;any&lt;/em&gt; field data for your website, CrUX is especially valuable to provide a high-level overview—provided your website is represented in its dataset.&lt;/p&gt;
&lt;p&gt;You can use CrUX directly, or via another tool (including those mentioned below). Using the CrUX dataset directly, either via BigQuery or the API, is useful to surface data that is not currently shown in other tools—for example country-level data is often not available on other tools, or to view the &lt;a href=&quot;https://developer.chrome.com/docs/crux/methodology/#metrics&quot; rel=&quot;noopener&quot;&gt;additional metrics in CrUX&lt;/a&gt; which again are often not surfaced in other tooling.&lt;/p&gt;
&lt;h4 id=&quot;when-not-to-use-crux&quot;&gt;When &lt;em&gt;not&lt;/em&gt; to use CrUX &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-not-to-use-crux&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;CrUX only represents Chrome users, and even then, &lt;a href=&quot;https://developer.chrome.com/docs/crux/methodology/#user-eligibility&quot; rel=&quot;noopener&quot;&gt;only a subset of Chrome users&lt;/a&gt;. A full RUM solution can include more experiences across Chrome and other browsers where they support the Web Vital metrics.&lt;/p&gt;
&lt;p&gt;Websites that don&#39;t receive enough traffic are not represented in the CrUX dataset. If this is the case for you, you&#39;ll need to gather your own field data to understand how your website performs in the field, as CrUX won&#39;t be an option. Alternatively, you will need to depend on lab data, but with the limitations that it may not be representative above.&lt;/p&gt;
&lt;p&gt;Since the data CrUX provides is a rolling average over the previous 28 days, it&#39;s not an ideal tool during development, as it will take a fair amount of time for improvements to be reflected in the CrUX dataset.&lt;/p&gt;
&lt;p&gt;Finally, as a public dataset, CrUX is limited to how much information it can make available, and how this data can be queried. Capturing your own RUM data allows you to gather more details (for example, &lt;a href=&quot;https://web.dev/debug-performance-in-the-field/#lcp&quot;&gt;the LCP element&lt;/a&gt;), and slice and dice the data more to identify problems. Do logged in users experience better or worse Core Web Vitals than logged out users? Do users with a slow LCP have a particular LCP element? Which interactions are causing high FID and INP values?&lt;/p&gt;
&lt;h3 id=&quot;pagespeed-insights-psi&quot;&gt;PageSpeed Insights (PSI) &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#pagespeed-insights-psi&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://pagespeed.web.dev/&quot; rel=&quot;noopener&quot;&gt;PSI&lt;/a&gt; is a tool that reports field data from CrUX &lt;em&gt;and&lt;/em&gt; lab from Lighthouse for a given page. See those individual sections for more details.&lt;/p&gt;
&lt;h4 id=&quot;when-to-use-psi&quot;&gt;When to use PSI &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-to-use-psi&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;PSI is great for assessing CrUX performance at the page level or origin-level, for both mobile and desktop users. It&#39;s a good choice for an initial overview of Core Web Vitals for a page or site. It also allows you to easily view Core Web Vitals data for other sites like competitors.&lt;/p&gt;
&lt;p&gt;PSI also provides Lighthouse data, which gives useful recommendations to improve your Core Web Vitals—if the metrics align. Where these do not align, Lighthouse recommendations may be less relevant.&lt;/p&gt;
&lt;p&gt;Since Lighthouse is run from the server, it can form a more consistent baseline than running Lighthouse from DevTools.&lt;/p&gt;
&lt;h4 id=&quot;when-not-to-use-psi&quot;&gt;When &lt;em&gt;not&lt;/em&gt; to use PSI &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-not-to-use-psi&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;PSI is only available for public URLs. It cannot be used on development sites that are not publicly accessible.&lt;/p&gt;
&lt;p&gt;CrUX data is only available when sites meet certain &lt;a href=&quot;https://developer.chrome.com/docs/crux/methodology/#eligibility&quot; rel=&quot;noopener&quot;&gt;eligibility criteria&lt;/a&gt;, including site popularity thresholds. PSI is less useful when CrUX data is not available for a page or origin as it can only show the Lighthouse lab data in these cases.&lt;/p&gt;
&lt;p&gt;Similarly, if you only have origin-level CrUX data rather than the specific URL being tested, then this also limits its usefulness of correlating the origin-level field data to the page-level lab diagnostics. Having the origin-level field data is still very useful information to have as a summary of the site&#39;s performance and the Lighthouse audits may help, but extra caution should be used in this case.&lt;/p&gt;
&lt;p&gt;Finally, where page-level data is available in CrUX, but differs from the Lighthouse lab data, recommendations from Lighthouse may be of limited value. This can happen particularly for &lt;a href=&quot;https://web.dev/optimize-cls/#identifying-post-load-cls-issues&quot;&gt;post-load CLS issues&lt;/a&gt;, and for interactivity Core Web Vitals (FID and INP) where lab-based audits are less useful.&lt;/p&gt;
&lt;h3 id=&quot;search-console&quot;&gt;Search Console &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#search-console&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://search.google.com/search-console/about&quot; rel=&quot;noopener&quot;&gt;Search Console&lt;/a&gt; measures your site&#39;s search traffic and performance, &lt;a href=&quot;https://support.google.com/webmasters/answer/9205520&quot; rel=&quot;noopener&quot;&gt;including Core Web Vitals&lt;/a&gt;. It is only available to site owners who have &lt;a href=&quot;https://support.google.com/webmasters/answer/34592&quot; rel=&quot;noopener&quot;&gt;confirmed their ownership of the site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A valuable feature of Search Console is that it groups similar pages (for example, pages that use the same template) into a single group assessment. Search Console also includes a Core Web Vitals report based on field data from CrUX.&lt;/p&gt;
&lt;h4 id=&quot;when-to-use-search-console&quot;&gt;When to use Search Console &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-to-use-search-console&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Search Console is well-suited for both developers and those in non-developer roles to assess both search and page performance in ways other Google tools don&#39;t. Its presentation of CrUX data and grouping of pages by similarity offers novel insight into how performance improvements impact entire categories of pages.&lt;/p&gt;
&lt;h4 id=&quot;when-not-to-use-search-console&quot;&gt;When &lt;em&gt;not&lt;/em&gt; to use Search Console &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-not-to-use-search-console&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Search Console may not be a fit for projects that use different third-party tools which group pages by similarity, or if a website isn&#39;t represented in the CrUX dataset.&lt;/p&gt;
&lt;p&gt;Page grouping can also be somewhat confusing when the example pages in a group have different characteristics than the rest of the group—for example, if the group fails particular Core Web Vitals overall, but the example pages all seem to pass the same Core Web Vitals. This can happen when a group contains a long tail or seldomly visited pages that may be slower to load, as they&#39;re less likely to be cached. When there are sufficient volumes of these pages in the long tail, they can influence the group&#39;s overall pass rate.&lt;/p&gt;
&lt;h3 id=&quot;lighthouse&quot;&gt;Lighthouse &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#lighthouse&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/docs/lighthouse/overview/&quot; rel=&quot;noopener&quot;&gt;Lighthouse&lt;/a&gt; is a lab tool that provides specific opportunities for improving page performance. &lt;a href=&quot;https://web.dev/lighthouse-user-flows/&quot;&gt;Lighthouse user flows&lt;/a&gt; also allow developers to script interaction flows for performance testing beyond page load.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; Because Lighthouse is a lab tool, and &lt;a href=&quot;https://web.dev/fid/&quot;&gt;First Input Delay (FID)&lt;/a&gt; and &lt;a href=&quot;https://web.dev/inp/&quot;&gt;Interaction to Next Paint (INP)&lt;/a&gt; are field metrics, it reports &lt;a href=&quot;https://web.dev/tbt/&quot;&gt;Total Blocking Time&lt;/a&gt; instead. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/GoogleChrome/lighthouse-ci&quot; rel=&quot;noopener&quot;&gt;Lighthouse-CI&lt;/a&gt; is a related tool that runs Lighthouse during project builds and deploys to assist with performance regression testing. It presents a Lighthouse report along with pull requests, and tracks performance metrics over time.&lt;/p&gt;
&lt;h4 id=&quot;when-to-use-lighthouse&quot;&gt;When to use Lighthouse &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-to-use-lighthouse&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Lighthouse is excellent for finding performance improvement opportunities during development in both local and staging environments. Lighthouse CI is similarly useful in the build and deploy phases to staging and production environments, where performance regression testing is needed to preserve good user experiences.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-bad-bg color-state-bad-text&quot;&gt;&lt;p class=&quot;cluster color-state-bad-text&quot;&gt;&lt;span class=&quot;aside__icon box-block &quot;&gt;&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; role=&quot;img&quot; aria-label=&quot;Error sign&quot;&gt;   &lt;path fill-rule=&quot;evenodd&quot; clip-rule=&quot;evenodd&quot; d=&quot;M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15v-2h2v2h-2zm0-10v6h2V7h-2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;&lt;/span&gt;&lt;strong&gt;Caution&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot; flow&quot;&gt; Don&#39;t rely solely on Lighthouse CI during production deployments, as you may miss performance regressions that you&#39;d otherwise catch in local and staging environments during development with Lighthouse. &lt;/div&gt;&lt;/aside&gt;
&lt;h4 id=&quot;when-not-to-use-lighthouse&quot;&gt;When &lt;em&gt;not&lt;/em&gt; to use Lighthouse &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-not-to-use-lighthouse&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Lighthouse (or Lighthouse CI) &lt;strong&gt;is &lt;em&gt;not&lt;/em&gt; a substitute for field data&lt;/strong&gt;. Lighthouse is primarily a diagnostic tool listing potential issues and best practices from a predefined page load. The recommendations it surfaces may not always match the performance experienced by your users.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-tertiary-box-bg color-tertiary-box-text&quot;&gt;&lt;p class=&quot;cluster &quot;&gt;&lt;span class=&quot;aside__icon box-block &quot;&gt;&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; role=&quot;img&quot; aria-label=&quot;Lightbulb&quot; fill=&quot;currentColor&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;   &lt;path d=&quot;M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;&lt;/span&gt;&lt;strong&gt;Important&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot; flow&quot;&gt; &lt;strong&gt;Always concentrate on field Core Web Vitals over Lighthouse metrics and scores&lt;/strong&gt;. In particular, the Performance Score of Lighthouse is a broad measure of that lab test and &lt;a href=&quot;https://philipwalton.com/articles/my-challenge-to-the-web-performance-community/&quot;&gt;often does not correlate&lt;/a&gt; with field Core Web Vitals. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;While Lighthouse can be used to diagnose production sites through tools like PageSpeed Insights, Lighthouse would ideally be used in development and continuous integration environments to address performance issues before they reach production.&lt;/p&gt;
&lt;h3 id=&quot;web-vitals-extension&quot;&gt;Web Vitals extension &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#web-vitals-extension&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://chrome.google.com/webstore/detail/web-vitals/ahfhijdlegdabablpippeagghigmibma&quot; rel=&quot;noopener&quot;&gt;Web Vitals Chrome extension&lt;/a&gt; is a diagnostic tool that surfaces Core Web Vitals metrics as you browse the web. It also includes CrUX data for the current page if it is represented in the CrUX dataset, and provides &lt;a href=&quot;https://web.dev/debug-cwvs-with-web-vitals-extension/&quot;&gt;debugging information&lt;/a&gt; to help you identify Core Web Vitals performance problems.&lt;/p&gt;
&lt;h4 id=&quot;when-to-use-the-web-vitals-extension&quot;&gt;When to use the Web Vitals extension &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-to-use-the-web-vitals-extension&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The Web Vitals extension can be used by anyone in any role to assess a page&#39;s Core Web Vitals at all points of the page lifecycle. It is useful as a &amp;quot;live&amp;quot; view of performance as you interact with the page to attempt to uncover performance issues—particularly for post-load issues you might see with the CLS and INP metrics.&lt;/p&gt;
&lt;h4 id=&quot;when-not-to-use-the-web-vitals-extension&quot;&gt;When &lt;em&gt;not&lt;/em&gt; to use the Web Vitals extension &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-not-to-use-the-web-vitals-extension&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The Web Vitals extension isn&#39;t a holistic assessment of page performance. In addition, the metrics it reports are highly dependent the environment in which it runs, and developers often have higher powered machines or access to faster networks.&lt;/p&gt;
&lt;h3 id=&quot;the-performance-panel-in-chrome-devtools&quot;&gt;The Performance panel in Chrome DevTools &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#the-performance-panel-in-chrome-devtools&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/docs/devtools/&quot; rel=&quot;noopener&quot;&gt;Chrome DevTools&lt;/a&gt; is a collection of in-browser development tools, including the &lt;a href=&quot;https://developer.chrome.com/docs/devtools/#performance&quot; rel=&quot;noopener&quot;&gt;Performance panel&lt;/a&gt;. The Performance panel is a lab tool that profiles all page activity during page load or a recorded time period. It offers deep insight into everything it observes across dimensions such as network, rendering, painting, and scripting activity, as well as a page&#39;s Core Web Vitals.&lt;/p&gt;
&lt;h4 id=&quot;when-to-use-the-performance-panel&quot;&gt;When to use the Performance panel &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-to-use-the-performance-panel&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The Performance panel should be used by developers during development to gain deep insight into page performance. This is particularly useful to debug responsiveness issues affecting FID or INP. Once a poorly responding interaction is identified and repeatable, the Performance panel can provide a wealth of data as to what is going on in the browser to help understand the issue, from main thread blocking, to JavaScript call stacks, to rendering work.&lt;/p&gt;
&lt;h4 id=&quot;when-not-to-use-the-performance-panel&quot;&gt;When &lt;em&gt;not&lt;/em&gt; to use the Performance panel &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#when-not-to-use-the-performance-panel&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The Performance panel is a developer tool that provides lab data only. It&#39;s not a substitute for field data. It contains a lot of debugging information, but because of that, it may not be easy to use for novice developers or those in non-developer roles.&lt;/p&gt;
&lt;h2 id=&quot;a-three-step-workflow-for-ensuring-your-websites-core-web-vitals-stay-healthy&quot;&gt;A three step workflow for ensuring your website&#39;s Core Web Vitals stay healthy &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#a-three-step-workflow-for-ensuring-your-websites-core-web-vitals-stay-healthy&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When working to improve the user experience, it&#39;s best to think of the process as a continuous cycle. For improving Core Web Vitals and other performance metrics, one approach could be:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Evaluate website health and identify pain points.&lt;/li&gt;
&lt;li&gt;Debug and optimize.&lt;/li&gt;
&lt;li&gt;Monitor with continuous integration tools to catch and prevent regressions.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A diagram of a three step process, rendered as a continuous cycle. The first step reads &amp;#x27;Evaluate website health and identify paint points&amp;#x27;, the second &amp;#x27;Debug and optimize&amp;#x27;, and the third &amp;#x27;Monitor and continuous development&amp;#x27;.&quot; decoding=&quot;async&quot; height=&quot;465&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/9k3o679FUq63WT1kbxHe.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;h3 id=&quot;step-1-evaluate-website-health-and-identify-opportunities-for-improvement&quot;&gt;Step 1: Evaluate website health and identify opportunities for improvement &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#step-1-evaluate-website-health-and-identify-opportunities-for-improvement&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It is best to start with field data to evaluate website health.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;a href=&quot;https://pagespeed.web.dev/&quot; rel=&quot;noopener&quot;&gt;PageSpeed Insights&lt;/a&gt; to view overall Core Web Vitals experience metrics on the origin, and specific information on an individual URL.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://search.google.com/search-console/about&quot; rel=&quot;noopener&quot;&gt;Search Console&lt;/a&gt; can be useful to identify pages which need improvement where its page grouping feature works well for your site.&lt;/li&gt;
&lt;li&gt;If you have RUM data, then that is often the best option to be able to identify particular pages or traffic segments with issues.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Whether you analyze field data you collect yourself or CrUX data, this first step is vital. If you&#39;re not gathering field data, CrUX data may be enough to guide you—again, provided your website is represented in the dataset.&lt;/p&gt;
&lt;h4 id=&quot;analyze-site-performance-with-pagespeed-insights&quot;&gt;Analyze site performance with PageSpeed Insights &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#analyze-site-performance-with-pagespeed-insights&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A screenshot of how PageSpeed Insights portrays CrUX data for a URL&amp;#x27;s Core Web Vitals. Each of the Core Web Vitals is displayed separately, while grouping each Core Web Vital in the &amp;#x27;Good&amp;#x27;, &amp;#x27;Needs Improvement&amp;#x27;, and &amp;#x27;Poor&amp;#x27; thresholds for the last 28 days.&quot; decoding=&quot;async&quot; height=&quot;477&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/YEe3RQwgIWgQTHFV5sc0.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;PageSpeed Insights displays the CrUX data covering the last 28 days of user experience data at the 75th percentile. This means that if 75% of user experiences meet the &lt;a href=&quot;https://web.dev/defining-core-web-vitals-thresholds/&quot;&gt;threshold set for a given metric&lt;/a&gt;, then the experience is considered &amp;quot;good&amp;quot;.&lt;/p&gt;
&lt;p&gt;If you have a specific page in mind to look at the performance of, then use that. For an overall view of a site when you first start optimizing, you may wish to start with the home page, as it is typically one of the most popular pages on many sites.&lt;/p&gt;
&lt;p&gt;Concentrate on the &lt;strong&gt;what your real users are experiencing&lt;/strong&gt; section of PSI initially. You will see up to four views of the data: mobile and desktop for the URL entered and the whole origin. Compare these and see how they differ. Mobile is typically less performant than desktop since it is a more resource-constrained device operating under potentially less stable network conditions. If the URL and origin data are significantly different, then try to understand why: home pages are often the first pages visited (that is, a landing page) so can be slower than the origin users take the full brunt of an unprimed browser cache. Subsequent pages will likely load faster, as any shared assets will be cached, bringing down the aggregate origin-level data.&lt;/p&gt;
&lt;p&gt;PSI also shows all three Core Web Vitals (LCP, CLS, and FID) and the pending INP metric, plus the diagnostic TTFB and FCP metrics. Are any of the Core Web Vitals failing, and by how much? This will indicate where to concentrate your efforts.&lt;/p&gt;
&lt;p&gt;Understand the relationships between these numbers—particularly for LCP. If LCP is slow, as it is in this example, then look at TTFB and FCP which are both milestones to that metric. In this example we have a 1.8 second TTFB, which is going to make it very tough to meet the 2.5 second recommended threshold for good LCP. This suggests either a slow backend (server issues or a lack of CDN), slower networks, or redirects delaying the first HTML bytes. Look at the &lt;a href=&quot;https://web.dev/optimize-ttfb/&quot;&gt;Optimize TTFB guide&lt;/a&gt; for more information. FCP takes another second on top of that, which again may be indicative of slower networks. LCP is not long after FCP in this example suggesting the LCP resource is well optimized once the page itself loads.&lt;/p&gt;
&lt;p&gt;For CLS, look at the CrUX CLS and the Lighthouse CLS scores to see if this is a load CLS issue (which Lighthouse will catch and advise on), or a post-load CLS issue that Lighthouse won&#39;t catch. More for information &lt;a href=&quot;https://web.dev/optimize-cls/#understanding-where-your-shifts-are-coming-from&quot;&gt;see the Optimize CLS guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For responsiveness, look at the FID and INP scores. Look at the TBT audits in Lighthouse to see if a lot of JavaScript processing is happening during the initial page load, which is likely to impact INP. INP can be a tricky metric to improve, so consult the &lt;a href=&quot;https://web.dev/optimize-inp/&quot;&gt;Optimize INP guide&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h4 id=&quot;identify-poorly-performing-pages-in-search-console&quot;&gt;Identify poorly performing pages in Search Console &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#identify-poorly-performing-pages-in-search-console&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A screenshot of a Core Web Vitals report in Search Console. The report is broken down into Desktop and Mobile categories, with line graphs detailing the distribution of pages with Core Web Vitals in the &amp;#x27;Good&amp;#x27;, &amp;#x27;Needs Improvement&amp;#x27;, and &amp;#x27;Poor&amp;#x27; categories over time.&quot; decoding=&quot;async&quot; height=&quot;639&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/DWdv878oyTdEWQViRh06.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;While PSI is useful when you have a specific URL you want to test or the site as a whole, Search Console can help target your efforts to particular types of pages. This is particularly useful if many pages share common themes or technologies and Search Console can successfully identify these.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://support.google.com/webmasters/answer/9205520&quot; rel=&quot;noopener&quot;&gt;Core Web Vitals report in Search Console&lt;/a&gt; shows the big picture of your website&#39;s performance, but you can still drill down into specific pages that need attention. With Search Console, you can also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identify individual page groups that need improvement, and those that currently provide a good user experience.&lt;/li&gt;
&lt;li&gt;Get granular data on performance by URL grouped by status, metric, and groups of similar web pages (such as product detail pages on an e-commerce website).&lt;/li&gt;
&lt;li&gt;Get detailed reports that bucket URLs in each user experience quality category for both mobile and desktop.&lt;/li&gt;
&lt;/ul&gt;
&lt;aside class=&quot;aside flow bg-state-bad-bg color-state-bad-text&quot;&gt;&lt;p class=&quot;cluster color-state-bad-text&quot;&gt;&lt;span class=&quot;aside__icon box-block &quot;&gt;&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; role=&quot;img&quot; aria-label=&quot;Error sign&quot;&gt;   &lt;path fill-rule=&quot;evenodd&quot; clip-rule=&quot;evenodd&quot; d=&quot;M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15v-2h2v2h-2zm0-10v6h2V7h-2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;&lt;/span&gt;&lt;strong&gt;Caution&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot; flow&quot;&gt; The data in Search Console is different from what&#39;s shown in the PageSpeed Insights origin view or the CrUX dashboard. This is because Search Console organizes information by URL, whereas PageSpeed Insights origin view and CrUX Dashboard organizes data by origin. If you have few poorly performing URLs, but those URLs receive a large portion of overall traffic, Search Console will only show a few poorly performing URLs while CrUX dashboard will show a high percentage of poor user experiences. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;Once you have some specific pages to look at, you can use PSI as explained previously to gather further understanding of the issues for those pages.&lt;/p&gt;
&lt;h3 id=&quot;step-2-debug-and-optimize&quot;&gt;Step 2: Debug and optimize &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#step-2-debug-and-optimize&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In step 1, you should have identified pages which require performance improvements, and also which of the Core Web Vitals metrics you want to improve. You can use the Google tooling to get further information to understand the root cause to identify the issue.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run a &lt;a href=&quot;https://web.dev/vitals-tools/#Lighthouse&quot;&gt;Lighthouse&lt;/a&gt; audit to get page-level guidance&lt;/li&gt;
&lt;li&gt;Use the &lt;a href=&quot;https://web.dev/vitals-tools/#web-vitals-extension&quot;&gt;Web Vitals extension&lt;/a&gt; to analyze Core Web Vitals in real time.&lt;/li&gt;
&lt;li&gt;Use the &lt;a href=&quot;https://web.dev/vitals-tools/#the-performance-panel-in-chrome-devtools&quot;&gt;Performance panel&lt;/a&gt; in Chrome DevTools to debug performance issues and test code changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more detailed guidance, see these guides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/optimize-lcp/&quot;&gt;Optimizing LCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/optimize-cls/&quot;&gt;Optimizing CLS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/optimize-fid/&quot;&gt;Optimizing FID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/optimize-inp/&quot;&gt;Optimizing INP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;uncover-opportunities-with-lighthouse&quot;&gt;Uncover opportunities with Lighthouse &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#uncover-opportunities-with-lighthouse&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;PageSpeed Insights runs Lighthouse for you, but for local development it is also possible to run Lighthouse from Chrome DevTools, which is useful to validate fixes locally.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A screenshot of a Lighthouse report within Chrome DevTools. The report breaks down scores across five categories, with the report focused on the &amp;#x27;Performance&amp;#x27; category, with results at the bottom of the report window.&quot; decoding=&quot;async&quot; height=&quot;526&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/k6HffrY6tUbreyzi2mVk.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;A key point is to validate that the Lighthouse audit replicates the issues you are trying to solve (for example, slow LCP, or CLS issues). Out of the box, Lighthouse only assesses the user experience during page load. Since it&#39;s a lab tool, it also excludes FID and INP in favor of TBT.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-bad-bg color-state-bad-text&quot;&gt;&lt;p class=&quot;cluster color-state-bad-text&quot;&gt;&lt;span class=&quot;aside__icon box-block &quot;&gt;&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; role=&quot;img&quot; aria-label=&quot;Error sign&quot;&gt;   &lt;path fill-rule=&quot;evenodd&quot; clip-rule=&quot;evenodd&quot; d=&quot;M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15v-2h2v2h-2zm0-10v6h2V7h-2z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;&lt;/span&gt;&lt;strong&gt;Caution&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot; flow&quot;&gt; By default, Lighthouse simulates a mid-tier mobile device on a throttled slow 4G connection. This may find issues that wouldn&#39;t ordinarily appear on high-speed devices and fast internet connections. This simulated throttling may not be representative of the variety of user experiences among your website&#39;s user base at the 75th percentile. However, these metrics are an indicator of where performance problems exist, and may translate into better performance overall in the field if the problems Lighthouse finds are addressed. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;When the Lighthouse metrics suggest a similar problem as the one you are trying to solve, the wealth of information in its audits can help identify issues and suggest solutions.&lt;/p&gt;
&lt;p&gt;You can filter the audits to just the Core Web Vitals you are interested in to focus on fixes for issues related to a specific metric:&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;Lighthouse filter options for key metrics&quot; decoding=&quot;async&quot; height=&quot;100&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 700px) 700px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/wae09J8FYUe0PvFBkH4b.png?auto=format&amp;w=1400 1400w&quot; width=&quot;700&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;For FID and INP, use the TBT audits to identify issues that can potentially affect those metrics, but be aware that without interactions, Lighthouse is limited in how much it can diagnose.&lt;/p&gt;
&lt;h4 id=&quot;analyze-in-real-time-with-the-web-vitals-extension&quot;&gt;Analyze in real time with the Web Vitals extension &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#analyze-in-real-time-with-the-web-vitals-extension&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The Web Vitals Chrome extension shows Core Web Vitals in real time during page load &lt;em&gt;and&lt;/em&gt; while browsing a page. Because of this, it can capture FID and INP as well as layout shifts that occur after load. The debugging options show more detailed information on each metric:&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;Web Vitals Extension console logging showing INP target, event type, and breakdown&quot; decoding=&quot;async&quot; height=&quot;448&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/kxh8TRS2585OJTZJmWmt.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;It&#39;s best to think of the Web Vitals extension as a spot-checking tool to find performance issues, not a comprehensive debugging tool—that&#39;s a job for the Performance panel in Chrome DevTools.&lt;/p&gt;
&lt;h4 id=&quot;drill-down-with-the-performance-panel&quot;&gt;Drill down with the Performance panel &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#drill-down-with-the-performance-panel&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The Performance panel in Chrome DevTools profiles all page behavior during a recorded period of time.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;ALT_TEXT_HERE&quot; decoding=&quot;async&quot; height=&quot;466&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/W3z1f5ZkBJSgL1V1IfloTIctbIF3/JmVcoLckgeukluuJONDe.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;Key timings—such as LCP, for example—are shown in the Timings track. Click on these for more details.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Layout Shifts&lt;/strong&gt; track highlights layout shifts and clicking on these provides more details about the elements that shifted for debugging CLS.&lt;/p&gt;
&lt;p&gt;Long Tasks (that can lead to FID and INP issues) are also highlighted with red triangles.&lt;/p&gt;
&lt;p&gt;These features—as well as information in other parts of the &lt;a href=&quot;https://developer.chrome.com/docs/devtools/#performance&quot; rel=&quot;noopener&quot;&gt;Performance panel&lt;/a&gt;—can help you determine whether fixes are having any effect on a page&#39;s Core Web Vitals.&lt;/p&gt;
&lt;h4 id=&quot;debug-core-web-vitals-in-the-field&quot;&gt;Debug Core Web Vitals in the field &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#debug-core-web-vitals-in-the-field&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Lab tools can&#39;t always identify the cause of all Core Web Vitals issues affecting your users. This is one reason why it&#39;s so important to collect your own field data, as it takes factors into account that lab data cannot.&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://web.dev/debug-performance-in-the-field/&quot;&gt;debug performance in the field&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h3 id=&quot;step-3-monitor-for-changes&quot;&gt;Step 3: Monitor for changes &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#step-3-monitor-for-changes&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A collection of icons for Google tools. From left to right, the icons represent &amp;#x27;CrUX on BigQuery&amp;#x27;, &amp;#x27;CrUX API&amp;#x27;, &amp;#x27;PSI API&amp;#x27;, &amp;#x27;web-vitals.js&amp;#x27;, with &amp;#x27;Lighthouse CI&amp;#x27; at the far right.&quot; decoding=&quot;async&quot; height=&quot;185&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/LqEnonUKd8j3QGK3Ax7w.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;Once you have fixed any issues, you want to ensure they have the desired effect and that new issues do not disrupt your Core Web Vitals. This requires monitoring for performance issues as part of developer workflow to prevent performance issues being released to production, and monitoring the field data regularly to ensure this is the case.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; &lt;a href=&quot;https://youtu.be/YJGCZCaIZkQ?t=112&quot;&gt;Research by Google&lt;/a&gt; has shown that most performance improvements tend to regress within six months. A website needs continuous monitoring in both the lab &lt;em&gt;and&lt;/em&gt; the field to identify worsening trends in Core Web Vitals and other performance metrics to avoid regressions. &lt;/div&gt;&lt;/aside&gt;
&lt;h4 id=&quot;monitor-for-performance-requisitions-in-continuous-integration-ci-environments&quot;&gt;Monitor for performance requisitions in Continuous Integration (CI) environments &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#monitor-for-performance-requisitions-in-continuous-integration-ci-environments&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/GoogleChrome/lighthouse-ci&quot; rel=&quot;noopener&quot;&gt;Lighthouse-CI&lt;/a&gt; allows you to automatically run Lighthouse audits on code commits to prevent performance regressions entering code. This can check performance timings (which &lt;a href=&quot;https://developers.google.com/web/tools/lighthouse/variability&quot; rel=&quot;noopener&quot;&gt;are subject to variability&lt;/a&gt;), or for just &lt;a href=&quot;https://developer.chrome.com/docs/lighthouse/performance/&quot; rel=&quot;noopener&quot;&gt;the performance audits&lt;/a&gt;, as a linting tool to prevent bad practices in the code.&lt;/p&gt;
&lt;h4 id=&quot;view-website-health-trends-with-field-data&quot;&gt;View website health trends with field data &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#view-website-health-trends-with-field-data&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;While you should aim to catch and fix all performance issues before they make it to production, monitoring your field data via RUM is essential to find any that slip through. There are many commercial RUM products available that can help with this. The &lt;a href=&quot;https://github.com/GoogleChrome/web-vitals&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;web-vitals&lt;/code&gt;&lt;/a&gt; JavaScript library can automate a website&#39;s field data collection, and optionally use this data to power custom dashboards and alerting systems.&lt;/p&gt;
&lt;p&gt;For sites without a RUM solution, you can &lt;a href=&quot;https://developer.chrome.com/docs/crux/dashboard/&quot; rel=&quot;noopener&quot;&gt;use the CrUX Dashboard&lt;/a&gt; as a basic trend analysis of field data. It reports the following for sites in CrUX:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Site overview&lt;/strong&gt;, which segments Core Web Vitals into desktop and mobile device types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Historical trend by metric type&lt;/strong&gt;, which is a distribution of metrics over time for each available monthly release of CrUX report data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User demographics&lt;/strong&gt;, which illustrates the distribution of page views across an entire origin for users in each demographic including device and &lt;a href=&quot;https://developer.mozilla.org/docs/Glossary/Effective_connection_type&quot; rel=&quot;noopener&quot;&gt;effective connection&lt;/a&gt; types.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A screenshot of the CrUX dashboard. The dashboard breaks down LCP, FID, and CLS into desktop and mobile categories, with each category showing the distribution of values that lie within &amp;#x27;Good&amp;#x27;, &amp;#x27;Needs Improvement&amp;#x27; and &amp;#x27;Poor&amp;#x27; thresholds for the previous month.&quot; decoding=&quot;async&quot; height=&quot;837&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/jL3OLOhcWUQDnR4XjewLBx4e3PC3/oF2PQELFtdICPN10aZge.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;The CrUX Dashboard is based on the &lt;a href=&quot;https://developer.chrome.com/blog/chrome-ux-report-bigquery/&quot; rel=&quot;noopener&quot;&gt;CrUX BigQuery dataset&lt;/a&gt;, which is updated once a month. This can be a good reminder to regularly check in on your Core Web Vitals.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-tertiary-box-bg color-tertiary-box-text&quot;&gt;&lt;p class=&quot;cluster &quot;&gt;&lt;span class=&quot;aside__icon box-block &quot;&gt;&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; role=&quot;img&quot; aria-label=&quot;Lightbulb&quot; fill=&quot;currentColor&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;   &lt;path d=&quot;M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z&quot;&gt;&lt;/path&gt; &lt;/svg&gt;&lt;/span&gt;&lt;strong&gt;Important&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot; flow&quot;&gt; Even if your website is represented in CrUX, you should still collect your own field data, since CrUX doesn&#39;t include &lt;em&gt;all&lt;/em&gt; users of Chrome or even other browsers—but it&#39;s certainly a good place to start in the absence of any field data. &lt;/div&gt;&lt;/aside&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/vitals-tools/#conclusion&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ensuring fast and delightful user experiences requires a performance-first mindset and adoption of a workflow to ensure progress. With the right tools and processes to audit, debug, and monitor, building great user experiences and staying within the thresholds defined for good Core Web Vitals is within your reach.&lt;/p&gt;
</content>
    <author>
      <name>Barry Pollard</name>
    </author><author>
      <name>Antoine Bisch</name>
    </author><author>
      <name>Garima Mimani</name>
    </author><author>
      <name>Addy Osmani</name>
    </author><author>
      <name>Elizabeth Sweeny</name>
    </author>
  </entry>
  
  <entry>
    <title>Keeping third-party scripts under control</title>
    <link href="https://web.dev/controlling-third-party-scripts/"/>
    <updated>2021-04-22T00:00:00Z</updated>
    <id>https://web.dev/controlling-third-party-scripts/</id>
    <content type="html" mode="escaped">&lt;p&gt;Third-party scripts, or &amp;quot;tags&amp;quot; can be a source of performance problems on your site,
and therefore a target for optimization.
However, before you start optimizing the tags you have added,
make sure that you are not optimizing tags you don&#39;t even need.
This article shows you how to assess requests for new tags,
and manage and review existing ones.&lt;/p&gt;
&lt;p&gt;When discussing third-party tags,
the conversation often quickly moves to performance problems,
losing sight of the foundations of what the &amp;quot;core&amp;quot; role of these tags are.
They provide a wide range of useful functionality,
making the web
&lt;a href=&quot;https://web.dev/optimizing-content-efficiency-loading-third-party-javascript/&quot;&gt;more dynamic, interactive, and interconnected&lt;/a&gt;.
However, third-party tags can be added by different teams across the organization
and are often forgotten about over time.
People move on, contracts expire, or the results are yielded,
but the teams never get back in touch to have the scripts removed.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; In the article &lt;a href=&quot;https://medium.com/the-telegraph-engineering/improving-third-party-web-performance-at-the-telegraph-a0a1000be5&quot;&gt;Improving Third-Party Web Performance&lt;/a&gt;, the web team at The Telegraph removed old tags where they could not identify the requester, deciding that if the tags were missed the responsible party would get in touch. However, no one ever did. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;Before you start to think about third-party tag script execution,
or which tags can be
&lt;a href=&quot;https://web.dev/codelab-optimize-third-party-javascript/&quot;&gt;deferred, lazy-loaded or preconnected&lt;/a&gt;
from a technical lens,
there&#39;s an opportunity to govern which tags are added to a site/page from an organizational point of view.
A common theme with websites that are being slowed down due to vast amounts of third-party tags,
is this part of the website is not owned by a single person or team,
and therefore falls between the cracks.
There&#39;s nothing more frustrating than optimizing your website,
being happy with the performance in a staging environment,
only for the speed to regress in production because of tags that are being added.
Implementing a &amp;quot;vetting process&amp;quot; for third-party tags can help prevent this,
by building a workflow that creates cross-functional accountability and responsibility for these tags.&lt;/p&gt;
&lt;p&gt;The manner in which you vet third-party tags depends solely on the organisation,
its structure and its current processes.
It could be as basic as having a single team who govern and act as the gatekeeper
for analysing tags before they are added.
Or more advanced and formal,
for example by providing a form to teams to submit requests for a tag.
This might ask for context in terms of why it needs to be on the website,
for how long it should be present,
and what benefit it would bring to the business.&lt;/p&gt;
&lt;h2 id=&quot;tag-governance-process&quot;&gt;Tag governance process &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/controlling-third-party-scripts/#tag-governance-process&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;However you choose to vet tags within your organization,
the following stages should be considered as part of the lifecycle of a tag.&lt;/p&gt;
&lt;h3 id=&quot;compliance&quot;&gt;Compliance &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/controlling-third-party-scripts/#compliance&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;img alt=&quot;Five arrows, with the first step of &amp;#x27;Compliance&amp;#x27; completed.&quot; decoding=&quot;async&quot; height=&quot;67&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/33aRnqMUCnbTSvaw5h0m.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;Before any tag is added onto a page,
check that it has been thoroughly vetted by a legal team to ensure it passes all compliance requirements for it to be present.
This might include checking that the tag is compliant with the &lt;a href=&quot;https://iapp.org/news/a/what-you-must-know-about-third-parties-under-the-gdpr-ccpa/&quot; rel=&quot;noopener&quot;&gt;EU General Data Protection Regulation (GDPR),
and California Consumer Privacy Act (CCPA)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is critical,
if there is any doubt with this step it needs to be addressed
before assessing the tag from a performance point of view.&lt;/p&gt;
&lt;h3 id=&quot;required&quot;&gt;Required &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/controlling-third-party-scripts/#required&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;img alt=&quot;Five arrows, with the first two steps of &amp;#x27;Compliance&amp;#x27; and &amp;#x27;Required&amp;#x27; completed.&quot; decoding=&quot;async&quot; height=&quot;60&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kX91VwuEJzBBdf76HIm9.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;The second step is to question whether a specific tag is needed on the page.
Consider the following discussion points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is the tag actively being used? If not, can it be removed?&lt;/li&gt;
&lt;li&gt;If the tag is loading sitewide,
is this necessary?
For example, if we&#39;re analysing an A/B testing suite and you are currently only testing on Landing Pages,
can we only drop the tag on this page type?&lt;/li&gt;
&lt;li&gt;Can we add further logic to this, can we detect if there is a live A/B test?
If so, allow the tag to be added, but if not ensure that it is not present.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ownership&quot;&gt;Ownership &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/controlling-third-party-scripts/#ownership&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;img alt=&quot;Five arrows, with the first three steps of &amp;#x27;Compliance&amp;#x27;, &amp;#x27;Required&amp;#x27;, and &amp;#x27;Ownership&amp;#x27; completed.&quot; decoding=&quot;async&quot; height=&quot;62&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/VsE2wzqT56RJ7Yl7wx2P.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;Having a  clear person or team as an owner of a tag,
helps to proactively keep track of tags.
Usually this would be whomever has added the tag. By having an assignee next to the tag,
this will ensure reviews and audits in the future can be conducted to re-visit whether the tag is required.&lt;/p&gt;
&lt;h3 id=&quot;purpose&quot;&gt;Purpose &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/controlling-third-party-scripts/#purpose&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;img alt=&quot;Five arrows, with the first four steps of &amp;#x27;Compliance&amp;#x27;, &amp;#x27;Required&amp;#x27;, &amp;#x27;Ownership&amp;#x27;, and &amp;#x27;Purpose&amp;#x27; completed.&quot; decoding=&quot;async&quot; height=&quot;58&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/kKJCySoXMCTPjrID1CVg.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;The fourth step begins to create cross-functional accountability and responsibility
by ensuring people understand why the tag is added to the page.
It&#39;s important for there to be a cross-functional understanding of what each tag is bringing to the website,
and why it is being used.
For example, if the tag is recording user session actions to allow personalization,
do all teams know why this should be present?&lt;/p&gt;
&lt;p&gt;Furthermore, have there been any commercial vs performance trade-off discussions?
If there is a tag that is deemed as &amp;quot;required&amp;quot; because it brings in revenue,
has there been an analysis to the potential revenue lost through speed regression&lt;/p&gt;
&lt;h3 id=&quot;review&quot;&gt;Review &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/controlling-third-party-scripts/#review&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;img alt=&quot;Five arrows, with all five steps of &amp;#x27;Compliance&amp;#x27;, &amp;#x27;Required&amp;#x27;, &amp;#x27;Ownership&amp;#x27;, &amp;#x27;Purpose&amp;#x27;, and &amp;#x27;Review&amp;#x27; completed.&quot; decoding=&quot;async&quot; height=&quot;61&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/txmJbO1xdLzfo3PYsDgZ.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;The fifth, final and arguably most important step is to ensure tags are being reviewed on a regular basis.
This should be dependent on the size of the website,
the number of tags that are on the site,
and their turnaround time (e.g. weekly, monthly, quarterly).
This should be treated in the same manner as optimizing other website assets (JS, CSS, images, etc.)
and proactively checked on a regular basis.
Failure to review could lead to a &amp;quot;bloated&amp;quot; tag manager,
which slows down the pages.
It can be a complex task to revert back to being performant,
while not regressing the required functionality on the page&lt;/p&gt;
&lt;img alt=&quot;Five arrows, with all five steps of &amp;#x27;Compliance&amp;#x27;, &amp;#x27;Required&amp;#x27;, &amp;#x27;Ownership&amp;#x27;, &amp;#x27;Purpose&amp;#x27;, and &amp;#x27;Review&amp;#x27; completed. Indicating that these are all steps in the performance vetting process.&quot; decoding=&quot;async&quot; height=&quot;305&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/ZDZVuXt6QqfXtxkpXcPGfnygYjd2/TqyTENFItXjxfEDHLsad.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;The vetting process should leave you with a final list
of tags which are classified as needed for a specific page.
At this stage, you can then delve into
&lt;a href=&quot;https://web.dev/codelab-optimize-third-party-javascript/&quot;&gt;technical optimisation approaches&lt;/a&gt;.
This also opens up the opportunity to define the number of tags in this final list within a
&lt;a href=&quot;https://web.dev/your-first-performance-budget/&quot;&gt;performance budget&lt;/a&gt;,
which can be monitored within
&lt;a href=&quot;https://web.dev/lighthouse-ci/#overview&quot;&gt;Lighthouse CI&lt;/a&gt;
and incorporated into performance-specific goal setting.
For example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If we stick to &amp;lt;5 tags on our Landing Pages along with our own optimized JS,
we&#39;re confident the
&lt;a href=&quot;https://web.dev/tbt/&quot;&gt;Total Blocking Time (TBT)&lt;/a&gt; can hit &#39;good&#39; in the
&lt;a href=&quot;https://web.dev/vitals/&quot;&gt;Core Web Vitals&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <author>
      <name>Chris Anstey</name>
    </author><author>
      <name>Antoine Bisch</name>
    </author>
  </entry>
  
  <entry>
    <title>Automating audits with AutoWebPerf</title>
    <link href="https://web.dev/autowebperf/"/>
    <updated>2020-12-09T00:00:00Z</updated>
    <id>https://web.dev/autowebperf/</id>
    <content type="html" mode="escaped">&lt;h2 id=&quot;what-is-autowebperf-awp&quot;&gt;What is AutoWebPerf (AWP)? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/autowebperf/#what-is-autowebperf-awp&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/GoogleChromeLabs/AutoWebPerf&quot; rel=&quot;noopener&quot;&gt;AutoWebPerf&lt;/a&gt; (AWP) is a
modular tool that enables automatic gathering of performance data from multiple
sources. Currently there are &lt;a href=&quot;https://web.dev/vitals-tools/&quot;&gt;many tools
available&lt;/a&gt; to measure website performance for
different scopes (&lt;a href=&quot;https://web.dev/how-to-measure-speed/#lab-data-vs-field-data&quot;&gt;lab and
field&lt;/a&gt;), such as
Chrome UX Report, PageSpeed Insights, or WebPageTest. AWP offers integration
with various audit tools with a simple setup so you can continuously monitor the
site performance in one place.&lt;/p&gt;
&lt;p&gt;The release of &lt;a href=&quot;https://web.dev/vitals/&quot;&gt;Web Vitals&lt;/a&gt; guidance means that close
and active monitoring of web pages is becoming increasingly important. The
engineers behind this tool have been doing performance audits for years and they
created AWP to automate a manual, recurring, and time consuming part of their
daily activities. Today, AWP has reached a level of maturity and it&#39;s ready to
be shared broadly so anyone can benefit from the automation it brings.&lt;/p&gt;
&lt;p&gt;The tool is accessible on the
&lt;a href=&quot;https://github.com/GoogleChromeLabs/AutoWebPerf&quot; rel=&quot;noopener&quot;&gt;AutoWebPerf&lt;/a&gt; public repository
on GitHub.&lt;/p&gt;
&lt;h2 id=&quot;what-is-awp-for&quot;&gt;What is AWP for? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/autowebperf/#what-is-awp-for&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Although several tools and APIs are available to monitor the performance of web
pages, most of them expose data measured at a specific time. To adequately
monitor a website and maintain good performance of key pages, it&#39;s recommended
to continuously take measurements of &lt;a href=&quot;https://web.dev/vitals/#core-web-vitals&quot;&gt;Core Web
Vitals&lt;/a&gt; over time and observe trends.&lt;/p&gt;
&lt;p&gt;AWP makes that easier by providing an engine and pre-built API integrations
which can be programmatically configured to automate recurrent queries to
various performance monitoring APIs.&lt;/p&gt;
&lt;p&gt;For example, with AWP, you can set a daily test on your home page to capture the
field data from &lt;a href=&quot;https://developer.chrome.com/blog/chrome-ux-report-api/&quot; rel=&quot;noopener&quot;&gt;CrUX API&lt;/a&gt; and lab data
from a
&lt;a href=&quot;https://pagespeed.web.dev/&quot; rel=&quot;noopener&quot;&gt;Lighthouse report from PageSpeed Insights&lt;/a&gt;.
This data can be written and stored over time, for example, in &lt;a href=&quot;https://www.google.co.uk/sheets/about/&quot; rel=&quot;noopener&quot;&gt;Google
Sheets&lt;/a&gt; and then visualised in the
&lt;a href=&quot;https://datastudio.google.com/c/u/0/navigation/reporting&quot; rel=&quot;noopener&quot;&gt;Data Studio dashboard&lt;/a&gt;.
AWP automates the heavy-lifting part of the entire process, making it a great
solution to follow lab and field trends over time. See &lt;a href=&quot;https://web.dev/autowebperf/#data-studio&quot;&gt;Visualising audit
results in Data Studio&lt;/a&gt; below for more details).&lt;/p&gt;
&lt;h2 id=&quot;architecture-overview&quot;&gt;Architecture overview &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/autowebperf/#architecture-overview&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AWP is a modular-based library with three different types of modules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;engine&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;connector&lt;/strong&gt; modules&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gatherer&lt;/strong&gt; modules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The engine takes a list of tests from a connector (for example, from a
local CSV file), runs performance audits through selected gatherers (such as
PageSpeed Insights), and writes results to the output connector (for example,
Google Sheets).&lt;/p&gt;
&lt;img alt=&quot;A diagram of AWP&amp;#x27;s architecture.&quot; decoding=&quot;async&quot; height=&quot;439&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/admin/GqufPfzbuslrT4st1FmP.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;p&gt;AWP comes with a number of pre-implemented gatherers and connectors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pre-implemented gatherers:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/chrome-ux-report-api/&quot; rel=&quot;noopener&quot;&gt;CrUX API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/blog/chrome-ux-report-bigquery/&quot; rel=&quot;noopener&quot;&gt;CrUX BigQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.google.com/speed/docs/insights/v5/get-started&quot; rel=&quot;noopener&quot;&gt;PageSpeed Insights API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.webpagetest.org/getkey.php&quot; rel=&quot;noopener&quot;&gt;WebPageTest API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pre-implemented connectors:
&lt;ul&gt;
&lt;li&gt;Google Sheets&lt;/li&gt;
&lt;li&gt;JSON&lt;/li&gt;
&lt;li&gt;CSV&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;automating-audits-with-awp&quot;&gt;Automating audits with AWP &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/autowebperf/#automating-audits-with-awp&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AWP automates the performance audits via your preferred audit platforms such as
&lt;a href=&quot;https://pagespeed.web.dev/&quot; rel=&quot;noopener&quot;&gt;PageSpeed Insights&lt;/a&gt;,
&lt;a href=&quot;https://webpagetest.org/&quot; rel=&quot;noopener&quot;&gt;WebPageTest&lt;/a&gt;, or
&lt;a href=&quot;https://developer.chrome.com/docs/crux/api/&quot; rel=&quot;noopener&quot;&gt;CrUX API&lt;/a&gt;.
AWP offers the flexibility to choose where to load the list of tests, and where
to write the results to.&lt;/p&gt;
&lt;p&gt;For example, you can run audits for a list of tests stored in a Google Sheet,
and write the results to a CSV file, with the command below:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token assign-left variable&quot;&gt;PSI_APIKEY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEY&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;SHEETS_APIKEY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEY&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; ./awp run sheets:&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;SheetID&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; csv:output.csv&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&quot;recurring-audits&quot;&gt;Recurring audits &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/autowebperf/#recurring-audits&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You can run recurring audits in daily, weekly, or monthly frequency. For
example, you can run daily audits for a list of tests defined in a local JSON
like below:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token property&quot;&gt;&quot;tests&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;label&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;web.dev&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;url&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://web.dev&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;br /&gt;      &lt;span class=&quot;token property&quot;&gt;&quot;gatherer&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;psi&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;The command below reads the list of audit tests from the local JSON file, runs
audits on a local machine, then outputs results to a local CSV file:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token assign-left variable&quot;&gt;PSI_APIKEY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEY&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; ./awp run json:tests.json csv:output.csv&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;To run audits every day as a background service continuously, you can use the
command below instead:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token assign-left variable&quot;&gt;PSI_APIKEY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEY&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; ./awp &lt;span class=&quot;token builtin class-name&quot;&gt;continue&lt;/span&gt; json:tests.json csv:output.csv&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;Alternatively, you can set up the
&lt;a href=&quot;https://www.geeksforgeeks.org/how-to-setup-cron-jobs-in-ubuntu/&quot; rel=&quot;noopener&quot;&gt;crontab&lt;/a&gt; in a
Unix-like environment to run AWP as a daily cron job:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; * * * &lt;span class=&quot;token assign-left variable&quot;&gt;PSI_APIKEY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEY&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; ./awp run json:tests.json csv:output.csv&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;You can find more ways to automate daily audits and result collection in the
&lt;a href=&quot;https://github.com/GoogleChromeLabs/AutoWebPerf&quot; rel=&quot;noopener&quot;&gt;AWP GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;data-studio&quot;&gt;Visualising audit results in Data Studio &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/autowebperf/#data-studio&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Along with continuously measuring Core Web Vitals, it is important to be able to
evaluate the trends and discover potential regressions with real user metrics
(RUM) or the Chrome UX Report (CrUX) data collected by AWP. Note that
Chrome UX Report (CrUX) is a 28-day moving aggregation, hence it is recommended
to also use your own RUM data along with CrUX so you can spot regressions
sooner.&lt;/p&gt;
&lt;p&gt;Data Studio is a free visualization tool that you can easily load performance
metrics into and draw trends as charts. For example, the time series charts
below show Core Web Vitals based on Chrome UX Report data. One of the charts
shows increasing Cumulative Layout Shift in recent weeks, which means
regressions in the layout stability for certain pages. In this scenario, you
would want to prioritize the efforts to analyze the underlying issues of these
pages.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt=&quot;A screenshot of Core Web Vitals results in Data Studio.&quot; decoding=&quot;async&quot; height=&quot;904&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 800px) 800px, calc(100vw - 48px)&quot; src=&quot;https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&quot; srcset=&quot;https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=200 200w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=228 228w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=260 260w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=296 296w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=338 338w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=385 385w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=439 439w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=500 500w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=571 571w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=650 650w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=741 741w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=845 845w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=964 964w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=1098 1098w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=1252 1252w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=1428 1428w, https://web-dev.imgix.net/image/tcFciHGuF3MxnTr1y5ue01OGLBn2/Cpi7NkLvKyvf2xYzFwAn.png?auto=format&amp;w=1600 1600w&quot; width=&quot;800&quot; /&gt;
&lt;/figure&gt;
&lt;p&gt;To simplify the end-to-end process from data collection to visualization, you
can run AWP with a list of URLs to automatically export results to Google Sheets
with the following command:&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token assign-left variable&quot;&gt;PSI_APIKEY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEY&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;SHEETS_APIKEY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;YOUR_KEY&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; ./awp run sheets:&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;SheetID&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; csv:output.csv&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;After collecting daily metrics in a spreadsheet, you can create a Data Studio
dashboard that loads the data directly from the spreadsheet, and plots the
trends into a time series chart. Check out &lt;a href=&quot;https://github.com/GoogleChromeLabs/AutoWebPerf/blob/stable/docs/sheets-connector.md&quot; rel=&quot;noopener&quot;&gt;Google Spreadsheets API
Connector&lt;/a&gt;
for detailed steps about how to set up AWP with spreadsheets as a data source to
visualize on Data Studio.&lt;/p&gt;
&lt;h2 id=&quot;whats-next&quot;&gt;What&#39;s next? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/autowebperf/#whats-next&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AWP provides a simple and integrated way to minimize the efforts to set up a
continuous monitoring pipeline to measure Core Web Vitals and other performance
metrics. As for now, AWP covers the most common use cases and will continue to
provide more features to address other use cases in the future.&lt;/p&gt;
&lt;p&gt;Learn more in the &lt;a href=&quot;https://github.com/GoogleChromeLabs/AutoWebPerf&quot; rel=&quot;noopener&quot;&gt;AutoWebPerf&lt;/a&gt; repository.&lt;/p&gt;
</content>
    <author>
      <name>Jonathan Chen</name>
    </author><author>
      <name>Gilberto Cocchi</name>
    </author><author>
      <name>Antoine Bisch</name>
    </author>
  </entry>
</feed>
