Skip to content
Boomspot
  • Home
Loading...
Boomspot

Daily tech news, software development coverage, Apple reporting, and the gear behind modern music making.

TwitterLinkedIn

Browse

  • Categories
  • Tags
  • Authors

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Unsubscribe

© 2026 Boomspot. All rights reserved.

Built by Boomspot
Updated hourly

AI Content Disclosure: Articles on Boomspot are researched, written, and edited with the assistance of advanced AI systems. We combine software-assisted research with editorial oversight to deliver useful, accurate, and practical technical and music production content. Learn more about our editorial approach.

Browse by Category

Technology675Coding186Linux60SEO59Studio Gear40Music Production38Apple Rumors11

Popular Posts

Speed Up Linux Kernel Compile Time: 7 Practical Fixes

Speed Up Linux Kernel Compile Time: 7 Practical Fixes

8 min read
How to Prepare Shorts for Ask YouTube: A Creator Audit

How to Prepare Shorts for Ask YouTube: A Creator Audit

6 min read
Is Gibney's Four-Hour Musk Documentary Worth Your Time?

Is Gibney's Four-Hour Musk Documentary Worth Your Time?

5 min read
Linux Kernel AI-Generated Code Policy: Can You Submit It?

Linux Kernel AI-Generated Code Policy: Can You Submit It?

7 min read
How to Test Budget DJ Headphones and Speakers at Home

How to Test Budget DJ Headphones and Speakers at Home

10 min read

Recent Posts

Entry-Level Audio Jobs: Requirements by Role Compared

Entry-Level Audio Jobs: Requirements by Role Compared

Nov 8, 2026•9 min
How to Audit Brand Presence on Reddit: A Worked Example

How to Audit Brand Presence on Reddit: A Worked Example

Nov 8, 2026•9 min
ROLI Seaboard After Administration: Keep, Sell or Switch

ROLI Seaboard After Administration: Keep, Sell or Switch

Nov 8, 2026•8 min
Enable HDR in mpv on Wayland: Config, Checks, Fixes

Enable HDR in mpv on Wayland: Config, Checks, Fixes

Nov 8, 2026•7 min
GIMP Flatpak vs Snap vs AppImage: Which Updates Fastest?

GIMP Flatpak vs Snap vs AppImage: Which Updates Fastest?

Nov 4, 2026•8 min
  1. Home
  2. Coding
  3. PageSpeed Insights Score Changed Without Site Changes?
coding8 min read

PageSpeed Insights Score Changed Without Site Changes?

Your PageSpeed Insights score jumped overnight and nobody touched the code. Here is a five-step check to tell a Lighthouse version change from a real site change, plus a logging script.

S

Staff

November 8, 2026

Reviewed byDorian

PageSpeed Insights Score Changed Without Site Changes?

Your PageSpeed Insights Performance score jumped (or dropped) overnight, and nobody deployed anything. Same HTML, same scripts, same tag container. A client has a saved screenshot from last month and wants to know what happened.

Before you credit a release or blame a plugin, check one thing: did the measurement tool change? A lab score is the output of a specific Lighthouse build, and PageSpeed Insights (PSI) moves to new builds on its own schedule. This guide gives you a five-step check, a small logging script, and a client note you can fill in.

A worked example: Lighthouse 13.6.0

A vendor blog post from Apogee Watcher says Lighthouse 13.6.0 shipped on 27 October 2026 and that PSI was running it within about a week (source). It says the Performance weights did not change. What changed is Lantern, the model that estimates how a page would load under mobile throttling.

According to that post, Lantern now prefers Chrome's own render-blocking label for each request and falls back to fetch priority only when the label is missing. It also says text-based LCP in the same frame as first content is now estimated from the same requests and tasks used for FCP. The post adds that Barry Pollard noted scores often come out higher, especially on JavaScript-heavy pages.

Treat those details with care. They come from a single vendor post, so check them against the official Lighthouse 13.6.0 release notes before you repeat them to a client. The method below does not depend on them. It works for any future Lighthouse version bump.

