Performance
· 23 checks — Lighthouse + waterfall + sustainability rolled into one auditable list.Performance-focused optimization plan with CWV assessment, top offenders, and time estimates
First Contentful Paint First Contentful Paint — how long until the browser renders the first piece of content. Under 1.8s is good.
826 ms
Largest Contentful Paint Largest Contentful Paint — how long until the largest visible element loads. Under 2.5s is good.
2.80 s
Total Blocking Time Total Blocking Time — total time the main thread was blocked, preventing user input. Under 200ms is good.
20 ms
Cumulative Layout Shift Cumulative Layout Shift — measures visual stability. How much the page layout shifts during loading. Under 0.1 is good.
0.252
Speed Index Speed Index — how quickly content is visually displayed during load. Under 3.4s is good.
1.14 s
Time to Interactive Time to Interactive — how long until the page is fully interactive and responds to user input. Under 3.8s is good.
2.81 s
Page Load Progression
FPage Weight BudgetAction2.7 MB transferred, 73 requestsFIX
Convert images to WebP/AVIF and resize to display dimensions to reduce transfer size.
Image bandwidth is high — modern formats (WebP/AVIF) and resizing typically cut it 50%+.
Source: web.dev
CImage OptimizationAction36 images, 0 KB saveableREVIEW
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
CJS Execution CostAction1125ms total JS executionREVIEW
Main Thread Breakdown
| Script | Total | Scripting | Parse/Compile | Party |
|---|---|---|---|---|
| https://www.readingrockets.org/ | 626ms | 9ms | 1ms | 1st |
| Unattributable | 193ms | 23ms | 0ms | 1st |
| https://www.readingrockets.org/sites/default/files/js/js_NV6AhuKEGPT5fCuOs8ub6sybUcptyCfgOBuWS8vcvpQ.js?scope=footer&delta=1&language=en&theme=readingrockets_d9&include=eJxlj9sOwiAMQH-IyLOPfgnpRtN1louFqfj1Ml7c4stJOIc2KaVEgq4CWeowdH5fYIX3WQYj8Gl2h1FPbmOHggFjLXYGTVtBGeGFFSxJmkDcWn4qgwIp5MVliPtfBM-RNM13rMX563Hory3doBpV57lkgWbXx4ba3JxChsoTC9e297KAoh28RQ69pXjwlfvOYJ6Mr2IHx7FfvNRqgw | 107ms | 44ms | 2ms | 1st |
| https://www.googletagmanager.com/gtm.js?id=GTM-N57G8NB | 76ms | 64ms | 11ms | 3rd |
| https://www.googletagmanager.com/gtag/js?id=G-JEBE1MXWDM&cx=c>m=4e66h0 | 65ms | 50ms | 14ms | 3rd |
| https://script.hotjar.com/modules.c7cfa5e5dff97bece8fc.js | 59ms | 47ms | 11ms | 3rd |
CJS BundlesAction15 scripts, 178 KB unusedREVIEW
Downloaded but never executed on this page.
| Script | Size | Unused | Minified | Party |
|---|---|---|---|---|
| https://www.googletagmanager.com/gtag/js?id=G-JEBE1MXWDM&cx=c>m=4e66h0 | 174 KB | 71 KB (41%) | ✓ | 3rd |
| https://www.googletagmanager.com/gtm.js?id=GTM-N57G8NB | 134 KB | 69 KB (52%) | ✓ | 3rd |
| https://script.hotjar.com/modules.c7cfa5e5dff97bece8fc.js | 56 KB | 38 KB (67%) | ✓ | 3rd |
| https://www.readingrockets.org/core/assets/vendor/jquery/jquery.min.js?v=4.0.0 | 29 KB | — | ✓ | 1st |
| https://kit.fontawesome.com/eb1ea169a9.js | 6 KB | — | ✓ | 3rd |
| https://www.readingrockets.org/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js | 1 KB | — | ✓ | 1st |
| https://www.readingrockets.org/sites/default/files/js/js_2Mqa-U2O2WtOeSW7MAGsfgEy7k7-eT981WvVnRpzoEc.js?scope=header&delta=0&language=en&theme=readingrockets_d9&include=eJxlj9sOwiAMQH-IyLOPfgnpRtN1louFqfj1Ml7c4stJOIc2KaVEgq4CWeowdH5fYIX3WQYj8Gl2h1FPbmOHggFjLXYGTVtBGeGFFSxJmkDcWn4qgwIp5MVliPtfBM-RNM13rMX563Hory3doBpV57lkgWbXx4ba3JxChsoTC9e297KAoh28RQ69pXjwlfvOYJ6Mr2IHx7FfvNRqgw | 0 KB | — | ✓ | 1st |
| https://www.readingrockets.org/sites/default/files/js/js_NV6AhuKEGPT5fCuOs8ub6sybUcptyCfgOBuWS8vcvpQ.js?scope=footer&delta=1&language=en&theme=readingrockets_d9&include=eJxlj9sOwiAMQH-IyLOPfgnpRtN1louFqfj1Ml7c4stJOIc2KaVEgq4CWeowdH5fYIX3WQYj8Gl2h1FPbmOHggFjLXYGTVtBGeGFFSxJmkDcWn4qgwIp5MVliPtfBM-RNM13rMX563Hory3doBpV57lkgWbXx4ba3JxChsoTC9e297KAoh28RQ69pXjwlfvOYJ6Mr2IHx7FfvNRqgw | 24 KB | — | ✓ | 1st |
| https://cdn.jsdelivr.net/npm/focus-visible@5.2.0/dist/focus-visible.min.js | 2 KB | — | ✓ | 3rd |
| https://www.readingrockets.org/sites/default/files/js/js_l_ORm-W0hINTfu4kHL3bIYlfwMF8qg13OOaLslybm6o.js?scope=footer&delta=5&language=en&theme=readingrockets_d9&include=eJxlj9sOwiAMQH-IyLOPfgnpRtN1louFqfj1Ml7c4stJOIc2KaVEgq4CWeowdH5fYIX3WQYj8Gl2h1FPbmOHggFjLXYGTVtBGeGFFSxJmkDcWn4qgwIp5MVliPtfBM-RNM13rMX563Hory3doBpV57lkgWbXx4ba3JxChsoTC9e297KAoh28RQ69pXjwlfvOYJ6Mr2IHx7FfvNRqgw | 15 KB | — | ✓ | 1st |
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
BHTTP/3 (QUIC)HTTP/3 not advertisedREVIEW
BServer-Timing ObservabilityNo Server-Timing header foundREVIEW
CPage Weight InventoryAction73 resources · 2.7 MB · 178 KB savings availableREVIEW
~177.8 KiB of savings available
| # | Resource | Type | Size | Cache | Unused | 3rd party | Issues |
|---|---|---|---|---|---|---|---|
| — | — | ||||||
| 73 resources | 2.7 MiB | ||||||
CGreen HostingActionWhether the site is served from green-energy infrastructureREVIEW
Green Hosting
No green hosting detected
AThird-Party Impact23% third-party, 0 ms blockingPASS
A+Text CompressionAll text resources are compressedPASS
A+Font Loading10 fonts (196 KB)PASS
Web fonts
10
196 KB total
Render-blocking
0
of 10
Dominant font-display
swap
Most common across fonts
Font loading timeline
Optimization checklist
- Preload critical fonts (priority=high)
- Use woff2 format for all fonts
- Set font-display to swap, optional, or fallback
- Subset large fonts (≤100 KB each)
A+Resource CachingAll resources properly cachedPASS
A+Critical Rendering PathNo render-blocking resourcesPASS
A+Resource HintsNo optimization neededPASS
A+Compression AlgorithmMain response uses brotliPASS
A+LCP Image PreloadLCP preload audit not availablePASS
A+Main HTML Cache-ControlMain HTML max-age=300 (≤ 5min) is appropriatePASS
A+Server Response Intelligence2 server-response signal(s) detectedPASS
A+HTTP Cachingmax-age=300 (5 minutes)PASS
max-age=300, public
| Directive | Value | Meaning |
|---|---|---|
| max-age | 300 | Cache for 5 minutes |
| public | — | Any cache may store this response |
Network Waterfall73 requests over 1743msINFO
Third-Party Script CostPer-script blocking time, transfer cost, and cache headersINFO
| Script | Category | Execution | Transfer | Unused | Monthly Cost | Verdict |
|---|---|---|---|---|---|---|
Google Tag Manager www.googletagmanager.com | Tag Manager | 76ms | 134 KB | 52% | $1/mo | Optional |
Google Tag Manager www.googletagmanager.com | Tag Manager | 65ms | 174 KB | 41% | $1/mo | Optional |
Hotjar script.hotjar.com | Session Replay | 59ms | 56 KB | 67% | $1/mo | Optional |
52% of Google Tag Manager's code is unused. The script may be loading features you don't use.
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
67% of Hotjar's code is unused. The script may be loading features you don't use.
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
Real-User Performance (CrUX)Field metrics from the Chrome User Experience ReportINFO
Chrome User Experience (CrUX)
Real-user metrics from the Chrome UX Report (2026-05-25 — 2026-06-21)
LCP (p75)
2557 ms
74% good
INP (p75)
82 ms
95% good
CLS (p75)
0.020
91% good
FCP (p75)
1604 ms
TTFB (p75)
667 ms
Image Optimization44 images, 1039 KB total, 55 KB wastedINFO
Image Optimization Audit
Total Images
44
Total Size
1039 KB
Oversized
3
Wasted
55 KB