bruijn.me
Ranks Overall #1,587 Built Awesome #1,050
Data from Oct 3, 2026, 1:48 AM UTC old Measured once a week · 7 runs since Aug 20, 2026
Elsewhere:
PageSpeed Insights ·
Calibre ·
Treo ·
CrUX Vis ·
Tame the Bots ·
Scoring Calculator ·
Wayback Machine
Lab data is measured using Lighthouse, Mobile mode unless otherwise specified. Field data is reported from Chrome UX Report (using p75 measurements).
Stack
Lighthouse Scores LAB Simulated
Metrics LAB
No field data: the Chrome UX Report is not being collected for this project, so every figure below is from the Lighthouse run.
| Metric | Lab Simulated | ||
|---|---|---|---|
| Value | Change / range | Trend | |
| LCP CWV (estimate) Largest Contentful Paint | 21.65 s poor | ↑ +13 ms (+0.1%) 21.64 s – 21.68 s | |
| INP CWV Interaction to Next Paint — field only, no lab run can measure it | n/a | — | |
| CLS CWV (estimate) Cumulative Layout Shift | 0.149 needs work | ↑ +0.028 (+23.1%) significant 0.121 – 0.149 | |
| TBT Total Blocking Time | 3 ms good | ↓ -25 ms (-89.3%) significant 0 ms – 28 ms | |
| FCP First Contentful Paint | 1.55 s good | ↑ +19 ms (+1.2%) 1.53 s – 1.57 s | |
| Speed Index | 2.76 s good | ↑ +14 ms (+0.5%) 2.68 s – 2.86 s | |
| TTFB Time to First Byte | 476 ms good | ↑ +7 ms (+1.5%) 469 ms – 490 ms | |
LCP Subparts LAB Unthrottled
The subparts attribute LCP to your server, resource discovery, download, or rendering. Note that the Lab LCP shown above is a simulated throttled estimate.
Page weight
| Metric | Value | Change / range | Trend |
|---|---|---|---|
| Page Weight | 3.89 MB | ↓ -504 B 3.89 MB – 3.89 MB | |
| Requests | 16 | → no change 16 – 18 | |
| Third-party Weight | 13.6 kB | ↓ -1 B 13.0 kB – 14.8 kB | |
| Third-party CPU | 7 ms | ↑ +1 ms (+10.6%) 4 ms – 9 ms | |
| Unused JS | 39.3 kB | → no change 39.3 kB – 39.3 kB | |
| Unused CSS | 0 B | → no change 0 B – 0 B |
By resource type
| Type | Transfer | Share | Size | Requests |
|---|---|---|---|---|
| image | 97.2% | 3.78 MB | 5 | |
| script | 2.1% | 83.1 kB | 3 | |
| font | 0.4% | 17.4 kB | 2 | |
| stylesheet | 0.1% | 5.1 kB | 1 | |
| document | 0.1% | 3.4 kB | 1 | |
| other | <0.1% | 1.1 kB | 4 | |
| Total | 3.89 MB | 16 |
Third parties 2 entities
| Entity | Transfer | Size | Main thread Simulated |
|---|---|---|---|
| Cloudflare | 10.2 kB | 5 ms | |
| umami.is | 3.4 kB | 2 ms | |
| Total | 13.6 kB | 7 ms |
Page health
| Metric | Value | Change / range | Trend |
|---|---|---|---|
| Main Thread Work | 1.41 s | ↓ -272 ms (-16.2%) 1.17 s – 1.68 s | |
| Long Tasks | 2 | → no change 0 – 2 | |
| DOM Elements | 127 | → no change 127 – 127 | |
| Axe Violations Violating nodes from a full Axe CLI run (more than Lighthouse reports) | 13 | → no change 10 – 14 | |
| A11y Failures | 4 | → no change 4 – 4 | |
| A11y Failing Nodes | 10 | → no change 10 – 10 |
Main thread work
| Task | Time | Share | Duration Simulated |
|---|---|---|---|
| other | 35% | 498 ms | |
| style layout | 33% | 470 ms | |
| script evaluation | 19% | 274 ms | |
| paint composite render | 8% | 110 ms | |
| script parse compile | 3% | 36 ms | |
| parse HTML | 1% | 14 ms | |
| garbage collection | 1% | 7 ms | |
| Total | 1.41 s |
Axe violations axe-core 4.13.0, full rule set
13 violating nodes across 5 rules, 242 passing. This is a standalone Axe CLI run and is stricter than the subset Lighthouse already includes.
-
critical
aria-valid-attr— ARIA attributes must conform to valid names 4 nodesOffending elements
-
.card[href$="about/"][data-mouse-target="data-mouse-target"] > .inner > .card-background[aria-role="presentation"]<img src="/media/about/voxel-pc-animated.webp" aria-role="presentation" class="card-background" style=""> -
section:nth-child(4) > .cards[data-mouse-tracker=""] > .card[data-mouse-target="data-mouse-target"] > .inner > .card-background[aria-role="presentation"]<img src="/media/projects/timeline/timeline.jpg" aria-role="presentation" class="card-background" style="opacity: .8; object-position: bottom right; object-fit: contain;"> -
a[href$="distillery+/"] > .inner > .card-background[aria-role="presentation"]<img src="/media/cases/distillery+/distillery+.png" aria-role="presentation" class="card-background" style="opacity: .3;"> -
a[href$="ruwan.nl/"] > .inner > .card-background[aria-role="presentation"]<img src="/media/cases/ruwan.nl/ruwan.nl.png" aria-role="presentation" class="card-background" style="opacity: .6;">
-
-
critical
image-alt— Images must have alternative text 4 nodesOffending elements
-
.card[href$="about/"][data-mouse-target="data-mouse-target"] > .inner > .card-background[aria-role="presentation"]<img src="/media/about/voxel-pc-animated.webp" aria-role="presentation" class="card-background" style=""> -
section:nth-child(4) > .cards[data-mouse-tracker=""] > .card[data-mouse-target="data-mouse-target"] > .inner > .card-background[aria-role="presentation"]<img src="/media/projects/timeline/timeline.jpg" aria-role="presentation" class="card-background" style="opacity: .8; object-position: bottom right; object-fit: contain;"> -
a[href$="distillery+/"] > .inner > .card-background[aria-role="presentation"]<img src="/media/cases/distillery+/distillery+.png" aria-role="presentation" class="card-background" style="opacity: .3;"> -
a[href$="ruwan.nl/"] > .inner > .card-background[aria-role="presentation"]<img src="/media/cases/ruwan.nl/ruwan.nl.png" aria-role="presentation" class="card-background" style="opacity: .6;">
-
-
serious
color-contrast— Elements must meet minimum color contrast ratio thresholds 3 nodesOffending elements
-
.section:nth-child(3) > .subtitle<p class="subtitle" style="translate: none; rotate: none; scale: none; transform: translate3d(0px, 5.7801px, 0px); opacity: 0.422;"> -
.section:nth-child(3) > .subtitle > strong<strong style="translate: none; rotate: none; scale: none; transform: translate3d(0px, 6.8847px, 0px); opacity: 0.3115;">Interested in my work?</strong> -
.subtitle > a[href$="projects/"]<a href="/projects/" style="translate: none; rotate: none; scale: none; transform: translate3d(0px, 9.4986px, 0px); opacity: 0.0501;">personal projects</a>
-
-
critical
button-name— Buttons must have discernible text 1 nodeOffending element
-
#nav-toggle<button id="nav-toggle" style="translate: none; rotate: none; scale: none; transform: translate(0px, 0px); opacity: 1;"> <div class="line"></div> </button>
-
-
serious
list— <ul> and <ol> must only directly contain <li>, <script> or <template> elements 1 nodeOffending element
-
ul<ul>
-
Accessibility failures 4 of 20 audits
-
aria-valid-attr— `[aria-*]` attributes are not valid or misspelled 4 nodes -
image-alt— Image elements do not have `[alt]` attributes 4 nodes -
button-name— Buttons do not have an accessible name 1 node -
list— Lists do not contain only `<li>` elements and script supporting elements (`<script>` and `<template>`). 1 node
SEO failures 1 of 9 audits
-
image-alt— Image elements do not have `[alt]` attributes 4 items
Hygiene
Measurement log
Every stored run for this URL, newest first.
| When | Scores | Perf | LCP | CLS | TBT | Weight | Runs | Spread | Bench | Took | Archive |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Oct 3, 2026, 1:48 AM UTC | 68 | 21.65 s | 0.149 | 3 ms | 3.89 MB | 3/3 | ±3 | 2,872 +16% | 25.5s |
|
|
| Sep 25, 2026, 11:18 AM UTC | 70 | 21.64 s | 0.121 | 28 ms | 3.89 MB | 3/3 | ±2 | 2,475 0% | 25.1s |
|
|
| Sep 18, 2026, 8:51 AM UTC | 70 | 21.65 s | 0.121 | 8 ms | 3.89 MB | 3/3 | ±4 | 2,654 +7% | 26s |
|
|
| Sep 11, 2026, 8:41 AM UTC | 70 | 21.65 s | 0.121 | 16 ms | 3.89 MB | 3/3 | ±0 | 2,576 +4% | 27s |
|
|
| Sep 4, 2026, 5:40 AM UTC | 70 | 21.65 s | 0.121 | 6 ms | 3.89 MB | 3/3 | ±3 | 2,819 +13% | 25.5s |
|
|
| Aug 28, 2026, 1:20 AM UTC | 68 | 21.64 s | 0.149 | 18 ms | 3.89 MB | 3/3 | ±3 | 2,494 0% | 25.6s |
|
|
| Aug 20, 2026, 4:23 PM UTC | 70 | 21.68 s | 0.121 | 0 ms | 3.89 MB | 3/3 | ±26 | 3,225 +30% | 32s |
|
Embed this score
Use this web component to show bruijn.me's scores on any website, updated whenever this instance re-measures. Don’t forget to bundle the speedlify2-score.js component code into your site!
<speedlify2-score speedlify-url="https://www.speedlify.dev/" url="https://bruijn.me/"></speedlify2-score>