The five-step diagnostic

  1. Find the Lighthouse version on both reports.
  2. Confirm the site really did not change.
  3. Check which metrics moved.
  4. Read the field data (CrUX) next to the lab score.
  5. Log the version and re-run before you write to anyone.

Step 1: Find the Lighthouse version on both reports

On the PSI web page, the vendor post says the version appears next to the emulated device in the report details. If you cannot spot it in a saved screenshot, that screenshot is weak evidence on its own.

The API is unambiguous. The PSI API v5 response carries the version at lighthouseResult.lighthouseVersion. If one report says 13.5.x and the other says 13.6.0, you are comparing two different measurements, and some of the gap may be the simulator rather than your code.

If the versions match, stop blaming the tool. A real site change or plain run-to-run noise is now the more likely cause.

Step 2: Confirm the site did not change

Be strict here. Check the last deploy, any CDN purge, tag-manager container publishes, A/B test or consent-banner changes, and third-party script updates. A script you do not own can change a lab score as easily as a commit can.

If nothing moved and the versions differ, the simulator is the leading suspect. That is an inference, not proof, so keep going.

Step 3: Check which metrics moved

Open the lab metrics and compare FCP, LCP, Total Blocking Time (TBT) and CLS between the two runs. The vendor post says the 13.6 changes centre on simulated paint timings. If FCP and LCP moved while TBT and CLS stayed close, that pattern fits a simulation change.

If TBT moved most, look at main-thread work: a new script, a longer task, a third-party tag. If CLS moved, look at layout: late-loading images, injected banners, font swaps. Those are site questions, and a version bump alone is a weaker explanation for them. See related: binary serialization vs json: varints, tags and caches for additional background.

The same post names JavaScript-heavy templates and text-first LCP blocks as the places the jump shows up. Image LCP behaves differently, it says, because work that finishes before the image paints can still stretch simulated LCP. So a template with a hero image may not move much, and that would not mean the tool is broken.

One caution: single Lighthouse runs vary. Run the same URL a few times before you decide a small difference means anything.

Step 4: Read the field data next to the lab score

The CrUX section of the same PSI report shows real Chrome visits over a rolling window. A Lighthouse upgrade does not rewrite it, so field LCP, INP and CLS should not jump overnight because Lantern changed.

That is why the field block settles arguments. If the lab score rose 12 points and the field numbers sit where they were, visitors did not get a faster site.

A higher lab Performance score also says nothing certain about search results. Lab Performance is a diagnostic blend, and field Core Web Vitals are what Google documents for page experience. Do not promise a ranking effect from a lab score change in either direction.

Some URLs will have no field data at all. See the failure case below.

Step 5: Log the version and re-run

A saved screenshot cannot answer this question next month. A dated row with the version can. The script below records it on every run, so the next comparison states which Lighthouse build produced each score.

A minimal logging script (unexecuted)

This script has not been run. It targets Node 18 or later (built-in fetch, no dependencies) and the PSI API v5. The field names follow the API response structure, so test it on one URL before you trust it. An API key is optional for light use, but unauthenticated requests may be rate-limited.

// psi-log.mjs (unexecuted example)
// Usage: PSI_API_KEY=yourkey node psi-log.mjs https://example.com/
import { appendFile } from 'node:fs/promises';

const url = process.argv[2];
if (!url) {
  console.error('Usage: node psi-log.mjs https://example.com/');
  process.exit(1);
}

const api = new URL('https://www.googleapis.com/pagespeedonline/v5/runPagespeed');
api.searchParams.set('url', url);
api.searchParams.set('strategy', 'mobile');
api.searchParams.set('category', 'performance');
if (process.env.PSI_API_KEY) api.searchParams.set('key', process.env.PSI_API_KEY);

const res = await fetch(api);
if (!res.ok) {
  console.error('PSI request failed with status ' + res.status);
  process.exit(1);
}
const data = await res.json(); We cover related ground in [schedule a nightly supabase edge function with pg_cron in depth](/schedule-a-nightly-supabase-edge-function-with-pg-cron).

const lh = data.lighthouseResult;
const a = lh.audits;
const field = data.loadingExperience;

