<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Martin Michálek</title>
    <description>The latest articles on DEV Community by Martin Michálek (@machal).</description>
    <link>https://dev.to/machal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4097695%2F275f366e-a45f-4b35-a17d-8916ba537041.jpg</url>
      <title>DEV Community: Martin Michálek</title>
      <link>https://dev.to/machal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/machal"/>
    <language>en</language>
    <item>
      <title>Delaying all JavaScript doesn’t make your site faster</title>
      <dc:creator>Martin Michálek</dc:creator>
      <pubDate>Tue, 22 Sep 2026 17:55:36 +0000</pubDate>
      <link>https://dev.to/machal/delaying-all-javascript-doesnt-make-your-site-faster-49jp</link>
      <guid>https://dev.to/machal/delaying-all-javascript-doesnt-make-your-site-faster-49jp</guid>
      <description>&lt;p&gt;This one annoys me. A lot of today's "speed up your site" plugins ship a single checkbox that lifts a Lighthouse score in the blink of an eye.&lt;/p&gt;

&lt;p&gt;What it does is delay the execution of &lt;em&gt;all&lt;/em&gt; JavaScript until the first user interaction — a scroll, a click, a tap.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fmichalek.blog%2Fassets%2Fimg%2Fcontent%2Fdest%2Fodkladani-javascriptu-spatne.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fmichalek.blog%2Fassets%2Fimg%2Fcontent%2Fdest%2Fodkladani-javascriptu-spatne.webp" alt="Checked Delay JavaScript execution setting stamped with This is wrong! in red" width="799" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

*This is wrong.*




&lt;p&gt;For real users, though, nothing gets faster. It can make things slower, and it can quietly break your analytics.&lt;/p&gt;

&lt;p&gt;It is a small con trick that our whole industry keeps tacitly accepting.&lt;/p&gt;

&lt;p&gt;This is an expanded version of one section from &lt;a href="https://pagespeed.one/en/blog/lighthouse-score-hacking" rel="noopener noreferrer"&gt;Fake fast websites: how Lighthouse scores get hacked&lt;/a&gt;, which I published on the PageSpeed.ONE blog. Here I look at this one technique only, and mostly at the specific plugins that sell it.&lt;/p&gt;

