paulkinchla.com/blog/2020/10/28/javascript-still-a-ghost
https://paulkinchla.com/blog/2020/10/28/javascript-still-a-ghost
Data from Oct 10, 2026, 10:55 AM UTC old
Overall #4 paulkinchla.com #4 · 36 measurements · since Jul 7, 2026
https://paulkinchla.com/blog/2020/10/28/javascript-still-a-ghost/.
A trailing slash only, so both forms are treated as one site rather than two — one history, measured once. Lighthouse follows the redirect, so the numbers below describe the canonical page; the only cost is an extra hop on each run.
Stack
Detected on the same page load as the accessibility pass — the generator
from <meta name="generator"> or the shape of the page,
the host from response headers.
Scores
Filmstrip Lighthouse, mobile
How the page drew during the measured load, at 8 points across 3.00 s.
-
375 ms
-
750 ms
-
1.13 s
-
1.50 s
-
1.88 s
-
2.25 s
-
2.63 s
-
3.00 s
Without JavaScript
The same load, photographed twice at 412×823: once with scripts disabled, once as rendered.
97% of pixels differ — they have almost nothing in common. A shifted layout counts as difference, so a <noscript> banner alone can account for a large figure.
Lab metrics Lighthouse, mobile
| Metric | Current | Previous | Change | Best | Worst | Trend |
|---|---|---|---|---|---|---|
| LCP Largest Contentful Paint | 2.74 s | 2.75 s | ↓ -16 ms (-0.6%) | 1.96 s | 2.75 s | |
| CLS Cumulative Layout Shift | 0 | 0 | → no change | 0 | 0.004 | |
| TBT Total Blocking Time | 0 ms | 0 ms | → no change | 0 ms | 24 ms | |
| FCP First Contentful Paint | 1.98 s | 1.99 s | ↓ -4 ms (-0.2%) | 1.06 s | 1.99 s | |
| Speed Index | 1.98 s | 1.99 s | ↓ -4 ms (-0.2%) | 1.06 s | 1.99 s | |
| TTFB Time to First Byte | 460 ms | 463 ms | ↓ -3 ms (-0.6%) | 59 ms | 495 ms |
What LCP is made of observed, unthrottled
A flat LCP number tells you something regressed. The subparts tell you whether it was the server, resource discovery, the download, or rendering.
Measured on the trace before throttling is modelled, so these are real durations that will not sum to the 2.74 s above — that figure is a simulation of the same load on a slow phone and connection. Read these for the proportions: which phase dominates.
Page weight
| Metric | Current | Previous | Change | Best | Worst | Trend |
|---|---|---|---|---|---|---|
| Page Weight | 228 kB | 228 kB | ↓ -8 B | 216 kB | 229 kB | |
| Requests | 14 | 14 | → no change | 10 | 14 | |
| Third-party Weight | 10.3 kB | 10.3 kB | → no change | 0 B | 10.3 kB | |
| Third-party CPU | 5 ms | 5 ms | ↓ -0 ms (-6%) significant | 0 ms | 7 ms | |
| Unused JS | 0 B | 0 B | → no change | 0 B | 0 B | |
| Unused CSS | 0 B | 0 B | → no change | 0 B | 0 B |
By resource type
Third parties 1 entities
10.3 kB transferred, 5 ms of main thread time. This is the number most likely to regress without anyone on your team shipping anything.
Page health
| Metric | Current | Previous | Change | Best | Worst | Trend |
|---|---|---|---|---|---|---|
| Main Thread Work | 448 ms | 461 ms | ↓ -13 ms (-2.8%) | 278 ms | 655 ms | |
| Long Tasks | 1 | 1 | → no change | 0 | 3 | |
| DOM Elements | 767 | 767 | → no change | 766 | 767 | |
| Axe Violations Violating nodes from a full axe run — stricter than Lighthouse's subset | 0 | 0 | → no change | 0 | 0 | |
| A11y Failures | 0 | 0 | → no change | 0 | 0 | |
| A11y Failing Nodes | 0 | 0 | → no change | 0 | 0 |
Main thread work
Axe violations axe-core 4.13.0, full rule set
0 violating nodes across 0 rules, 1127 passing. This is a standalone axe run, stricter than the subset Lighthouse folds into its score above — and it is the second tiebreaker in the ranking.
Hygiene
Changes rarely — which is exactly why a change is worth noticing.
Measurement log
Every stored run for this URL, newest first. Failures are kept as records — "this site was down on Tuesday" is data too.
| When | Perf | LCP | CLS | TBT | Weight | Runs | Spread | Bench | Took |
|---|---|---|---|---|---|---|---|---|---|
| Oct 10, 2026, 10:55 AM UTC | 94 | 2.74 s | 0 | 0 ms | 228 kB | 3/3 | ±1 | 2,379 +1% | 26.3s |
| Oct 8, 2026, 11:44 AM UTC | 94 | 2.75 s | 0 | 0 ms | 228 kB | 3/3 | ±4 | 2,367 -5% | 29.4s |
| Oct 7, 2026, 11:28 AM UTC | 95 | 2.66 s | 0 | 0 ms | 228 kB | 3/3 | ±1 | 2,494 0% | 25.1s |
| Oct 5, 2026, 11:59 AM UTC | 97 | 2.41 s | 0 | 0 ms | 227 kB | 3/3 | ±1 | 2,501 +1% | 27.9s |
| Oct 4, 2026, 10:51 AM UTC | 95 | 2.74 s | 0 | 0 ms | 228 kB | 3/3 | ±2 | 2,472 -1% | 28.1s |
| Oct 3, 2026, 10:10 AM UTC | 95 | 2.73 s | 0 | 0 ms | 228 kB | 3/3 | ±3 | 2,495 +1% | 27.9s |
| Oct 1, 2026, 11:18 AM UTC | 97 | 2.43 s | 0 | 0 ms | 229 kB | 3/3 | ±0 | 2,469 -42% | 25.8s |
| Sep 30, 2026, 10:51 AM UTC | 97 | 2.44 s | 0 | 0 ms | 229 kB | 3/3 | ±1 | 4,239 +70% | 25.7s |
| Sep 28, 2026, 11:23 AM UTC | 99 | 2.19 s | 0 | 0 ms | 216 kB | 3/3 | ±9 | 2,496 -13% | 30.3s |
| Sep 27, 2026, 10:19 AM UTC | 99 | 2.04 s | 0 | 0 ms | 216 kB | 3/3 | ±4 | 2,882 -7% | 29.9s |
| Sep 25, 2026, 9:57 AM UTC | 97 | 2.59 s | 0 | 0 ms | 217 kB | 3/3 | ±1 | 3,098 +24% | 23.1s |
| Sep 23, 2026, 9:41 AM UTC | 99 | 1.96 s | 0 | 3 ms | 216 kB | 3/3 | ±1 | 2,496 +1% | 28.5s |
| Sep 21, 2026, 10:21 AM UTC | 96 | 2.58 s | 0 | 0 ms | 217 kB | 3/3 | ±1 | 2,473 0% | 25.7s |
| Sep 20, 2026, 9:34 AM UTC | 97 | 2.59 s | 0 | 0 ms | 217 kB | 3/3 | ±2 | 2,479 +1% | 28.4s |
| Sep 19, 2026, 9:08 AM UTC | 97 | 2.59 s | 0 | 0 ms | 217 kB | 3/3 | ±2 | 2,455 -1% | 27.5s |
| Sep 17, 2026, 9:46 AM UTC | 97 | 2.60 s | 0 | 0 ms | 217 kB | 3/3 | ±1 | 2,476 +9% | 25.6s |
| Sep 16, 2026, 9:38 AM UTC | 96 | 2.60 s | 0 | 0 ms | 218 kB | 3/3 | ±2 | 2,280 -9% | 27.4s |
| Sep 14, 2026, 10:16 AM UTC | 96 | 2.60 s | 0 | 0 ms | 217 kB | 3/3 | ±3 | 2,496 -15% | 28.7s |
| Sep 12, 2026, 7:48 PM UTC | 99 | 1.97 s | 0 | 0 ms | 216 kB | 3/3 | ±3 | 2,948 -1% | 27.7s |
| Sep 11, 2026, 6:50 PM UTC | 99 | 1.98 s | 0 | 0 ms | 216 kB | 3/3 | ±14 | 2,985 +27% | 26.4s |
| Sep 10, 2026, 3:34 PM UTC | 99 | 1.99 s | 0 | 0 ms | 218 kB | 3/3 | ±1 | 2,343 0% | 29.6s |
| Sep 9, 2026, 2:52 PM UTC | 96 | 2.60 s | 0 | 0 ms | 218 kB | 3/3 | ±1 | 2,346 -1% | 26.4s |
| Sep 8, 2026, 11:51 AM UTC | 96 | 2.62 s | 0 | 0 ms | 218 kB | 3/3 | ±0 | 2,359 -6% | 25.8s |
| Sep 7, 2026, 10:56 AM UTC | 96 | 2.60 s | 0 | 0 ms | 217 kB | 3/3 | ±1 | 2,497 +2% | 28.4s |
| Sep 6, 2026, 9:50 AM UTC | 99 | 1.96 s | 0 | 12 ms | 216 kB | 3/3 | ±0 | 2,456 -2% | 25.4s |
| Sep 5, 2026, 6:27 AM UTC | 96 | 2.60 s | 0 | 0 ms | 217 kB | 3/3 | ±1 | 2,507 +1% | 25.6s |
| Sep 4, 2026, 1:55 AM UTC | 99 | 1.96 s | 0 | 0 ms | 216 kB | 3/3 | ±16 | 2,481 -42% | 35.5s |
| Sep 2, 2026, 11:40 PM UTC | 97 | 2.60 s | 0 | 0 ms | 217 kB | 3/3 | ±29 | 4,296 +74% | 28.5s |
| Sep 1, 2026, 10:09 PM UTC | 97 | 2.58 s | 0 | 0 ms | 217 kB | 3/3 | ±3 | 2,475 +10% | 26.8s |
| Aug 31, 2026, 10:44 AM UTC | 96 | 2.61 s | 0 | 2 ms | 217 kB | 3/3 | ±3 | 2,255 0% | 28.1s |
Embed this score
Live below, then the markup that produces it. Drop that on any page to show
paulkinchla.com/blog/2020/10/28/javascript-still-a-ghost's scores, updated whenever this instance
re-measures — more about the component. Don’t forget to bundle the speedlify2-score.js component code into your site!
<speedlify2-score speedlify-url="https://www.speedlify.dev/" url="https://paulkinchla.com/blog/2020/10/28/javascript-still-a-ghost"></speedlify2-score>