// url-level, origin-only, or none
let fieldStatus = 'none';
if (field && field.metrics) {
  fieldStatus = field.origin_fallback ? 'origin-only' : 'url-level';
}

const row = [
  new Date().toISOString().slice(0, 10),
  url,
  lh.lighthouseVersion,
  Math.round(lh.categories.performance.score * 100),
  Math.round(a['first-contentful-paint'].numericValue),
  Math.round(a['largest-contentful-paint'].numericValue),
  Math.round(a['total-blocking-time'].numericValue),
  a['cumulative-layout-shift'].numericValue.toFixed(3),
  fieldStatus,
  (field && field.overall_category) || 'n/a'
].join(',');

await appendFile('psi-log.csv', row + '\n');
console.log('date,url,lighthouse,score,fcp_ms,lcp_ms,tbt_ms,cls,field,field_category');
console.log(row);

Expected output

The values below are invented to show the shape, not measured results:

date,url,lighthouse,score,fcp_ms,lcp_ms,tbt_ms,cls,field,field_category
2026-11-04,https://example.com/,13.6.0,91,1400,1900,120,0.020,url-level,FAST

The script also appends the row to psi-log.csv. Add the header line to that file once by hand, since the script only prints it to the console.

Verify it works

Run it against one URL, then load the same URL in the PSI web interface with the mobile tab selected. The version string should match the one on the report, and the score should land within a few points.

Also read: how to shut down dev vms at night: tags, schedule, alerts

Run the script twice in a row. A small score wobble is normal, but the version column should be identical.

Failure case: no field data

Low-traffic URLs often lack enough Chrome visits for URL-level CrUX data. The script then logs origin-only (the API fell back to site-wide data) or none (no field data returned). Do not read an origin-only result as proof about that specific page.

In that case you have only the lab score and the version to work with. Say so plainly in the client note instead of guessing at field status. Also watch for an HTTP 429 response, which usually means you are hitting the request limit. Add a key or space out the runs.

The client note

Keep it short and name the versions. Fill in the blanks:

PageSpeed Insights measured [URL] at [score A] on [date A] using Lighthouse [version x], and at [score B] on [date B] using Lighthouse [version y]. We made no changes to code, assets or tags between those dates [confirm this is true]. The changed metrics were [FCP / LCP / TBT / CLS]. Field data from CrUX for the same URL [moved / did not move / is unavailable for this URL because of low traffic]. We now log the Lighthouse version with every run, so future comparisons use one build.

If the versions differ and the field data did not move, add one sentence: the lab change reflects an updated simulation, not a change in what visitors experience. If the versions are the same and the metrics moved, drop that sentence and go back to step 2, because something on the site probably changed.

What to expect next

Your saved history will probably show a step when PSI upgrades Lighthouse, so annotate it when it happens. A scheduled run on the same URLs, using the CSV above or any tool that records the version, turns the next bump into a five-minute check instead of a debate.

Before you quote any 13.6 specifics to a client, read the official Lighthouse 13.6.0 release notes yourself.

Tags

Developer ToolsWeb DevelopmentCoding Best PracticesSoftware DevelopmentWeb Performance

Keep reading

Unlocking ChatGPT Developer Mode: Full MCP Client Access
Coding•4 min read

Unlocking ChatGPT Developer Mode: Full MCP Client Access

Unlock the power of ChatGPT Developer Mode with full MCP client access. Discover how to enhance your coding projects and streamline development.

Sep 11, 2025

Mastering MCP Elicitation for Enhanced AI Interactions
Coding•3 min read

Mastering MCP Elicitation for Enhanced AI Interactions

Discover the power of MCP elicitation in creating seamless AI interactions, from streamlining development to improving user satisfaction.

Sep 10, 2025

WebAssembly: Unleashing Native Speed in Web Browsers
Coding•4 min read

WebAssembly: Unleashing Native Speed in Web Browsers

WebAssembly is transforming web development with near-native performance, enabling more complex and efficient applications.

Sep 6, 2025

More stories for your next project

Get tech, coding, and music production updates in your inbox.

Unsubscribe anytime.