&lt;p&gt;Delaying all JavaScript sounds like a clever move — so why have we at PageSpeed.ONE optimised hundreds of sites and never once recommended this technique to a client?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it is wrong, yet works on Lighthouse so reliably {#why-it-works}
&lt;/h2&gt;

&lt;p&gt;Lighthouse loads a page and measures it. It does not scroll, does not click, never touches the screen.&lt;/p&gt;

&lt;p&gt;Delayed JavaScript therefore never runs during the test. Total Blocking Time disappears from the measurement — and that is the single heaviest metric in the Lighthouse score, a full thirty percent of it. LCP improves too, because the browser has nothing to execute.&lt;/p&gt;

&lt;p&gt;The score jumps up while the site itself got no faster. The JavaScript merely moved to later, often to the worst possible moment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fmichalek.blog%2Fassets%2Fimg%2Fcontent%2Fdest%2Fodkladani-javascriptu.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fmichalek.blog%2Fassets%2Fimg%2Fcontent%2Fdest%2Fodkladani-javascriptu.webp" alt="Comparison of normal JavaScript loading and loading delayed until user interaction" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

*Delayed JavaScript: scripts only load after a user interaction. It is evil.*




&lt;p&gt;I am not alone in this view. Barry Pollard, who works on web performance at Google, named the pattern a while back:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A common pattern I see is to delay ALL JS until the user interacts with a page: Great for Lighthouse scores! Often terrible for users."&lt;/p&gt;

&lt;p&gt;– &lt;em&gt;&lt;cite&gt;&lt;a href="https://www.searchenginejournal.com/why-google-lighthouse-doesnt-include-inp-a-core-web-vital/528734/" rel="noopener noreferrer"&gt;Barry Pollard, Google Chrome&lt;/a&gt;&lt;/cite&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So what exactly is wrong with delaying everything?&lt;/p&gt;

&lt;h2&gt;
  
  
  Four risks of delaying all your JavaScript {#risks}
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It hurts interactions (INP).&lt;/strong&gt; A visitor lands on the page, reads the headline and clicks. That is the moment all the accumulated JavaScript fires at once. The main thread locks up and the user's first click waits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It hurts layout stability (CLS).&lt;/strong&gt; Scripts that render content late — carousels, personalisation — now run late. The Lighthouse test measures no shift at all, because that code never ran. So you cannot see your real CLS either.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your measurement stops working.&lt;/strong&gt; Analytics, cookie consent, chat, A/B tests and conversion tracking all get delayed along with everything else. Your data stops adding up and nobody knows why.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It devalues the Lighthouse score.&lt;/strong&gt; The score is not a measure of real-world speed, but it is useful for diagnosing changes. Strip all JavaScript out of it and you are measuring something other than your site.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let me be precise about the first point. There is no public field study measuring INP getting worse after this feature is switched on. What we have is a mechanism, described by people at Google, plus an admission from WP Rocket that INP did not improve in their own test. That is a strong indication, not a measured impact.&lt;/p&gt;

&lt;p&gt;Let me stop being polite and name the offenders.&lt;/p&gt;

&lt;h2&gt;
  
  
  The offenders. Which plugins ship this {#plugins}
&lt;/h2&gt;

&lt;p&gt;We went through the best-known WordPress optimisation plugins and the so-called one-click optimisers. For each one we looked for three things: what the setting is called, whether it is on by default, and whether the documentation mentions the risks.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plugin&lt;/th&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Warns?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://docs.wp-rocket.me/article/1349-delay-JavaScript-execution" rel="noopener noreferrer"&gt;WP Rocket&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Delay JavaScript Execution&lt;/td&gt;
&lt;td&gt;off&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://docs.litespeedtech.com/lscache/lscwp/pageopt/" rel="noopener noreferrer"&gt;LiteSpeed Cache&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Load JS Deferred → Delayed&lt;/td&gt;
&lt;td&gt;off&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://teamupdraft.com/blog/wp-optimize-release-v4-0-0/" rel="noopener noreferrer"&gt;WP-Optimize&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Delay JS&lt;/td&gt;
&lt;td&gt;off&lt;/td&gt;
&lt;td&gt;partly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://perfmatters.io/docs/delay-javascript/" rel="noopener noreferrer"&gt;Perfmatters&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Delay all scripts&lt;/td&gt;
&lt;td&gt;off&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://nitropack.io/" rel="noopener noreferrer"&gt;NitroPack&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Delay non-critical resources&lt;/td&gt;
&lt;td&gt;on in Ludicrous&lt;/td&gt;
&lt;td&gt;partly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://wordpress.org/plugins/wp-meteor/" rel="noopener noreferrer"&gt;WP Meteor&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Infinite Delay&lt;/td&gt;
&lt;td&gt;off&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://autoptimize.com/pro/" rel="noopener noreferrer"&gt;Autoptimize Pro&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Delay JavaScript (timeout 0)&lt;/td&gt;
&lt;td&gt;off&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://speedycache.com/docs/file-optimization/how-to-delay-js-until-user-interaction" rel="noopener noreferrer"&gt;SpeedyCache&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Delay All&lt;/td&gt;
&lt;td&gt;off&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last column needs explaining. "Partly" means the docs only warn that your site might break, while saying nothing about the effect on the Lighthouse score or on users.&lt;/p&gt;

&lt;p&gt;Only one plugin, SpeedyCache, also warns you that your analytics will break.&lt;/p&gt;

&lt;p&gt;Two rows deserve a comment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LiteSpeed Cache has two paths to the same result.&lt;/strong&gt; The direct one is Load JS Deferred set to Delayed: scripts wait for interaction, it is off by default, and the &lt;a href="https://docs.litespeedtech.com/lscache/lscwp/pageopt/" rel="noopener noreferrer"&gt;docs&lt;/a&gt; warn about the risks. The other is &lt;a href="https://docs.litespeedtech.com/lscache/lscwp/general/" rel="noopener noreferrer"&gt;Guest Optimization&lt;/a&gt; — a bundle of maximum optimisations for first visits and bots. Guest Mode, without which Guest Optimization does nothing, starts off, so a fresh install does not ship this technique on its own. But once Guest Mode is on (or a hosting preset turns it on for you), Guest Optimization can &lt;a href="https://github.com/litespeedtech/lscache_wp/issues/997" rel="noopener noreferrer"&gt;silently force Delayed mode&lt;/a&gt;, even if Load JS Deferred is set to OFF. The bug report claims that is the default on Hostinger; Hostinger does not confirm it in its own docs, so treat that as a signal, not a fact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WP Rocket changed the rules in version 3.9.&lt;/strong&gt; Until then you had to list the scripts you wanted delayed. From 3.9 on, everything is delayed and you list the exceptions instead. For new users that exception list starts empty, so the moment you enable the feature, absolutely everything gets delayed. To be fair: WP Rocket does mention the INP risk, but on a different and far less visited help page. On the page for the feature itself, there is not a word about it.&lt;/p&gt;

&lt;p&gt;A good honesty indicator is the &lt;strong&gt;timeout&lt;/strong&gt;. Plugins that enforce a time limit will eventually run the script even without interaction, so Lighthouse sees it. Products with no timeout, or that let you set it to zero, wait for an interaction forever. That smells a bit like optimisation for the test alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The vendors know. Some even wrote it down {#vendors}
&lt;/h2&gt;

&lt;p&gt;We do not have to speculate about whether vendors know what their feature does to speed tests. Some of them have it in black and white in their own documentation.&lt;/p&gt;

&lt;p&gt;WP Rocket, on releasing version 3.9:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This means the JavaScript files won't be detected by Lighthouse… Is that cheating? Not really if you consider the following points…"&lt;/p&gt;

&lt;p&gt;– &lt;em&gt;&lt;cite&gt;&lt;a href="https://wp-rocket.me/blog/wp-rocket-3-9/" rel="noopener noreferrer"&gt;WP Rocket blog&lt;/a&gt;&lt;/cite&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;LiteSpeed goes further in its docs and admits the feature also masks a site's real problems:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This setting can greatly improve page speed scores… Additionally, Guest Optimization can 'mask' any real problems your site may have."&lt;/p&gt;

&lt;p&gt;– &lt;em&gt;&lt;cite&gt;&lt;a href="https://docs.litespeedtech.com/lscache/lscwp/general/" rel="noopener noreferrer"&gt;LiteSpeed Cache documentation&lt;/a&gt;&lt;/cite&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And Frank Goossens, the author of Autoptimize, wrote this about the option to set the timeout to zero:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Setting the delay to 0 is a bit shady because at that point you are hiding those assets for performance tests."&lt;/p&gt;

&lt;p&gt;– &lt;em&gt;&lt;cite&gt;&lt;a href="https://blog.futtta.be/2023/03/14/aopro-1-2-delay-js-css-html-as-long-as-you-want/" rel="noopener noreferrer"&gt;Frank Goossens&lt;/a&gt;&lt;/cite&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The numbers WP Rocket published with the &lt;a href="https://wp-rocket.me/blog/wp-rocket-3-7/" rel="noopener noreferrer"&gt;3.7 release&lt;/a&gt; are worth a mention too. On their own site, this feature moved the mobile score from 46 to 86 points. Meanwhile their &lt;a href="https://wp-rocket.me/google-core-web-vitals-wordpress/interaction-to-next-paint-insight/" rel="noopener noreferrer"&gt;own INP write-up&lt;/a&gt; states that the INP value did not change.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fmichalek.blog%2Fassets%2Fimg%2Fcontent%2Fdest%2Fwp-rocket-delay-js.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fmichalek.blog%2Fassets%2Fimg%2Fcontent%2Fdest%2Fwp-rocket-delay-js.webp" alt="WP Rocket documentation for the Delay JavaScript execution setting" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

*WP Rocket writes only about the benefits of "Delay JS execution" and leaves out the risks.*




&lt;h2&gt;
  
  
  Careful, not everyone who looks like an offender is one {#not-every-offender}
&lt;/h2&gt;

&lt;p&gt;The word "delay" gets used pretty loosely in plugin land and it is easy to get burned. These features do &lt;strong&gt;not&lt;/strong&gt; delay until interaction, even if the name suggests they might:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Breeze&lt;/strong&gt; by Cloudways has a "Delay All JavaScript" setting, but it actually adds the &lt;code&gt;defer&lt;/code&gt; attribute and loads scripts as modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jetpack Boost&lt;/strong&gt; and its "Defer Non-Essential JavaScript" moves &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tags to the end of the document.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed Optimizer&lt;/strong&gt; by SiteGround adds a plain &lt;code&gt;defer&lt;/code&gt; under "Defer Render-blocking JavaScript".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rocket Loader&lt;/strong&gt; by &lt;a href="https://developers.cloudflare.com/speed/optimization/content/rocket-loader/" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt; uses the same &lt;code&gt;type&lt;/code&gt; attribute trick, but it puts scripts back in play after the page renders, not after an interaction. So Lighthouse does run and measure them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All four can cause other trouble, script execution order for instance. But they do not artificially inflate the Lighthouse score.&lt;/p&gt;

&lt;h2&gt;
  
  
  When delaying is the right call {#when-its-fine}
&lt;/h2&gt;

&lt;p&gt;To be fair: delaying code until a user interacts is sometimes exactly the right solution. The difference is whether you delay &lt;em&gt;one specific component&lt;/em&gt; or &lt;em&gt;everything&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The textbook case is the facade pattern. Instead of an embedded YouTube video you show a preview image with a play button, and load the real player on click. The same approach works for chat widgets, maps and comments. I write more about this in my pieces on third-party scripts and lazy loading over on my Czech blog.&lt;/p&gt;

&lt;p&gt;The clearest tell is how Lighthouse treats the two techniques. For the facade pattern it has a dedicated audit recommending it. For blanket delaying of all JavaScript it has nothing at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to spot the bad kind on your site {#how-to-spot}
&lt;/h2&gt;

&lt;p&gt;These plugins leave fairly obvious traces in your HTML. Most often they rewrite the &lt;code&gt;type&lt;/code&gt; attribute on a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag to a value the browser does not understand, and hide the original script URL in a custom attribute.&lt;/p&gt;

&lt;p&gt;What to look for in the page source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;type="text/rocketlazyloadscript"&lt;/code&gt; and &lt;code&gt;data-rocket-src&lt;/code&gt; – WP Rocket&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;type="litespeed/javascript"&lt;/code&gt; – LiteSpeed Cache&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;type="pmdelayedscript"&lt;/code&gt; – Perfmatters&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;type="javascript/blocked"&lt;/code&gt; – WP Meteor&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;type="text/plain"&lt;/code&gt; with a &lt;code&gt;data-src&lt;/code&gt; attribute – WP-Optimize&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you would rather not read code, load the page with the Network panel open and do not move your mouse. Then move it. If a batch of JavaScript requests fires at that exact moment, you have your answer.&lt;/p&gt;

&lt;p&gt;And always finish by looking at &lt;a href="//../guide/web-vitals.md"&gt;real-user data&lt;/a&gt;. A greener lab score with no improvement in user data is not a win.&lt;/p&gt;

&lt;h2&gt;
  
  
  One checkbox cannot replace engineering work {#conclusion}
&lt;/h2&gt;

&lt;p&gt;Deciding what loads when, and in what order, is engineering work that requires knowing the specific site.&lt;/p&gt;

&lt;p&gt;One checkbox that delays all JavaScript does not do that work.&lt;/p&gt;

&lt;p&gt;What it looks like when a whole industry heads in this direction is what we describe in &lt;a href="https://pagespeed.one/en/blog/lighthouse-score-hacking" rel="noopener noreferrer"&gt;Fake fast websites: how Lighthouse scores get hacked&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You will also find our investigation of the Website Speedy plugin there. After switching it off we watched the score drop from 95 to 60 points, without a single measurable change in user-perceived speed.&lt;/p&gt;

</description>
      <category>webperf</category>
      <category>javascript</category>
      <category>wordpress</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Deferring all JavaScript until interaction is not an optimisation. It's a Lighthouse hack</title>
      <dc:creator>Martin Michálek</dc:creator>
      <pubDate>Thu, 27 Aug 2026 15:14:51 +0000</pubDate>
      <link>https://dev.to/machal/we-disabled-the-speed-plugin-and-the-core-web-vitals-remained-the-same-of2</link>
      <guid>https://dev.to/machal/we-disabled-the-speed-plugin-and-the-core-web-vitals-remained-the-same-of2</guid>
      <description>&lt;p&gt;The web performance community is caught in a rather misleading cycle. People often mistake the Lighthouse score for actual web speed. This misconception is exploited by plugin developers who focus on improving this metric without enhancing the true speed of the website.&lt;/p&gt;

&lt;p&gt;There is no shortage of plugins on the market promising one-click website acceleration. Let's mention WP-Optimize, WP Rocket, or Website Speedy. However, their impact often results in merely improving the Lighthouse score.&lt;/p&gt;

&lt;p&gt;They primarily achieve this by deferring all JavaScript loading. This might improve one metric but degrade others, potentially harming your analytics.&lt;/p&gt;

&lt;p&gt;For the sake of this article, we scrutinized Website Speedy more closely and, through client experimentation, discovered that disabling the plugin returns the Lighthouse score to normal values but does nothing for the website's speed.&lt;/p&gt;

&lt;p&gt;Moreover, we observe some rather suspicious testing detection, suggesting that a website tested with Lighthouse might behave differently from when it's used by real users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lighthouse Score: A Flawed Metric Yet Everyone's Favourite
&lt;/h2&gt;

&lt;p&gt;Every month, during client onboarding at PageSpeed.ONE, I speak with someone eager to "improve their PageSpeed Insights score". You know, that colourful little circle. Yes, the Lighthouse score.&lt;/p&gt;

&lt;p&gt;We understand this. It's a single, colourful number, easy to share with colleagues over Slack. However, the Lighthouse score is the result of a synthetic test of a single page, in a single environment, with a single configuration. The composition and weights can change between Lighthouse versions. Similarly, Lighthouse on your computer might show a different number than Lighthouse in PageSpeed Insights.&lt;/p&gt;

&lt;p&gt;Let's reiterate:&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://pagespeed.one/en/metrics/lps" rel="noopener noreferrer"&gt;Lighthouse score&lt;/a&gt; is not a web speed metric. It is a technical diagnostic indicator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fumtqd7esnmqwn294mfg3.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fumtqd7esnmqwn294mfg3.webp" alt="Lighthouse score is not web speed" width="800" height="449"&gt;&lt;/a&gt; &lt;em&gt;Are you also looking at the wrong place in PageSpeed Insights?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Web speed emerges not in Lighthouse but in the phones of your visitors, on pub Wi-Fi, on an old Chinese smartphone with three signal bars, ten open tabs, and during cookie consent clicks.&lt;/p&gt;

&lt;p&gt;Lighthouse doesn't see this. It isn't a user. Lighthouse doesn't scroll, click, log in, open product filters, or reach checkout.&lt;/p&gt;

&lt;p&gt;True speed is measured by &lt;a href="https://pagespeed.one/en/metrics/cwv" rel="noopener noreferrer"&gt;Core Web Vitals&lt;/a&gt; metrics from the &lt;a href="https://pagespeed.one/en/know-how/crux" rel="noopener noreferrer"&gt;Chrome UX Report&lt;/a&gt; database. (Differences between lab and real user data are summarized in &lt;a href="https://pagespeed.one/en/know-how/synth-crux-rum" rel="noopener noreferrer"&gt;synth vs. CrUX vs. RUM&lt;/a&gt;.)&lt;/p&gt;

&lt;h2&gt;
  
  
  An Economist Would Say: "Of Course, Goodhart's Law"
&lt;/h2&gt;

&lt;p&gt;Economist Charles Goodhart once penned a sentence now taught at universities:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu1tvu9s65r5rzcwn6m4u.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu1tvu9s65r5rzcwn6m4u.webp" alt="Charles Goodhart's quote on metrics and goals" width="799" height="446"&gt;&lt;/a&gt; &lt;em&gt;"When a measure becomes a target, it ceases to be a good measure."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This fits perfectly here. The Lighthouse score has become exactly that.&lt;/p&gt;

&lt;p&gt;People want a simple number. Google (somewhat misguidedly, in my opinion) displays it prominently and colourfully in &lt;a href="https://pagespeed.web.dev/" rel="noopener noreferrer"&gt;PageSpeed Insights&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Clients inquire about the Lighthouse score with agencies. Some agencies then promise to improve it. Then come the plugins, promising the same, just faster and effortlessly.&lt;/p&gt;

&lt;p&gt;When a diagnostic number becomes a commercial argument, a market for its improvement emerges. And once the calculation is predictable, someone starts hacking the metric instead of optimizing the site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deferring JavaScript is Not Optimization, but Problem Shifting
&lt;/h2&gt;

&lt;p&gt;A vast number of today’s "speed-up" plugins have a single checkbox that can boost the Lighthouse score by tens of points in five seconds. They defer all JavaScript execution to the first user interaction. Scroll, click, screen touch.&lt;/p&gt;

&lt;p&gt;Why does this work so reliably to hack the Lighthouse score? Lighthouse loads the page and measures. It doesn’t scroll, click, or touch the screen. Deferred JavaScript, therefore, never runs during the test. Metrics like Total Blocking Time (&lt;a href="https://pagespeed.one/en/metrics/tbt" rel="noopener noreferrer"&gt;TBT&lt;/a&gt;), which carry the most weight in the Lighthouse score, disappear from measurement. The loading speed (&lt;a href="https://pagespeed.one/en/metrics/lcp" rel="noopener noreferrer"&gt;LCP&lt;/a&gt;) also improves.&lt;/p&gt;

&lt;p&gt;The Lighthouse score shoots up, yet nothing speeds up on the site. For real users, nothing changes. It merely shifts to later – often the worst possible moment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1s9n7b5txnyf3q15qtxn.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1s9n7b5txnyf3q15qtxn.webp" alt="Comparison of standard JavaScript loading and Delay JS execution" width="800" height="452"&gt;&lt;/a&gt; &lt;em&gt;Illustration of JavaScript deferral. Scripts load only after user interaction. It's evil.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At PageSpeed.ONE, we've optimized hundreds of sites, but we've never recommended this technique to clients. What are the risks of deferring all JavaScripts?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Negative impact on interactions (INP).&lt;/strong&gt; A user arrives on a page, reads the headline, and clicks. At that moment, all deferred JavaScript, accumulated till then, runs. The browser's main thread blocks, and the user's first click waits. This can worsen the &lt;a href="https://pagespeed.one/en/metrics/inp" rel="noopener noreferrer"&gt;INP&lt;/a&gt; metric, which Google includes in Core Web Vitals.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Negative impact on layout shifts (CLS).&lt;/strong&gt; Scripts that render content, such as carousels, personalization, and more, run late if JavaScript is deferred. In a Lighthouse test, no shift is measured because the code never runs. Thus, you don't see the real &lt;a href="https://pagespeed.one/en/metrics/cls" rel="noopener noreferrer"&gt;CLS&lt;/a&gt; value.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Measurement functionality.&lt;/strong&gt; Analytics, cookie consent, chat, A/B tests, and conversion tracking defer along with everything else. Your data might not align, and no one knows why.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Devaluing the Lighthouse score.&lt;/strong&gt; As mentioned, the Lighthouse score isn't a web speed metric, but it's useful for diagnosing changes or optimizations. With no JavaScript in the Lighthouse score, you're measuring something entirely different from your website.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Deferring all JavaScripts is a poor technique. Deciding what to load when and in what order is engineering work that requires knowledge of the specific site. A single checkbox deferring all JavaScript doesn't replace this work.&lt;/p&gt;

&lt;p&gt;And the most problematic issue in the end. Providers of these features usually do not state what this will do to the Lighthouse score and how it might jeopardize real user speed. If they did, customers would realize they're often buying not a faster website but merely a better test number.&lt;/p&gt;

&lt;h2&gt;
  
  
  WP-Optimize: Caught Optimizing the Lighthouse Score
&lt;/h2&gt;

&lt;p&gt;In 2022, developer &lt;a href="https://x.com/GijoVarghese_/status/1563097754322501632" rel="noopener noreferrer"&gt;Gijo Varghese&lt;/a&gt; published a screenshot of the &lt;a href="https://teamupdraft.com/wp-optimize/" rel="noopener noreferrer"&gt;WP-Optimize&lt;/a&gt; plugin, showing JavaScript loading only when the browser isn’t Lighthouse, GTmetrix, headless Chrome, or Pingdom.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fehudpbd2vqmfopfdc4g2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fehudpbd2vqmfopfdc4g2.webp" alt="Gijo Varghese's tweet on testing tool detection in WP-Optimize" width="800" height="449"&gt;&lt;/a&gt; &lt;em&gt;The WP-Optimize code snippet shows an attempt to detect Lighthouse, Pingdom, or GTmetrix.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The maker of this WordPress optimization plugin &lt;a href="https://wptavern.com/wp-optimize-denies-allegations-of-cheating-performance-tools" rel="noopener noreferrer"&gt;publicly denied the allegations&lt;/a&gt;, claiming it was a specific "Defer using JavaScript" setting.&lt;/p&gt;

&lt;p&gt;Fine, but why is this setting there at all? We're back to the point that no genuine speed optimizer would do this. General WordPress speed tips can be found in &lt;a href="https://pagespeed.one/en/know-how/optimisation-wordpress" rel="noopener noreferrer"&gt;optimizing WordPress&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  WP Rocket: Where Optimization Ends
&lt;/h2&gt;

&lt;p&gt;The well-known optimization plugin &lt;a href="https://wp-rocket.me/" rel="noopener noreferrer"&gt;WP Rocket&lt;/a&gt; faces a similar issue. It also features a function with the innocuous-sounding name &lt;a href="https://docs.wp-rocket.me/article/1349-delay-javascript-execution" rel="noopener noreferrer"&gt;Delay JavaScript Execution&lt;/a&gt;. Activate the checkbox, and all scripts wait until the user scrolls, clicks, or touches the screen.&lt;/p&gt;

&lt;p&gt;Details were written as early as 2021 by Alexander Goller in an &lt;a href="https://www.alexandergoller.com/journal/13838/pagespeed-insights-wp-rocket-and-the-volkswagen-emissions-scandal" rel="noopener noreferrer"&gt;article&lt;/a&gt;, which rightly compares this issue to the Dieselgate emissions scandal, where Volkswagen cars altered engine settings during emissions tests to meet required values.&lt;/p&gt;

&lt;p&gt;What’s the current state? This setting still exists in WP Rocket. On the page for setting JavaScript deferral, WP Rocket simply claims it's one of the most powerful optimizations.&lt;/p&gt;

&lt;p&gt;Just a harmless plugin setting? I don’t think so. Nowhere on the feature page does WP Rocket mention what this does to the Lighthouse score. And that’s a problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkobr41szo6b2qdjj1pf2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkobr41szo6b2qdjj1pf2.webp" alt="WP Rocket documentation on Delay JavaScript execution" width="800" height="449"&gt;&lt;/a&gt; &lt;em&gt;WP Rocket only highlights the benefits of "Delay JS execution", not the risks.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So both WP-Optimize and WP Rocket continue to sell this feature without warning that it may artificially boost the Lighthouse score and the other risks I’ve outlined above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Website Speedy: Enhancing Speed or Lighthouse Score?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://websitespeedy.com/" rel="noopener noreferrer"&gt;Website Speedy&lt;/a&gt; is a tool for several platforms, claiming to be an "Automatic Website Speed Optimizer". One of our clients believed this and used the add-on for months, thinking it was helping the site’s speed.&lt;/p&gt;

&lt;p&gt;However, our colleague Michal Matuška discovered that this add-on might merely artificially boost the Lighthouse score. Judge for yourself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuq9jes89olpus4tnjgl2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuq9jes89olpus4tnjgl2.webp" alt="Website Speedy Homepage" width="800" height="448"&gt;&lt;/a&gt; &lt;em&gt;Website Speedy promises impacts on bounce rate and SEO rankings on its homepage.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Our Investigation Around Website Speedy
&lt;/h3&gt;

&lt;p&gt;It starts with the very website, where "business metric impact" and "Lighthouse score" are lumped together. Speed certainly &lt;a href="https://pagespeed.one/en/know-how/why-page-speed" rel="noopener noreferrer"&gt;affects business&lt;/a&gt;, but this cannot be linked to a synthetic metric.&lt;/p&gt;

&lt;p&gt;The marketing of these extensions relies on users who believe the Lighthouse score is web speed. And there are many.&lt;/p&gt;

&lt;p&gt;The authors of Website Speedy admit this in communication with us:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Our dashboards and documentation currently lead with lab scores, and we do not spell out that lab results can differ from what real users experience."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  In the Source Code of Website Speedy, We Found Testing Tool Detection
&lt;/h3&gt;

&lt;p&gt;Our colleague Michal couldn't resist examining Website Speedy's source code. It is heavily obfuscated, intentionally obscured.&lt;/p&gt;

&lt;p&gt;After decoding through several AI agents, we found a condition in the code that decides whether JavaScript on the site runs at all. And what do you think? Yes, it doesn’t run if it detects speed testing.&lt;/p&gt;

&lt;p&gt;Before publication, we asked Website Speedy for their stance. Founder Ishan Makkar responded swiftly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Our script does not detect or branch on Lighthouse, PageSpeed Insights, GTmetrix, headless browsers, or any synthetic testing environment."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He added that he personally reviewed the code on several live customer sites and could not replicate our findings. He offered us a clean demo with his current production version to verify ourselves.&lt;/p&gt;

&lt;p&gt;The demo arrived on August 18. Our colleague Michal Matuška found this in its script:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frw272ut6xsfccyf5omig.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frw272ut6xsfccyf5omig.webp" alt="isAuditBot function in Website Speedy script" width="799" height="446"&gt;&lt;/a&gt; &lt;em&gt;A snippet from Website Speedy's demo code. The hack was hidden from us.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The function is called &lt;code&gt;isAuditBot&lt;/code&gt;, meaning "is it an audit bot". The very first line returns &lt;code&gt;false&lt;/code&gt;, so in the demo they provided, the entire detection never executes. In the script from our client’s site, it wasn’t disabled.&lt;/p&gt;

&lt;p&gt;Incidentally, in that dead code section, strings are tested that suspiciously resemble the names of the most common synthetic measurement tools, such as GTmetrix, Lighthouse, PageSpeed, WebPageTest, and Headless Chrome.&lt;/p&gt;

&lt;p&gt;As proof of innocence, we were given an installation where the detection of testing tools was stripped in the quickest way possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Happened When We Disabled Website Speedy on the Client’s Site?
&lt;/h3&gt;

&lt;p&gt;We agreed with the client to temporarily disable Website Speedy. We can see quite clearly what happened to speed when the plugin stopped working. Almost nothing.&lt;/p&gt;

&lt;p&gt;The Lighthouse score took a nosedive...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjoc4sbyscfycpfx4vgf.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjoc4sbyscfycpfx4vgf.webp" alt="Graph of Lighthouse score after disabling Website Speedy" width="800" height="450"&gt;&lt;/a&gt; &lt;em&gt;Change in Lighthouse score of the homepage after disabling Website Speedy.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After disabling Website Speedy, the Lighthouse score on the homepage changed from 95 points to about 60. Did it worsen? No, it normalized.&lt;/p&gt;

&lt;p&gt;However, disabling the plugin had no impact on Core Web Vitals:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fasaszp56ggtxges8q7c7.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fasaszp56ggtxges8q7c7.webp" alt="Core Web Vitals graphs after disabling Website Speedy" width="800" height="450"&gt;&lt;/a&gt; &lt;em&gt;Development of Core Web Vitals after disabling the Website Speedy plugin.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We see no change except for other influences occurring on the site:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A slight slowdown in site speed (LCP) correlates with a fluctuation in &lt;a href="https://pagespeed.one/en/metrics/ttfb" rel="noopener noreferrer"&gt;TTFB&lt;/a&gt; (backend response).&lt;/li&gt;
&lt;li&gt;  CLS improves by modifying another site feature, unrelated in time.&lt;/li&gt;
&lt;li&gt;  It’s worth remembering that Google’s CrUX data shows a cumulative 28-day state, so changes manifest over a longer period.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Disabling Website Speedy led to a normalization of the Lighthouse score on our client’s site. But the site’s speed remained unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Our Methodology and What We’re Not Claiming
&lt;/h3&gt;

&lt;p&gt;To be fair, we should clarify the methodology of our investigation around Website Speedy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Website Speedy does not wish to disclose the plugin’s source code, so we are only publishing the source code of the demo they provided, which differs from the plugin’s source.&lt;/li&gt;
&lt;li&gt;  We experimented on one of our client’s sites.&lt;/li&gt;
&lt;li&gt;  We lack quantitative data from more projects.&lt;/li&gt;
&lt;li&gt;  Disabling the plugin and our code examination occurred in July 2026.&lt;/li&gt;
&lt;li&gt;  Other than disabling the plugin, we did not further optimize the site.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Website Speedy plugin kept the Lighthouse score high for our client, without delivering measurably faster web speed to real users.&lt;/p&gt;

&lt;p&gt;One problem lies with the plugin authors. But the bigger issue is with the users who pay for these plugins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don’t Dismiss Lighthouse. Just Don’t Make It the Goal
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://developer.chrome.com/docs/lighthouse" rel="noopener noreferrer"&gt;Lighthouse&lt;/a&gt; tool as a diagnostic. It will find a slow image, an unnecessarily large JavaScript bundle, or blocking CSS. For these purposes, Lighthouse is excellent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi5lpgqvc1mgr5m3ymc8l.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi5lpgqvc1mgr5m3ymc8l.webp" alt="Lighthouse score versus Core Web Vitals" width="800" height="448"&gt;&lt;/a&gt; &lt;em&gt;Web speed? Look at Core Web Vitals. Full stop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As your main business metrics for web speed, monitor data from real users. Core Web Vitals from the Chrome UX Report or data from your own measurements (&lt;a href="https://pagespeed.one/en/know-how/synth-crux-rum" rel="noopener noreferrer"&gt;RUM&lt;/a&gt;). Monitor the entire domain and the most important templates in &lt;a href="https://pagespeed.one/en/monitoring-plus" rel="noopener noreferrer"&gt;monitoring&lt;/a&gt;, not just a single URL occasionally.&lt;/p&gt;

&lt;p&gt;We know the demand for a single score for everything is high, so at PageSpeed.ONE, we also use our own &lt;a href="https://pagespeed.one/en/metrics/sps" rel="noopener noreferrer"&gt;PageSpeed.ONE Score&lt;/a&gt;, built on user data metrics from Core Web Vitals.&lt;/p&gt;

&lt;p&gt;In our one-time &lt;a href="https://pagespeed.one/en/app/insights" rel="noopener noreferrer"&gt;web speed test&lt;/a&gt;, we also de-emphasize the Lighthouse score as much as possible. Instead, we show Core Web Vitals trends and a verbal assessment of the speed status.&lt;/p&gt;

&lt;p&gt;If you want to verify a similar case yourself, the following approach will help.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Investigate a Suspicious Jump in Lighthouse Score
&lt;/h2&gt;

&lt;p&gt;Checklist for detecting suspicious Lighthouse score hacking:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Start by asking if the score jumped suspiciously quickly after installing a plugin or after a single configuration change.&lt;/li&gt;
&lt;li&gt;  Compare network requests and executed JavaScript in Lighthouse with regular browser loading.&lt;/li&gt;
&lt;li&gt;  Verify first scroll, click, cookie banner, filter opening, form, and checkout. Lighthouse doesn't scroll or click, but users do.&lt;/li&gt;
&lt;li&gt;  Check user data (CrUX or RUM) before and after the change. Greener lab scores without improved user data is not a win.&lt;/li&gt;
&lt;li&gt;  And most importantly: stop buying plugins that promise miraculous speed-ups with one click.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next time someone offers you a plugin that magically boosts your score in five minutes, ask them one thing:&lt;/p&gt;

&lt;p&gt;What impact will it have on real user speed, specifically Core Web Vitals? If they can't answer that question, you already have your answer.&lt;/p&gt;

&lt;p&gt;Keep your websites fast. And measure speed correctly.&lt;/p&gt;

</description>
      <category>webperf</category>
      <category>webdev</category>
      <category>wordpress</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
