Performance
· 15 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.
1.26 s
Largest Contentful Paint Largest Contentful Paint — how long until the largest visible element loads. Under 2.5s is good.
1.30 s
Total Blocking Time Total Blocking Time — total time the main thread was blocked, preventing user input. Under 200ms is good.
5 ms
Cumulative Layout Shift Cumulative Layout Shift — measures visual stability. How much the page layout shifts during loading. Under 0.1 is good.
0.004
Speed Index Speed Index — how quickly content is visually displayed during load. Under 3.4s is good.
2.76 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.67 s
Page Load Progression
FPage Weight BudgetAction7.4 MB transferred, 155 requestsFIX
Large JavaScript bundles delay interactivity. Split code by route or defer non-critical scripts.
JavaScript bundle is large — code-split routes and lazy-load off-screen components to defer.
Source: web.dev
Remove unused CSS rules with tools like PurgeCSS to reduce stylesheet size.
CSS bundle is large — purge unused styles (PurgeCSS, Tailwind JIT) to reduce CSS payload.
Source: web.dev
Each request adds latency. Bundle small files, use sprites, or eliminate unnecessary requests.
High HTTP request count — bundling, sprite-ing, and HTTP/2 server push can reduce per-request overhead.
Source: web.dev
FJS BundlesAction27 scripts, 916 KB unusedFIX
Downloaded but never executed on this page.
| Script | Size | Unused | Minified | Party |
|---|---|---|---|---|
| https://widgets.q4app.com/widgets/requireslib/pdf-js/build/pdf.js | 503 KB | 330 KB (66%) | ✗ | 3rd |
| https://widgets.q4app.com/widgets/requireslib/pdf-js/web/viewer.js | 471 KB | 197 KB (42%) | ✗ | 3rd |
| https://cloudflare.net/js/module/widgets/dist/dependencies/evergreen.core.1.0.0.min.js | 202 KB | 167 KB (83%) | ✓ | 1st |
| https://cloudflare.net/files/js/q4.core.1.0.8.min.js | 199 KB | 138 KB (69%) | ✓ | 1st |
| https://cdn.cookielaw.org/scripttemplates/202505.1.0/otBannerSdk.js | 119 KB | 61 KB (52%) | ✓ | 3rd |
| https://cloudflare.net/js/typescript/dist/index.js | 30 KB | 23 KB (77%) | ✓ | 1st |
| https://cloudflare.net/js/module/widgets/dist/latest/evergreen.q4Pager.min.js | 2 KB | — | ✓ | 1st |
| https://cloudflare.net/files/js/jquery.waypoints.min.js | 3 KB | — | ✓ | 1st |
| https://cloudflare.net/files/js/onetrust/OneTrustScript.js | 1 KB | — | ✓ | 1st |
| https://cdn.cookielaw.org/consent/b30980c7-c551-40f8-9e90-b82f97aa67b0-test/OtAutoBlock.js | 2 KB | — | ✓ | 3rd |
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
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
FPage Weight InventoryAction155 resources · 7.4 MB · 916 KB savings availableFIX
~916.1 KiB of savings available
| # | Resource | Type | Size | Cache | Unused | 3rd party | Issues |
|---|---|---|---|---|---|---|---|
| — | — | ||||||
| 155 resources | 7.4 MiB | ||||||
CImage OptimizationAction26 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
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
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
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 CostAction1579ms total JS executionREVIEW
Main Thread Breakdown
| Script | Total | Scripting | Parse/Compile | Party |
|---|---|---|---|---|
| https://cloudflare.net/home/default.aspx | 490ms | 47ms | 2ms | 1st |
| https://widgets.q4app.com/widgets/requireslib/pdf-js/build/pdf.js | 353ms | 231ms | 11ms | 3rd |
| https://cloudflare.net/files/js/jquery.counterup.min.js | 190ms | 139ms | 0ms | 1st |
| Unattributable | 146ms | 16ms | 0ms | 3rd |
| https://cloudflare.net/files/js/q4.core.1.0.8.min.js | 96ms | 41ms | 12ms | 1st |
| https://cloudflare.net/files/js/pdf-js/viewer-v2.html?file=https://cloudflare.net/files/doc_financials/2025/q4/Q4-2025-NET-Investor-Presentation.pdf | 90ms | 1ms | 0ms | 1st |
| https://cloudflare.net/cdn-cgi/challenge-platform/scripts/jsd/main.js | 81ms | 78ms | 1ms | 1st |
| https://cdn.cookielaw.org/scripttemplates/202505.1.0/otBannerSdk.js | 80ms | 45ms | 10ms | 3rd |
| https://cloudflare.net/js/module/widgets/dist/dependencies/evergreen.core.1.0.0.min.js | 54ms | 30ms | 15ms | 1st |
AThird-Party Impact36% third-party, 0 ms blockingPASS
A+Text CompressionAll text resources are compressedPASS
A+Font Loading2 fonts (43 KB)PASS
Web fonts
2
43 KB total
Render-blocking
0
of 2
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+Green HostingWhether the site is served from green-energy infrastructurePASS
Green Hosting
This site is hosted on green energy infrastructure
Provider: Cloudflare
AHTTP Cachingmax-age=120 (2 minutes)PASS
public, max-age=120, stale-if-error=86400, stale-while-revalidate=86400
| Directive | Value | Meaning |
|---|---|---|
| public | — | Any cache may store this response |
| max-age | 120 | Cache for 2 minutes |
| stale-if-error | 86400 | |
| stale-while-revalidate | 86400 | Serve stale for 1 day while fetching fresh |
Network Waterfall155 requests over 5387msINFO
Third-Party Script CostPer-script blocking time, transfer cost, and cache headersINFO
| Script | Category | Execution | Transfer | Unused | Monthly Cost | Verdict |
|---|---|---|---|---|---|---|
widgets.q4app.com widgets.q4app.com | Other | 353ms | 503 KB | 66% | $5/mo | Costly |
Unattributable Unattributable | Other | 146ms | 0 KB | — | $2/mo | Optional |
OneTrust cdn.cookielaw.org | Consent | 80ms | 119 KB | 52% | $1/mo | Essential |
These scripts may cost more than they're worth
- widgets.q4app.com adds 353ms and costs ~$5/month
widgets.q4app.com takes 353ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
66% of widgets.q4app.com'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
52% of OneTrust'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