{"id":40100,"date":"2023-04-18T07:00:32","date_gmt":"2023-04-18T14:00:32","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=40100"},"modified":"2025-05-21T23:38:06","modified_gmt":"2025-05-22T06:38:06","slug":"pagespeed-insights-report","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/","title":{"rendered":"PageSpeed Insights Deep Dive (Full Walkthrough &#038; Tips for Scoring 100)"},"content":{"rendered":"\n<p>On the Internet, there is no speed limit \u2013 but thankfully, there is a speedometer.<\/p>\n\n\n\n<p>Your website\u2019s speed and performance has a major impact on business. It can improve your search rankings and SEO, increase website engagement, and drive more conversions \u2013 and revenue.<\/p>\n\n\n\n<p>But before you can optimize your website\u2019s speed, you need to know how it performs.<\/p>\n\n\n\n<p>That\u2019s where <a href=\"https:\/\/pagespeed.web.dev\/\" target=\"_blank\" rel=\"noopener\">PageSpeed Insights<\/a> comes in.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"900\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights.jpg\" alt=\"Screenshot of PageSpeed Insights\" class=\"wp-image-40108 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-300x169.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-1024x576.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-768x432.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-1536x864.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights-600x338.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights-1200x675.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights-730x411.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights-1460x821.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights-784x441.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights-1568x882.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PageSpeed-Insights-877x493.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/900;\" \/><\/figure>\n\n\n\n<p>This free tool from Google helps you understand your website\u2019s performance, but it can be complicated to jump into.<\/p>\n\n\n\n<p>After all, what do all of these different terms and scores mean? How are you supposed to know what to do or where to start?<\/p>\n\n\n\n<p>This guide is focused on what to do with the results of your PageSpeed Insights report and how to strategically work through specific solutions to improve each of your scores, no matter what issues need to be addressed!<\/p>\n\n\n\n<p>Today, we\u2019ll walk through each of the key factors and show strategies for improving your performance with each one.<\/p>\n\n\n\n<h2 id=\"h-what-is-google-pagespeed-insights\" class=\"wp-block-heading\">What is Google PageSpeed Insights?<\/h2>\n\n\n\n<p>PageSpeed Insights is a tool that tests, measures, and reports on your website\u2019s performance. It captures vital data about how users experience and engage with your site by analyzing things like site speed, load time, and user experience.<\/p>\n\n\n\n<p>In addition to scoring your website on a stable of key performance metrics, PageSpeed Insights runs a range of diagnostics and also recommends specific action items to help you improve your website\u2019s performance.<\/p>\n\n\n\n<p>PageSpeed Insights is powered by <a href=\"https:\/\/developers.google.com\/search\/blog\/2018\/11\/pagespeed-insights-now-powered-by#:~:text=Historically%2C%20these%20tools%20have%20used,Lighthouse%20as%20its%20analysis%20engine.\" target=\"_blank\" rel=\"noopener\">Google\u2019s open-source analysis engine, Lighthouse<\/a>.<\/p>\n\n\n\n<p>What makes PageSpeed Insights particularly important for webmasters and marketers is that site performance is intricately linked to user experience (UX), SEO, traffic, conversions, and all of the other KPIs that matter most to the business.<\/p>\n\n\n\n\n\n<div class=\"glossary-term\">\n\t<a\n\t\tclass=\"glossary-term__above-title\"\n\t\thref=\"\"\n\t\ttarget=\"_blank\"\n\t\trel=\"noopener noreferrer\"\n\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span><\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n    <h3>Website Performance<\/h3>\n    <p>A website\u2019s performance refers to the speed and uptime of the site. A better-performing site will have faster load times, run more smoothly, and have little to no downtime.<\/p>\n            <a\n            href=\"https:\/\/www.dreamhost.com\/glossary\/hosting\/website-performance\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Read More                    <\/a>\n\n<\/div>\n\n\n\n<p>Getting 100% on PageSpeed Insights is sort of like acing your SAT.<\/p>\n\n\n\n<p>It doesn\u2019t necessarily mean you\u2019ll do great in college, but it definitely gives you a leg up.<\/p>\n\n\n\n<h2 id=\"h-page-speed-and-seo\" class=\"wp-block-heading\">Page Speed and SEO<\/h2>\n\n\n\n<p>Let\u2019s answer the main question first.<\/p>\n\n\n\n<p>Yes, your website\u2019s speed and performance can impact search engine optimization (SEO).<\/p>\n\n\n\n<p>In particular, poor performance can <i>hurt <\/i>your SEO. It\u2019s helpful to think of your PageSpeed Insights as a \u201cgovernor\u201d for your website. If your scores are low, it means the website is slow \u2013 which also slows down your growth in the SERPs (Search Engine Results Page)!<\/p>\n\n\n\n<p>Google has <a href=\"https:\/\/developers.google.com\/search\/blog\/2020\/05\/evaluating-page-experience\" target=\"_blank\" rel=\"noopener\">stated publicly that they use website speed signals<\/a>, which they call \u201cpage experience,\u201d as an SEO ranking factor.<\/p>\n\n\n\n<p>There are three central factors included in the search algorithm that Google refers to as <a href=\"https:\/\/www.dreamhost.com\/blog\/improve-core-web-vitals\/\" target=\"_blank\" rel=\"noopener\">Core Web Vitals<\/a>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Loading &#8211; Largest Contentful Paint (LCP)<\/li>\n\n\n\n<li>Interactivity &#8211; First Input Delay (FID)<\/li>\n\n\n\n<li>Visual Stability &#8211; Cumulative Layout Shift (CLS)<\/li>\n<\/ol>\n\n\n\n\n\n<div class=\"glossary-term\">\n\t<a\n\t\tclass=\"glossary-term__above-title\"\n\t\thref=\"\"\n\t\ttarget=\"_blank\"\n\t\trel=\"noopener noreferrer\"\n\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span><\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n    <h3>What are Core Web Vitals?<\/h3>\n    <p>Core Web Vitals (CWV) was developed by Google and represents a trio of user experience metrics designed to help create a faster, more accessible, and higher quality web browsing experience. The three Core Web Vitals metrics include Largest Contentful Paint (LCP), First Input Delay (FID), and Cumulative Layout Shift (CLS).<\/p>\n            <a\n            href=\"https:\/\/www.dreamhost.com\/glossary\/seo\/core-web-vitals\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Read More                    <\/a>\n\n<\/div>\n\n\n\n<p>All of these factors measure how quickly your website loads and the speed and quality of the user experience, which can also impact accessibility.<\/p>\n\n\n\n<p>These three factors are part of the six total metrics measured by PageSpeed Insights.<\/p>\n\n\n\n<h2 id=\"h-how-pagespeed-insights-works\" class=\"wp-block-heading\">How PageSpeed Insights Works<\/h2>\n\n\n\n<p>Now that we understand the who, what, where, and why\u2026.all that\u2019s left is the <i>how<\/i>.<\/p>\n\n\n\n<p>How does PageSpeedInsights work, and how do you use the information it provides?<\/p>\n\n\n\n<p>First, a bit about how the tool functions behind the scenes, from Google directly:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201cPageSpeed Insights provides both lab and field data about a page. Lab data is useful for debugging issues, as it is collected in a controlled environment. However, it may not capture real-world bottlenecks. Field data is useful for capturing true, real-world user experience &#8211; but has a more limited set of metrics.\u201d<\/p>\n<\/blockquote>\n\n\n\n<p>In other words, PageSpeed Insights is looking at two things.<\/p>\n\n\n\n<p>First, Google\u2019s computers load your website to see how it performs.<\/p>\n\n\n\n<p>Second, since Google\u2019s computers aren\u2019t the same as a laptop you might use at home or work, they look at a log of historical data from real-world users who have visited your site in the last 28 days. (This data comes from the Chrome User Experience Report, often called \u201cCrUX,\u201d and it\u2019s collected from users who use the Chrome browser.)<\/p>\n\n\n\n<p>Then PageSpeed Insights combines these two tests and scores your website based on how real users might experience it.<\/p>\n\n\n\n<p>The PageSpeed Insights Score is a collection of metrics about your site&#8217;s performance that breaks down which areas are good and which may need work.<\/p>\n\n\n\n<p>There are 6 scores to know:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>First Contentful Paint (FCP)<\/li>\n\n\n\n<li>First Input Delay (FID)<\/li>\n\n\n\n<li>Largest Contentful Paint (LCP)<\/li>\n\n\n\n<li>Cumulative Layout Shift (CLS)<\/li>\n\n\n\n<li>Interaction to Next Paint (INP)<\/li>\n\n\n\n<li>Time to First Byte (TTFB)<\/li>\n<\/ol>\n\n\n\n<p>Each of these metrics is measured and then scored according to the level of performance.<\/p>\n\n\n\n<p>When you run a PageSpeed Insights report on your site, you\u2019ll receive a score and a \u201cgrade\u201d for each of these, which will fall into one of three buckets:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Good<\/li>\n\n\n\n<li>Needs Improvement<\/li>\n\n\n\n<li>Poor<\/li>\n<\/ol>\n\n\n\n<p>These grades are determined by predefined ranges that Google sets:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>&nbsp;<\/td><td><b>Good<\/b><\/td><td><b>Needs Improvement<\/b><\/td><td><b>Poor<\/b><\/td><\/tr><tr><td>FCP<\/td><td>[0, 1800ms]<\/td><td>(1800ms, 3000ms]<\/td><td>over 3000ms<\/td><\/tr><tr><td>FID<\/td><td>[0, 100ms]<\/td><td>(100ms, 300ms]<\/td><td>over 300ms<\/td><\/tr><tr><td>LCP<\/td><td>[0, 2500ms]<\/td><td>(2500ms, 4000ms]<\/td><td>over 4000ms<\/td><\/tr><tr><td>CLS<\/td><td>[0, 0.1]<\/td><td>(0.1, 0.25]<\/td><td>over 0.25<\/td><\/tr><tr><td>INP (experimental)<\/td><td>[0, 200ms]<\/td><td>(200ms, 500ms]<\/td><td>over 500ms<\/td><\/tr><tr><td>TTFB (experimental)<\/td><td>[0, 800ms]<\/td><td>(800ms, 1800ms]<\/td><td>over 1800ms<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"h-how-to-use-this-guide-to-improve-your-pagespeed-insights-score\" class=\"wp-block-heading\">How to Use This Guide to Improve Your PageSpeed Insights Score<\/h2>\n\n\n\n<p>Understanding PageSpeed Insights is the first part of the battle.<\/p>\n\n\n\n<p>Next, we have to figure out how to translate all the scores, numbers, and suggestions into an actionable plan for improvement.<\/p>\n\n\n\n<p>Here\u2019s how to use this guide:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/pagespeed.web.dev\/\" target=\"_blank\" rel=\"noopener\">Run your website PageSpeed Insights report<\/a>.<\/li>\n\n\n\n<li>Look for failed CWV tests or metrics in the \u201cPoor\u201d end of the scale.<\/li>\n\n\n\n<li>Find the section below that relates to those specific metrics.<\/li>\n\n\n\n<li>Work the steps (presented in order from highest to lowest impact).<\/li>\n\n\n\n<li>Re-run the PageSpeed Insights report.<\/li>\n\n\n\n<li>If necessary, repeat the process for any metrics still marked \u201cPoor.\u201d<\/li>\n\n\n\n<li>Move to the metrics marked as \u201cNeeds Improvement.\u201d<\/li>\n\n\n\n<li>Repeat from the beginning.<\/li>\n<\/ul>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<h2 id=\"h-1-first-contentful-paint-fcp\" class=\"wp-block-heading\">#1 &#8211; First Contentful Paint (FCP)<\/h2>\n\n\n\n<p>Let\u2019s dive into the first metric on Google\u2019s list.<\/p>\n\n\n\n<p>It\u2019s the First Contentful Paint, or FCP, and it measures how quickly the user can see your website as it\u2019s loading.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-first-contentful-paint\">What is First Contentful Paint?<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.dreamhost.com\/glossary\/hosting\/first-contentful-paint\/\" target=\"_blank\" rel=\"noopener\">First Contentful Paint<\/a> (FCP) is the time it takes for the first object to load in a user\u2019s browser. This is different from the page load speed or load time because it\u2019s not the time for the entire page to render \u2014 It\u2019s just the first piece of the page to appear on the screen.<\/p>\n\n\n\n<p>This is important from a user&#8217;s perspective because they can see progress as the page begins to appear.<\/p>\n\n\n\n<p>It also means the strategies for speeding up FCP are unique from just making the whole page load faster.<\/p>\n\n\n\n<p>FCP is measured in seconds.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Good: &lt; 1.8 seconds<\/li>\n\n\n\n<li>Needs improvement: 1.8 &#8211; 3 seconds<\/li>\n\n\n\n<li>Poor: &gt; 3 seconds<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-techniques-to-improve-fcp\">Techniques to Improve FCP<\/h3>\n\n\n\n<p>Let\u2019s say you scored 2.2s on your FCP score. You\u2019re hoping to knock it down to 1.8s.<\/p>\n\n\n\n<p>What tools are at your disposal?<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-minimizing-render-blocking-resources\">Minimizing Render-Blocking Resources<\/h4>\n\n\n\n<p>Remember, First Contentful Paint isn\u2019t just about how long the whole page takes to load. It\u2019s about getting the <i>first<\/i> pixels to appear on the screen as quickly as possible.<\/p>\n\n\n\n<p>One key strategy is simply changing the order of content on your page.<\/p>\n\n\n\n<p>Let the browser render the most important text, images, and styles <i>before <\/i>it starts loading heavy scripts, fancy animations, and content that\u2019s \u201cbelow the fold.\u201d<\/p>\n\n\n\n<p>The first thing you should do: <b>Delete any unused styles or scripts from your page.<\/b><\/p>\n\n\n\n<p>If you\u2019re loading JavaScript or CSS onto the page (usually in the Head section of the website), this will slow down the FCP. If you\u2019re not using them, then it\u2019s just slowing you down for nothing.<\/p>\n\n\n\n\n\n<div class=\"glossary-term\">\n\t<a\n\t\tclass=\"glossary-term__above-title\"\n\t\thref=\"\"\n\t\ttarget=\"_blank\"\n\t\trel=\"noopener noreferrer\"\n\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span><\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n    <h3>JavaScript<\/h3>\n    <p>JavaScript is a programming language that enables you to create things within a web page or on a web server. When you view a web page, the JavaScript code will execute automatically.<\/p>\n            <a\n            href=\"https:\/\/www.dreamhost.com\/glossary\/web-design\/javascript\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Read More                    <\/a>\n\n<\/div>\n\n\n\n<p>In WordPress, you can usually accomplish this by disabling unused plugins, which may load code onto the page even if the plugin isn\u2019t being used or displayed.<\/p>\n\n\n\n<p>If you look at the findings in your PageSpeed Insights report, it will flag code that\u2019s loaded into the page but not being used:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"900\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report.jpg\" alt=\"PageSpeed Insights (PSI) report\" class=\"wp-image-40109 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-300x169.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-1024x576.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-768x432.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-1536x864.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-600x338.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-1200x675.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-730x411.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-1460x821.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-784x441.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-1568x882.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-877x493.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/900;\" \/><\/figure>\n\n\n\n<p>This should tell you which code or plugins you might safely remove.<\/p>\n\n\n\n<p>(Note: Just because code isn\u2019t used on one page doesn\u2019t mean it\u2019s not on other pages of your website! Be careful before you start hacking and slashing things from your pages.)<\/p>\n\n\n\n<p>Next: <b>Defer or load scripts asynchronously.<\/b><\/p>\n\n\n\n<p>If you need scripts or styling on your page, but they aren\u2019t immediately vital to the first content the user sees, then you can do what\u2019s called defer or load them asynchronously. This tells the browser to wait to load them rather than loading them in the order they appear on the page.<\/p>\n\n\n\n<p>This is pretty simple \u2014 You can add a bit of extra code to your website that will instruct the browser to either defer or load async (or both):<\/p>\n\n\n\n<p><code>&lt;script src=\"app.js\" async&gt;&lt;\/script&gt;<\/code><\/p>\n\n\n\n<p>(Nerd Note: Async and defer are not technically the same thing. But, for most of us, the difference is mostly semantics. Nevertheless, feel free to <a href=\"https:\/\/stackoverflow.com\/questions\/10808109\/script-tag-async-defer\" target=\"_blank\" rel=\"noopener\">go down the rabbit hole and find out more about the subtle nuances<\/a>.)<\/p>\n\n\n\n<p>If you want an easier way to handle this step, consider using the <a href=\"https:\/\/wordpress.org\/plugins\/jetpack-boost\/\" target=\"_blank\" rel=\"noopener\">JetPack Boost plugin for WordPress<\/a>.<\/p>\n\n\n\n<p>JetPack is a free plugin suite that gives you all kinds of tools to optimize the speed and performance of your website. Notably, you can choose to defer loading non-essential JavaScript with a simple click.<\/p>\n\n\n\n<p>From inside WordPress, go to <i>Plugins &gt; Add New<\/i>.<\/p>\n\n\n\n<p>Then, search for Boost. Click \u201cInstall\u201d and \u201cActivate\u201d.<\/p>\n\n\n\n<p>You should see a new menu in your left-hand navigation called \u201cJetPack\u201d.<\/p>\n\n\n\n<p>Go to <i>JetPack &gt; Boost<\/i>.<\/p>\n\n\n\n<p>The plugin will render your site in the background and show your score, plus options for improvement. To defer non-essential JS, simply click the toggle to enable it.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"900\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/JetPack-Boost.jpg\" alt=\"Screenshot of JetPack Boost plugin for WordPress\" class=\"wp-image-40111 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/JetPack-Boost-300x169.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/JetPack-Boost-1024x576.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/JetPack-Boost-768x432.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/JetPack-Boost-1536x864.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost-600x338.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost-1200x675.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost-730x411.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost-1460x821.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost-784x441.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost-1568x882.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/JetPack-Boost-877x493.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/900;\" \/><\/figure>\n\n\n\n<p>Finally: <b>Restructure CSS (styling).<\/b><\/p>\n\n\n\n<p>If you\u2019re familiar with CSS, you\u2019ll know that it\u2019s common to throw all your styles into one big blob of code and load it all in a standard file like style.css.<\/p>\n\n\n\n<p>It\u2019s not <i>wrong<\/i>. It\u2019s just not very performant.<\/p>\n\n\n\n<p>To improve FCP, you can optimize your CSS structure:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Remove all of the styles that apply to content that\u2019s part of the FCP (anything \u201cabove the fold.\u201d)<\/li>\n\n\n\n<li>Add these styles as an inline style block in the header of your website.<\/li>\n\n\n\n<li>Load the remaining styles asynchronously with a \u201cpreload\u201d function (shown below.)<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;link rel=&quot;preload&quot; href=&quot;styles.css&quot; as=&quot;style&quot; onload=&quot;this.onload=null;this.rel=&#039;stylesheet&#039;&quot;&gt;\n&amp;lt;noscript&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;styles.css&quot;&gt;&amp;lt;\/noscript&gt;\n<\/pre><\/div>\n\n\n<p>Alternatively, if you have a lot of separate styles for different devices and browsers, you may want to split your stylesheet into multiple files and use a <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/Media_Queries\/Using_media_queries\" target=\"_blank\" rel=\"noopener\">media query @import to only load the appropriate styles<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-optimizing-images-and-videos\">Optimizing Images and Videos<\/h4>\n\n\n\n<p>Since FCP is mostly about optimizing for the first few hundred pixels at the top of the page, we won\u2019t go into too much detail on optimization for images and videos here.<\/p>\n\n\n\n<p>But if your header has a lot of images or you have a video at the top of the page, then it may be worth investigating how to optimize these assets to improve initial load speed. See below for more details on how to approach optimizing.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-using-a-content-delivery-network-cdn\">Using a Content Delivery Network (CDN)<\/h4>\n\n\n\n<p>Same as above. CDNs can help load your whole page faster, which gives a small boost to FCP. See below for more details on using a CDN.<\/p>\n\n\n\n<h2 id=\"h-2-first-input-delay-fid-total-blocking-time-tbt-and-time-to-interactive-tti\" class=\"wp-block-heading\">#2 &#8211; First Input Delay (FID), Total Blocking Time (TBT), and Time to Interactive (TTI)<\/h2>\n\n\n\n<p>Now let\u2019s talk about tradeoffs.<\/p>\n\n\n\n<p>If you only paid attention to First Contentful Paint, you may think that all you need to do to crush your PageSpeed Insights score is defer and load all of your resources later to make that top portion of your website load quickly.<\/p>\n\n\n\n<p>But if the website <i>appears <\/i>to load quickly, yet I can\u2019t actually interact with it, then that\u2019s also a poor user experience.<\/p>\n\n\n\n<p>Enter: First Input Delay.<\/p>\n\n\n\n<p>First Input Delay is also related to Total Blocking Time (TBT) and Time to Interactive (TTI) metrics.<\/p>\n\n\n\n<p>Let\u2019s unpack each of these and how they\u2019re related but different.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-first-input-delay\">What is First Input Delay?<\/h3>\n\n\n\n<p>First Input Delay (FID) is the time it takes for the browser to respond to a user\u2019s first input or interaction (e.g., clicking a link or button). Your website\u2019s performance impacts the delay because most interactions can\u2019t be processed while the browser is loading or rendering code.<\/p>\n\n\n\n<p>In other words, if your code takes a long time to finish loading, it will prevent the user from interacting with the website, and there will be a delay or lag time between when they click to when the action takes place.<\/p>\n\n\n\n<p>This metric is measured in milliseconds, and based on real-world user data.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Good: &lt; 100ms<\/li>\n\n\n\n<li>Need Improvement: 100 &#8211; 300ms<\/li>\n\n\n\n<li>Poor: &gt; 300ms<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-time-to-interactive-tti\">What is Time to Interactive (TTI)?<\/h3>\n\n\n\n<p>Time to Interactive is the time it takes for the page to become \u201creliably interactive.\u201d<\/p>\n\n\n\n<p>Google defines \u201creliably interactive\u201d as when the browser\u2019s main thread is free for at least 5 seconds, making the page fully interactive to the user.<\/p>\n\n\n\n<p>This is a metric measured by Google\u2019s Lighthouse, so it\u2019s not based on actual user data. Instead, it\u2019s measured under specific, controlled criteria.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-total-blocking-time-tbt\">What is Total Blocking Time (TBT)?<\/h3>\n\n\n\n<p>Total Blocking Time measures the full period of time between FCP and TTI.<\/p>\n\n\n\n<p>In other words, the clock doesn\u2019t start running until the top of the page is rendered, and then it stops after the page is considered \u201creliably interactive\u201d or 5 seconds after the main thread is free.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-first-input-delay-vs-time-to-interactive-vs-total-blocking-time\">First Input Delay vs Time to Interactive vs Total Blocking Time<\/h3>\n\n\n\n<p>These three metrics are related but not identical.<\/p>\n\n\n\n<p>First Input Delay is based on real-world user data and Core Web Vitals. TTI and TBT are measured by the performance report in PageSpeed Insights, powered by Google\u2019s Lighthouse.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"2560\" height=\"1920\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-scaled.jpg\" alt=\"First Input Delay vs Time to Interactive vs Total Blocking Time\" class=\"wp-image-40112 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-scaled.jpg 2560w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-300x225.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-1024x768.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-768x576.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-1536x1152.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-2048x1536.jpg 2048w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-600x450.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-1200x900.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-730x548.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-1460x1095.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-784x588.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-1568x1176.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-877x658.jpg.webp 877w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/First-Input-Delay-vs-Time-to-Interactive-vs-Total-Blocking-Time-1754x1316.jpg.webp 1754w\" data-sizes=\"(max-width: 2560px) 100vw, 2560px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2560px; --smush-placeholder-aspect-ratio: 2560\/1920;\" \/><\/figure>\n\n\n\n<p>In terms of improving the performance of these three metrics, the solutions are also similar but not identical. Most notably, solutions for improving FID that involve deferring JavaScript rendering won\u2019t improve TTI or TBT because JavaScript still needs to be loaded.<\/p>\n\n\n\n<p>But solutions like removing, minifying, and caching should help improve all three metrics.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-techniques-to-improve-fid-tti-and-tbt\">Techniques to Improve FID, TTI, and TBT<\/h3>\n\n\n\n<p>By far, the most significant impact on FID is the JavaScript loaded on your page.<\/p>\n\n\n\n<p>You can think of JavaScript like a separate train track for the browser. While it\u2019s rendering or executing JavaScript code, it can\u2019t complete other tasks or respond to inputs like a user clicking a link (the \u201cmain thread\u201d needs to be free for the browser to respond).<\/p>\n\n\n\n<p>So the longer it spends reading and executing the JavaScript when the page first loads, the longer the delay will be if the user begins interacting with the page.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-reduce-the-impact-of-third-party-code\">Reduce the Impact of Third-Party Code<\/h4>\n\n\n\n<p>One usual suspect for slow input response is that the website is still loading in all kinds of third-party tools, widgets, and apps to your website.<\/p>\n\n\n\n<p>Every time you add things like Facebook, Drift, Intercom, HotJar, or other third-party tools and services to your website, it adds a bit of code that will need to be loaded and rendered on the page.<\/p>\n\n\n\n<p>If you have a lot of these services, it can take a long time to load them all.<\/p>\n\n\n\n<p>Worse yet, you don\u2019t have any control over how quickly these resources are loaded on your site. So if the browser is trying to fetch some JavaScript from a third-party website on a slow server, it could cause significant delays.<\/p>\n\n\n\n<p>Let\u2019s fix it.<\/p>\n\n\n\n<p>Option #1: <b>Delete all unused third-party tools.<\/b><\/p>\n\n\n\n<p>Chances are that you\u2019ve installed all kinds of services, plugins, and tools on your website over the years. And you probably only use a few of them.<\/p>\n\n\n\n<p>Now\u2019s the time to delete or uninstall the ones you aren\u2019t actively using.<\/p>\n\n\n\n<p>To get a full list of the third-party JavaScript loading on your page, refer to your PageSpeed Insights report or <a href=\"https:\/\/developer.chrome.com\/docs\/lighthouse\/overview\/\" target=\"_blank\" rel=\"noopener\">run a separate Lighthouse report<\/a>.<\/p>\n\n\n\n<p>You should see a list of all of the scripts being loaded and how long they take:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"960\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Delete-all-unused-third-party-tools.jpg\" alt=\"Delete all unused third-party tools. Chances are that you\u2019ve installed all kinds of services, plugins, and tools on your website over the years.\" class=\"wp-image-40113 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Delete-all-unused-third-party-tools-300x180.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Delete-all-unused-third-party-tools-1024x614.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Delete-all-unused-third-party-tools-768x461.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Delete-all-unused-third-party-tools-1536x922.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools-600x360.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools-1200x720.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools-730x438.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools-1460x876.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools-784x470.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools-1568x941.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Delete-all-unused-third-party-tools-877x526.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/960;\" \/><\/figure>\n\n\n\n<p>Now, using this information, you can decide which of these are critical and which can safely be removed.<\/p>\n\n\n\n<p>Depending on which services you want to delete, you may need to manually remove the code from your website, uninstall a WordPress plugin, or remove code that\u2019s added via Google Tag Manager to improve page performance.<\/p>\n\n\n\n<p>Option #2: <b>Load JavaScript async<\/b>.<\/p>\n\n\n\n<p>Unless it\u2019s vital to rendering the FCP, it\u2019s almost always advisable to render third\u2013party scripts asynchronously. If you have vital JavaScript that\u2019s slowing down FID but you can\u2019t remove it, then <a href=\"https:\/\/web.dev\/efficiently-load-third-party-javascript\/\" target=\"_blank\" rel=\"noopener\">try having it load async instead<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-minimizing-javascript-execution-time\">Minimizing JavaScript Execution Time<\/h4>\n\n\n\n<p>Third-party code can be a scoundrel, but what about our very own code that we\u2019ve put on our website?<\/p>\n\n\n\n<p>Chances are it\u2019s not innocent in the slow load time.<\/p>\n\n\n\n<p>If you have non-essential JavaScript that you\u2019ve added to your own website, you may want to remove it.<\/p>\n\n\n\n<p>Looking at the PageSpeed Insights report, you should see a section that references unused JavaScript:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"700\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-JavaScript.jpg\" alt=\"A section of unused JavaScript at the PSI report\" class=\"wp-image-40114 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-JavaScript-300x131.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-JavaScript-1024x448.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-JavaScript-768x336.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PSI-report-JavaScript-1536x672.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript-600x263.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript-1200x525.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript-730x319.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript-1460x639.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript-784x343.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript-1568x686.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/PSI-report-JavaScript-877x384.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/700;\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If the JavaScript is 100% unused, consider deleting it<\/li>\n\n\n\n<li>If the JavaScript is used on other pages, consider only delivering it selectively on the pages where it\u2019s necessary (also known as \u201c<a href=\"https:\/\/web.dev\/reduce-javascript-payloads-with-code-splitting\/\" target=\"_blank\" rel=\"noopener\">code splitting<\/a>\u201d)<\/li>\n<\/ul>\n\n\n\n<p>You can also explore options for improving the JavaScript\u2019s load time.<\/p>\n\n\n\n<p>The most common way to speed up load time is to reduce file size. And with JavaScript, there are two main strategies:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Minification \u2013 Removing all of the spaces, line breaks, etc. in the code<\/li>\n\n\n\n<li>Compression \u2013 \u201cZipping\u201d the file to make it smaller<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/web.dev\/reduce-network-payloads-using-text-compression\/\" target=\"_blank\" rel=\"noopener\">Either of these could help make your code more performant<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-prioritizing-visible-content\">Prioritizing Visible Content<\/h4>\n\n\n\n<p>If you\u2019re primarily concerned about improving FID, then you may want to focus on deferring JavaScript and other page elements to only focus on content within the first contentful paint.<\/p>\n\n\n\n<p>After all, users cannot interact with elements that haven&#8217;t been rendered.<\/p>\n\n\n\n<h2 id=\"h-3-largest-contentful-paint-lcp\" class=\"wp-block-heading\">#3 &#8211; Largest Contentful Paint (LCP)<\/h2>\n\n\n\n<p>If FCP is your car\u2019s 0 to 60 time, then LCP is its quarter-mile.<\/p>\n\n\n\n<p>Okay, for the non-gearheads, what I mean is that LCP measures how quickly the user can see the \u201cmain\u201d content on your web page.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-largest-contentful-paint\">What is Largest Contentful Paint?<\/h3>\n\n\n\n<p>Largest Contentful Paint (LCP) is a metric that measures how long it takes for the largest block of content on a page to be visible to the user. Unlike FCP, it looks at the load time for the largest block of image or text on the page regardless of its position or order.<\/p>\n\n\n\n<p>It measures the largest block of content based on its dimensions within the user\u2019s viewport. In other words, if there is a single &lt;div&gt; with lots of text or a single image that takes up a large portion of the screen, that may be considered the largest block of content and used to calculate LCP.<\/p>\n\n\n\n<p>It\u2019s measured in seconds and based on real-world user data (or \u201cin the field\u201d):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Good: &lt; 2.5s<\/li>\n\n\n\n<li>Needs Improvement: 2.5 &#8211; 4s<\/li>\n\n\n\n<li>Poor: &gt; 4s<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-techniques-to-improve-lcp\">Techniques to Improve LCP<\/h3>\n\n\n\n<p>Before you begin working to optimize your LCP, you may want to determine which part of your page is considered the largest block of content.<\/p>\n\n\n\n<p>This may help you target your efforts to improve performance on a specific page or template.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"750\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Dreamhost.jpg\" alt=\"Screenshot of DreamHost homepage\" class=\"wp-image-40115 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Dreamhost-300x141.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Dreamhost-1024x480.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Dreamhost-768x360.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Dreamhost-1536x720.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost-600x281.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost-1200x563.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost-730x342.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost-1460x684.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost-784x368.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost-1568x735.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Dreamhost-877x411.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/750;\" \/><\/figure>\n\n\n\n<p>You can do this by <a href=\"https:\/\/www.twicpics.com\/blog\/how-to-find-the-lcp-element-a-complete-guide\" target=\"_blank\" rel=\"noopener\">using Chrome DevTools in your browser to identify the LCP resource<\/a> on any specific page.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-optimize-loading-priority\">Optimize Loading Priority<\/h4>\n\n\n\n<p>In the above sections, we\u2019ve discussed options such as using async or deferral strategies to accelerate rendering key parts of the page.<\/p>\n\n\n\n<p>You may want to consider those here as a first-line option.<\/p>\n\n\n\n<p>Removing or deferring render-blocking resources can help the main content load more quickly. But keep in mind that if these resources significantly change the layout or structure of the page, it could actually change which block is considered the largest and slow down LCP rather than improve it!<\/p>\n\n\n\n<p>You can take this strategy one step further. Especially if the largest block of content is an image.<\/p>\n\n\n\n<p>You can apply what is known as a <a href=\"https:\/\/web.dev\/apply-instant-loading-with-prpl\/\" target=\"_blank\" rel=\"noopener\">PRPL<\/a> (Preload, Render, Precache, Lazy load) framework to target specific resources on your page and to load first in the queue. If that image is the largest content block, then it will dramatically improve your LCP score.<\/p>\n\n\n\n\n\n<div class=\"glossary-term\">\n\t<a\n\t\tclass=\"glossary-term__above-title\"\n\t\thref=\"\"\n\t\ttarget=\"_blank\"\n\t\trel=\"noopener noreferrer\"\n\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span><\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n    <h3>Lazy Loading<\/h3>\n    <p>Lazy loading is a design pattern used in software development to improve performance and reduce resource consumption. It involves postponing the initialization or loading of an object until it is needed.<\/p>\n            <a\n            href=\"https:\/\/www.dreamhost.com\/glossary\/web-design\/lazy-loading\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Read More                    <\/a>\n\n<\/div>\n\n\n\n<p>In addition to async rendering options, this framework provides other strategies for optimizing the rendering path.<\/p>\n\n\n\n<p>One of the simplest is preloading critical assets.<\/p>\n\n\n\n<p>You can do this by simply adding a small snippet to your website\u2019s header that tells the browser to prioritize critical images, fonts, styles, or scripts, which may be critical to your largest content section.<\/p>\n\n\n\n<p>For instance, if you have a hero image that is the largest block on the page, then you might want to pre-load that image on each page using a snippet like this:<\/p>\n\n\n\n<p><code>&lt;link rel=\"preload\" as=\"image\" href=\"image1.png\"&gt;<\/code><\/p>\n\n\n\n<p>This tells the browser to start loading this resource right away, before it&#8217;s discovered on the page.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-optimize-file-resource-size\">Optimize File (Resource) Size<\/h4>\n\n\n\n<p>Now let\u2019s talk about file size.<\/p>\n\n\n\n<p>Bigger files take longer to load. This applies to images, scripts, videos, fonts, and anything else on your page that may be loaded as part of the largest content block.<\/p>\n\n\n\n<p>One way to speed up your LCP score is file size optimization.<\/p>\n\n\n\n<p>Strategies for optimizing file size will depend on the format of the file.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"h-optimizing-images\">Optimizing Images<\/h5>\n\n\n\n<p>Commonly, you\u2019ll find big gains by compressing and optimizing your images.<\/p>\n\n\n\n<p>Start by evaluating these areas for improvement:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Format<\/b>: Different image formats offer varying levels of compression and quality. For most web use cases, JPEG, PNG, and WebP are the most common formats.\n<ul class=\"wp-block-list\">\n<li>JPEG is usually best for photos.<\/li>\n\n\n\n<li>PNG is usually best for designed images with text or sharp edges.<\/li>\n\n\n\n<li>WebP is a more efficient format that provides better compression without sacrificing quality, but it may not be supported by all browsers.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><b>Compression<\/b>: In many cases, you can compress an image\u2019s file size without losing much or any visual quality.\n<ul class=\"wp-block-list\">\n<li>Online image compression tools: <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener\">TinyPNG<\/a> (for PNG and JPEG), <a href=\"https:\/\/squoosh.app\/\" target=\"_blank\" rel=\"noopener\">Squoosh<\/a> (for WebP).<\/li>\n\n\n\n<li>WordPress image compression tools: <a href=\"https:\/\/shortpixel.com\/\" target=\"_blank\" rel=\"noopener\">ShortPixel<\/a>, <a href=\"https:\/\/imagify.io\/\" target=\"_blank\" rel=\"noopener\">Imagify<\/a>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><b>Image size<\/b>: If you\u2019re uploading raw images or photos to your website and then adding them to your page, chances are they\u2019re way bigger than they need to be, slowing down the load time.\n<ul class=\"wp-block-list\">\n<li>Re-size your images and upload only the size you need.<\/li>\n\n\n\n<li>Use a <a href=\"https:\/\/wordpress.org\/plugins\/resize-image-after-upload\/\" target=\"_blank\" rel=\"noopener\">WordPress plugin to automatically resize images<\/a> when they\u2019re uploaded.<\/li>\n\n\n\n<li>Use the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/HTML\/Multimedia_and_embedding\/Responsive_images\" target=\"_blank\" rel=\"noopener\">&#8220;srcset&#8221; and &#8220;sizes&#8221; attributes in the &#8220;img&#8221; tag<\/a> to specify multiple image sources and sizes. The browser automatically chooses the most appropriate image based on the user&#8217;s screen size and resolution.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"h-optimizing-scripts-and-styles\">Optimizing Scripts and Styles<\/h5>\n\n\n\n<p>Any resources necessary to render the largest content block will need to be fully loaded before LCP is calculated.<\/p>\n\n\n\n<p>This includes scripts and styles that impact your largest content block.<\/p>\n\n\n\n<p>Using some of the techniques we\u2019ve discussed before, you can improve LCP by optimizing the file size and render path for JavaScript, CSS, etc.:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Minify the files.<\/li>\n\n\n\n<li>Code splitting to reduce file size.<\/li>\n\n\n\n<li>Add styles and scripts in-line.<\/li>\n\n\n\n<li>Pre-load or cache.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"h-optimizing-videos\">Optimizing Videos<\/h5>\n\n\n\n<p>If your LCP resource might be a video, then you should consider ways to optimize videos.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Host the video on YouTube or another service with a fast CDN rather than uploading directly.<\/li>\n\n\n\n<li>Compress the video file size.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"h-optimizing-fonts\">Optimizing Fonts<\/h5>\n\n\n\n<p>If the LCP resource in question is text and that text uses an imported font (e.g., from Google Fonts), then you can optimize by improving the load speed of the font file.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Only use <a href=\"http:\/\/caniuse.com\/#feat=woff2\" target=\"_blank\" rel=\"noopener\">WOFF and WOFF2.0 file fonts<\/a> for the web.<\/li>\n\n\n\n<li>Pre-load the font file using a link rel tag (see above).<\/li>\n\n\n\n<li>Explore more options for <a href=\"https:\/\/web.dev\/reduce-webfont-size\/\" target=\"_blank\" rel=\"noopener\">further reducing font file size load time<\/a>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-implement-a-cdn\">Implement a CDN<\/h4>\n\n\n\n<p>Think of a CDN like an HOV lane on the highway.<\/p>\n\n\n\n<p>It helps the browser download resources more quickly by <a href=\"https:\/\/www.dreamhost.com\/blog\/a-comprehensive-guide-to-website-caching\/\" target=\"_blank\" rel=\"noopener\">caching them<\/a> in servers worldwide.<\/p>\n\n\n\n\n\n<div class=\"glossary-term\">\n\t<a\n\t\tclass=\"glossary-term__above-title\"\n\t\thref=\"\"\n\t\ttarget=\"_blank\"\n\t\trel=\"noopener noreferrer\"\n\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span><\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n    <h3>CDN<\/h3>\n    <p>CDN is an abbreviation for \u201cContent Delivery Network\u201d. It refers to a geographically-distributed network of web servers (and their data centers). The entities that make up a CDN collaborate to ensure speedy content delivery via the internet.<\/p>\n            <a\n            href=\"https:\/\/www.dreamhost.com\/glossary\/hosting\/cdn\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Read More                    <\/a>\n\n<\/div>\n\n\n\n<p>The main thing to know is this: Implementing a CDN can dramatically improve website performance across the board. And, especially when it comes to LCP, it can help render images, scripts, and other assets faster than your web host\u2019s normal server.<\/p>\n\n\n\n<p>To implement a CDN:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Select a CDN provider<\/b>: There are several popular CDN providers available in the market, such as <a href=\"http:\/\/cloudflare.com\" target=\"_blank\" rel=\"noopener\">Cloudflare<\/a>, <a href=\"https:\/\/aws.amazon.com\/cloudfront\/\" target=\"_blank\" rel=\"noopener\">Amazon CloudFront<\/a>, <a href=\"https:\/\/cloud.google.com\/cdn\" target=\"_blank\" rel=\"noopener\">Google Cloud CDN<\/a>, and <a href=\"https:\/\/www.fastly.com\/\" target=\"_blank\" rel=\"noopener\">Fastly<\/a>.<\/li>\n\n\n\n<li><b>Set up an account and configure the CDN<\/b>: Once you have selected a CDN provider, sign up for an account and configure the CDN settings. This typically involves creating a CDN zone, configuring caching rules, and setting up SSL\/TLS encryption.<\/li>\n\n\n\n<li><b>Integrate the CDN with your website<\/b>: To integrate the CDN with your website, you will need to update the URLs of the content you want to serve through the CDN. This involves changing the nameservers to point to the CDN instead of your normal server.<\/li>\n\n\n\n<li><b>Test the CDN<\/b>: After integrating the CDN with your website, run tests to ensure that the content is being served through the CDN and that the LCP performance has improved.<\/li>\n<\/ul>\n\n\n\n<p>For a more detailed guide, check out our article on <a href=\"https:\/\/www.dreamhost.com\/blog\/guide-using-a-cdn-with-wp\/\" target=\"_blank\" rel=\"noopener\">using a CDN with WordPress<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-improve-server-performance\">Improve Server Performance<\/h4>\n\n\n\n<p>Last, but certainly not least, your <a href=\"https:\/\/www.dreamhost.com\/\" target=\"_blank\" rel=\"noopener\">web host<\/a>\u2019s server performance also plays a key role in LCP.<\/p>\n\n\n\n<p>We\u2019ll cover this fully when we dive into TTFB; suffice it to say that the browser can only download resources as quickly as the server allows. If it takes a long time for the server to respond, it will take a long time for the resource to load.<\/p>\n\n\n\n<h2 id=\"h-4-cumulative-layout-shift-cls\" class=\"wp-block-heading\">#4 &#8211; Cumulative Layout Shift (CLS)<\/h2>\n\n\n\n<p>Did you know websites can dance?<\/p>\n\n\n\n<p>Well, sort of. And not very well.<\/p>\n\n\n\n<p>More accurately, they can shift. The elements on the page move around while different images, scripts, styles, and text get rendered until the page is fully loaded.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-cumulative-layout-shift\">What is Cumulative Layout Shift?<\/h3>\n\n\n\n<p>Cumulative layout shift measures how far the images, text, buttons, and other elements on your page move on the screen while the user is waiting for the page to load. Lower CLS is considered better for the user experience.<\/p>\n\n\n\n<p>That\u2019s not really surprising if you consider your own browsing habits.<\/p>\n\n\n\n<p>If you feel like you\u2019re playing whack-a-mole while trying to click a link that keeps moving further down the page, you\u2019ll probably get frustrated and leave the site altogether. (Hello, bounce rate!)<\/p>\n\n\n\n<p>This experience can be especially infuriating while browsing on a mobile device.<\/p>\n\n\n\n<p>CLS is field data from real users, and it\u2019s measured as a score that combines the \u201cimpact fraction\u201d (what percentage of elements in the viewport shifted) and \u201cdistance fraction\u201d (how far did they move relative to the total size of the screen).<\/p>\n\n\n\n<p>There is also a special designation for \u201cexpected shifts\u201d (e.g., clicking a button that opens up a new section on the page) and \u201cunexpected shifts,\u201d which aren\u2019t prompted by user input.<\/p>\n\n\n\n<p>CLS is measured by multiplying the impact fraction and distance fraction:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Good: &lt; 0.1<\/li>\n\n\n\n<li>Needs Improvement: 0.1 &#8211; 0.25<\/li>\n\n\n\n<li>Poor: &gt; 0.25<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-techniques-to-improve-cls\">Techniques to Improve CLS<\/h3>\n\n\n\n<p>Chances are that if you\u2019re not intentionally trying to trick your users by moving things around on your page, your CLS is pretty low by default, but there are a few innocent mistakes that you can make and are worth fixing.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-define-the-sizes-of-all-images-and-videos\">Define the Sizes of all Images and Videos<\/h4>\n\n\n\n<p>One small thing with a big impact. If you don\u2019t explicitly define the size of the images and videos on your page, it can lead to a shift in the layout because the browser isn\u2019t sure how much space to reserve for that resource.<\/p>\n\n\n\n<p>This is as simple as adding the attribute for any image or video on the page:<\/p>\n\n\n\n<p><code>&lt;img src=\"hero_image.jpg\" width=\"400\" height=\"400\"&gt;<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-avoid-ads-and-pop-ups-that-cause-layout-shifts\">Avoid Ads and Pop-ups That Cause Layout Shifts<\/h4>\n\n\n\n<p>You\u2019ve got to pay the bills somehow, but avoid using pop-ins or pop-ups that shift the page layout. If nothing else, use a <a href=\"https:\/\/css-tricks.com\/aspect-ratio-boxes\/\" target=\"_blank\" rel=\"noopener\">CSS aspect ratio box<\/a> to \u201creserve\u201d space for ads or other messages loading into the page as the user interacts.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-choose-animations-wisely\">Choose Animations Wisely<\/h4>\n\n\n\n<p>With modern CSS and JavaScript, we can implement all kinds of cool and fancy animations on the page.<\/p>\n\n\n\n<p>But, from a user\u2019s perspective, function always trumps form.<\/p>\n\n\n\n<p>Remove any animations that trigger layout changes, since each change of state can contribute to the overall layout shift and ding your CLS score.<\/p>\n\n\n\n<h2 id=\"h-5-interaction-to-next-paint-inp\" class=\"wp-block-heading\">#5 &#8211; Interaction to Next Paint (INP)<\/h2>\n\n\n\n<p>As Jay-Z once said, \u201cI\u2019ve got no patience. And I hate waiting.\u201d<\/p>\n\n\n\n<p><i>Don\u2019t we all?<\/i><\/p>\n\n\n\n<p>While we\u2019ve already covered the input delay on the first interaction with your website (FID), INP is a broader metric that assesses your website\u2019s overall responsiveness.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-interaction-to-next-paint\">What is Interaction to Next Paint?<\/h3>\n\n\n\n<p>Interaction to Next Paint measures how long it takes for the next \u201cpaint\u201d or updated frame on your website to appear after the user interacts with a button or page element. It measures overall website responsiveness and how fluid the interactions feel.<\/p>\n\n\n\n<p>This is especially important for web apps that require significant user interaction and can feel sluggish and confusing if there\u2019s too long of an input lag or delay between the action and the outcome.<\/p>\n\n\n\n<p>INP is measured in milliseconds:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Good: &lt; 200ms<\/li>\n\n\n\n<li>Needs Improvement: 200 &#8211; 500ms<\/li>\n\n\n\n<li>Poor: &gt; 500ms<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-techniques-to-improve-inp\">Techniques to Improve INP<\/h3>\n\n\n\n<p>If you\u2019re having INP problems, I feel bad for you, son. (Sorry, that\u2019s another Jay-Z lyric.)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1600\" height=\"800\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint.jpg\" alt=\"Breaking Down Interaction to Next Paint\" class=\"wp-image-40116 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint.jpg.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-300x150.jpg 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-1024x512.jpg 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-768x384.jpg 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-1536x768.jpg 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-600x300.jpg.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-1200x600.jpg.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-730x365.jpg.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-1460x730.jpg.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-784x392.jpg.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-1568x784.jpg.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/smush-webp\/2023\/04\/Breaking-Down-Interaction-to-Next-Paint-877x439.jpg.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/800;\" \/><\/figure>\n\n\n\n<p>Luckily, you can break down most issues into three main problems:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Input delay<\/li>\n\n\n\n<li>Interaction delay<\/li>\n\n\n\n<li>Presentation delay<\/li>\n<\/ol>\n\n\n\n<p>This is the really tricky part; To diagnose the issue more closely, you\u2019ll need to either <a href=\"https:\/\/web.dev\/optimize-inp\/\" target=\"_blank\" rel=\"noopener\">use Google Chrome performance profiler or Lighthouse\u2019s record functionality<\/a>.<\/p>\n\n\n\n<p>Here you can zoom in on an individual interaction and see where the longest delay occurs.<\/p>\n\n\n\n<p>From there, we can look for some solutions to each one.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-fixing-input-delay\">Fixing Input Delay<\/h4>\n\n\n\n<p>Input delay is caused when the main thread is busy at the time of the interaction. This means something else is happening when the click or keypress takes place.<\/p>\n\n\n\n<p>To fix it, you\u2019ll want to dig into which processes are running as part of the main thread:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Remove or optimize third-party JavaScript.<\/li>\n\n\n\n<li>Use <a href=\"https:\/\/web.dev\/off-main-thread\/\" target=\"_blank\" rel=\"noopener\">web workers<\/a> to run JavaScript outside of the main thread.<\/li>\n\n\n\n<li>Use listeners like isInputPending() to yield the main thread (this is the most advanced option.)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-fixing-interaction-delay\">Fixing Interaction Delay<\/h4>\n\n\n\n<p>If the interaction itself is the culprit \u2013 meaning it takes a long time for the interaction to actually execute \u2013 then you\u2019ll need to refactor the code for this input.<\/p>\n\n\n\n<p>The main recommendation here is to defer non-essential computations.<\/p>\n\n\n\n<p>In other words, execute the part of the interaction that the user immediately sees and expects. Then, after updating the frame, perform any other calculations or interactions behind the scenes.<\/p>\n\n\n\n<p>Say, for instance, that the user clicks a button that opens a window and also logs an event showing that they clicked the button. You would want your code to open the window first, \u201ccompleting\u201d the interaction from the perspective of the user.<\/p>\n\n\n\n<p>Then, once the interaction is completed, log the event that the user won\u2019t see or experience directly.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-fixing-presentation-delay\">Fixing Presentation Delay<\/h4>\n\n\n\n<p>It\u2019s possible that the input and the interaction are both happening pretty quickly, but it\u2019s taking a long time for the browser to update the presentation with the new frame.<\/p>\n\n\n\n<p>Unfortunately, there isn\u2019t a <i>lot <\/i>of refactoring that will help with this.<\/p>\n\n\n\n<p>But a few things could cause a longer-than-normal delay:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Overuse of <b>requestAnimationFrame()<\/b>. Each time this function is called, it creates a tiny delay. So look for cases where it may be used too frequently or unnecessarily.<\/li>\n\n\n\n<li>\u201cAsync\u201d attributes run awry. Depending on the context, some resources you\u2019ve marked for async rendering might ignore the directive or load unexpectedly. If that happens, it will delay other render path items and the next frame.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"h-6-time-to-first-byte-ttfb\" class=\"wp-block-heading\">#6 &#8211; Time to First Byte (TTFB)<\/h2>\n\n\n\n<p>Now, we find ourselves thinking about that very first instant when a webpage loads.<\/p>\n\n\n\n<p>Before the page can even start to render, the user\u2019s browser needs to make contact with the web server, figure out who it\u2019s connecting to, and get marching orders about what to start loading in what order.<\/p>\n\n\n\n<p>That initial handshake contains the first byte of information. How quickly that byte arrives is like the pistol shot at the start of a horse race.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-is-time-to-first-byte\">What is Time to First Byte?<\/h3>\n\n\n\n<p>Time to First Byte is the time it takes your browser to go through processes like DNS lookup, TCP and SSL handshakes, and connection setup in order to request \u2013 and receive \u2013 the first bytes of information from a web server. The speed of establishing connection with the web server is almost entirely dependent on the server itself and how the website is hosted.<\/p>\n\n\n\n<p>It\u2019s measured in milliseconds:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Good: &lt; 800ms<\/li>\n\n\n\n<li>Needs Improvement: 800 &#8211; 1800ms<\/li>\n\n\n\n<li>Poor: &gt; 1800ms<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-techniques-to-improve-ttfb\">Techniques to Improve TTFB<\/h3>\n\n\n\n<p>You can think of TTFB as the time you spend at the starting line before the pistol is fired. Anything that delays the initial greenlight will add time to TTFB and the overall page load time.<\/p>\n\n\n\n<p>So what are your options for improvement?<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-eliminate-redirects\">Eliminate Redirects<\/h4>\n\n\n\n<p>First and foremost, eliminate page redirects whenever possible. If you\u2019re redirecting users from one page to another, the time it takes to execute falls within the TTFB window, which means you\u2019ll add a significant amount of time to your score.<\/p>\n\n\n\n<p>This includes 301 redirects from old URLs to a new one, as well as temporary redirects and other implementations.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-upgrade-your-web-hosting\">Upgrade Your Web-Hosting<\/h4>\n\n\n\n<p>Hosting plays a huge role in your website\u2019s overall speed and performance score, especially when it comes to TTFB.<\/p>\n\n\n\n\n\n<div class=\"glossary-term\">\n\t<a\n\t\tclass=\"glossary-term__above-title\"\n\t\thref=\"\"\n\t\ttarget=\"_blank\"\n\t\trel=\"noopener noreferrer\"\n\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span><\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n    <h3>Hosting Provider<\/h3>\n    <p>A hosting provider is a business that charges a fee in exchange for \u201crenting\u201d server space and resources. You can choose any hosting provider that you want to launch a new website.<\/p>\n            <a\n            href=\"https:\/\/www.dreamhost.com\/glossary\/hosting\/hosting-provider\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Read More                    <\/a>\n\n<\/div>\n\n\n\n<p>You\u2019ll want to look at the specifics of your web hosting provider, paying close attention to things like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Shared vs dedicated hosting<\/b>: Is your website hosted on its own instance or is it sharing resources with other users and their websites? Dedicated hosting usually costs more but provides more consistent performance.<\/li>\n\n\n\n<li><b>Memory (RAM)<\/b>: The memory your site can access on the server plays a major role in its overall performance. If the memory is maxed out, then the server won\u2019t be able to process and respond to new requests.<\/li>\n\n\n\n<li><b>CPU \/ Processor:<\/b> The speed of the server\u2019s processor also plays a role in its response speed and processing time.<\/li>\n\n\n\n<li><b>Infrastructure updates<\/b>: Is the software running on the server kept up to date and free of errors or conflicts? Update the latest versions of PHP, MySQL, and other essential applications to maximize performance.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-implement-caching\">Implement Caching<\/h4>\n\n\n\n<p>On so-called \u201cdynamic websites,\u201d like sites running on WordPress, caching your pages can make huge improvements to page load times and TTFB.<\/p>\n\n\n\n<p>Caching essentially means that rather than fetching information from your site\u2019s database each time a page is loaded, the site will store a copy of the page and serve that up to the user. It\u2019s much faster than looking up information each time.<\/p>\n\n\n\n<p>For a breakdown on how this works, read <a href=\"https:\/\/www.dreamhost.com\/blog\/a-comprehensive-guide-to-website-caching\/\" target=\"_blank\" rel=\"noopener\">our guide to website caching<\/a>.<\/p>\n\n\n\n<h2 id=\"h-a-note-about-speed-index\" class=\"wp-block-heading\">A Note About Speed Index<\/h2>\n\n\n\n<p>We didn\u2019t include a separate section focused on the Speed Index metric in this guide because that\u2019s essentially measuring the <i>overall <\/i>load time of the page.<\/p>\n\n\n\n<p>This means that addressing Speed Index issues is usually a matter of tackling the other related metrics we\u2019ve already covered:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>First Contentful Paint<\/li>\n\n\n\n<li>Largest Contentful Paint<\/li>\n\n\n\n<li>Interaction to Next Paint<\/li>\n\n\n\n<li>Time to First Byte<\/li>\n<\/ul>\n\n\n\n<p>Each will play a small role in the cumulative page speed and addressing them directly should improve your overall Speed Index score.<\/p>\n\n\n\n<h2 id=\"h-final-thoughts-on-pagespeed-insights\" class=\"wp-block-heading\">Final Thoughts on PageSpeed Insights<\/h2>\n\n\n\n<p>In this guide, we\u2019ve covered just about everything there is to know about the PageSpeed Insights report and how you can strategically address each potential problem.<\/p>\n\n\n\n<p>Altogether, I expect that page performance, accessibility, and technical best practices will continue to grow in importance. We\u2019re building the web together \u2013 one website at a time \u2013 and that relies on us all investing in keeping the web open, accessible, and beautiful.<\/p>\n\n\n\n\n\n<div\n\tclass=\"article-cta-shared article-cta-small\"\n>\n    <div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/article-small-ad-cta-placeholder.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/article-small-ad-cta-placeholder-x2.webp 2x\"  alt=\"Ad background image\" \/><\/div>\n\n\n\n\n  <div class=\"content-btm\">\n    <h2\n      class=\"h2--md\"\n    >\n      Take Charge with Flexible VPS Hosting\n    <\/h2>\n    <p\n      class=\"p--md\"\n    >\n      Here\u2019s how DreamHost\u2019s VPS offering stands apart: 24\/7 customer support, an intuitive panel, scalable RAM, unlimited bandwidth, unlimited hosting domains, and SSD storage.\n    <\/p>\n\n            <a\n            href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Choose Your VPS Plan                    <\/a>\n\n  <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>On the Internet, there is no speed limit \u2013 but thankfully, there is a speedometer. Your website\u2019s speed and performance has a major impact on business. It can improve your search rankings and SEO, increase website engagement, and drive more conversions \u2013 and revenue. But before you can optimize your website\u2019s speed, you need to [&hellip;]<\/p>\n","protected":false},"author":1060,"featured_media":40101,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_metadesc":"Want to improve your website's SEO with a perfect score on Google's PageSpeed Insights report? Our comprehensive guide will walk you through the steps to optimize your site's performance and achieve a 100% score.","toc_headlines":"[[\"h-what-is-google-pagespeed-insights\",\"What is Google PageSpeed Insights?\"],[\"h-page-speed-and-seo\",\"Page Speed and SEO\"],[\"h-how-pagespeed-insights-works\",\"How PageSpeed Insights Works\"],[\"h-how-to-use-this-guide-to-improve-your-pagespeed-insights-score\",\"How to Use This Guide to Improve Your PageSpeed Insights Score\"],[\"h-1-first-contentful-paint-fcp\",\"#1 - First Contentful Paint (FCP)\"],[\"h-2-first-input-delay-fid-total-blocking-time-tbt-and-time-to-interactive-tti\",\"#2 - First Input Delay (FID), Total Blocking Time (TBT), and Time to Interactive (TTI)\"],[\"h-3-largest-contentful-paint-lcp\",\"#3 - Largest Contentful Paint (LCP)\"],[\"h-4-cumulative-layout-shift-cls\",\"#4 - Cumulative Layout Shift (CLS)\"],[\"h-5-interaction-to-next-paint-inp\",\"#5 - Interaction to Next Paint (INP)\"],[\"h-6-time-to-first-byte-ttfb\",\"#6 - Time to First Byte (TTFB)\"],[\"h-a-note-about-speed-index\",\"A Note About Speed Index\"],[\"h-final-thoughts-on-pagespeed-insights\",\"Final Thoughts on PageSpeed Insights\"]]","hide_toc":false,"footnotes":""},"categories":[12840,550],"tags":[],"class_list":["post-40100","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-marketing","category-tutorials"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Score 100% on PageSpeed Insights Report - DreamHost<\/title>\n<meta name=\"description\" content=\"Want to improve your website&#039;s SEO with a perfect score on Google&#039;s PageSpeed Insights report? Our comprehensive guide will walk you through the steps to optimize your site&#039;s performance and achieve a 100% score.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PageSpeed Insights Deep Dive (&amp; How to Score 100)\" \/>\n<meta property=\"og:description\" content=\"Boost your website&#039;s SEO with a perfect PageSpeed score. Our comprehensive guide can help!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-18T14:00:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-22T06:38:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-Report-Social-Image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Brian Glassman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"PageSpeed Insights Deep Dive (&amp; How to Score 100)\" \/>\n<meta name=\"twitter:description\" content=\"Boost your website&#039;s SEO with a perfect PageSpeed score. Our comprehensive guide can help!\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian Glassman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"28 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Score 100% on PageSpeed Insights Report - DreamHost","description":"Want to improve your website's SEO with a perfect score on Google's PageSpeed Insights report? Our comprehensive guide will walk you through the steps to optimize your site's performance and achieve a 100% score.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/","og_locale":"en_US","og_type":"article","og_title":"PageSpeed Insights Deep Dive (& How to Score 100)","og_description":"Boost your website's SEO with a perfect PageSpeed score. Our comprehensive guide can help!","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2023-04-18T14:00:32+00:00","article_modified_time":"2025-05-22T06:38:06+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-Report-Social-Image.jpg","type":"image\/jpeg"}],"author":"Brian Glassman","twitter_card":"summary_large_image","twitter_title":"PageSpeed Insights Deep Dive (& How to Score 100)","twitter_description":"Boost your website's SEO with a perfect PageSpeed score. Our comprehensive guide can help!","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Brian Glassman","Est. reading time":"28 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/"},"author":{"name":"Brian Glassman","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/e25c31f16fee80576bdd8b93a066f3de"},"headline":"PageSpeed Insights Deep Dive (Full Walkthrough &#038; Tips for Scoring 100)","datePublished":"2023-04-18T14:00:32+00:00","dateModified":"2025-05-22T06:38:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/"},"wordCount":5990,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-Report-Hero-Image.jpg","articleSection":["Marketing","Tutorials"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/","name":"How to Score 100% on PageSpeed Insights Report - DreamHost","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-Report-Hero-Image.jpg","datePublished":"2023-04-18T14:00:32+00:00","dateModified":"2025-05-22T06:38:06+00:00","description":"Want to improve your website's SEO with a perfect score on Google's PageSpeed Insights report? Our comprehensive guide will walk you through the steps to optimize your site's performance and achieve a 100% score.","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-Report-Hero-Image.jpg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2023\/04\/PageSpeed-Insights-Report-Hero-Image.jpg","width":1460,"height":1095,"caption":"PageSpeed Insights Report Hero Image"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/pagespeed-insights-report\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dhblog.dream.press\/blog\/"},{"@type":"ListItem","position":2,"name":"PageSpeed Insights Deep Dive (Full Walkthrough &#038; Tips for Scoring 100)"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/e25c31f16fee80576bdd8b93a066f3de","name":"Brian Glassman","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/01\/brian-glassman-dreamhost-150x150.jpg","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/01\/brian-glassman-dreamhost-150x150.jpg","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2022\/01\/brian-glassman-dreamhost-150x150.jpg","caption":"Brian Glassman"},"description":"SEO leader and content marketer, Brian is DreamHost\u2019s Director of SEO. Based in Chicago, Brian enjoys the local health food scene (deep dish pizza, Italian beef sandwiches) and famous year-round warm weather. Follow Brian on LinkedIn.","sameAs":["https:\/\/www.linkedin.com\/in\/brianglassmandesign\/"],"url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/brian\/"}]}},"lang":"en","translations":{"en":40100,"es":40181,"de":52146,"pl":57393,"pt":57397,"ru":57400,"uk":57406,"it":68951,"fr":71550,"nl":71577},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/40100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1060"}],"replies":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/comments?post=40100"}],"version-history":[{"count":10,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/40100\/revisions"}],"predecessor-version":[{"id":61474,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/40100\/revisions\/61474"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/40101"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=40100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=40100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=40100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}