Skip to report
Scan another site

Performance report

pagespeed.web.dev

Scanned pagespeed.web.dev

85 out of 100

Warp Score

B Good

TTFB — Goodserver response
101 ms
LCP — Needs improvementlab
2.6 s
LCP — Goodlab
0.6 s
INP — Needs improvementreal users
254 ms
CLS — Goodlab
0
CLS — Goodlab
0.001
Desktop — GoodLighthouse
100
Mobile — Needs improvementLighthouse
86
Transfer
448 KB
Transfer
448 KB
Requests
16
Requests
16
Share on X Share on LinkedIn

Overview

Score breakdown

Performance

A

92 / 100

Lighthouse scored this page 86 on mobile and 100 on desktop.

Core Web Vitals

B

89 / 100

Real visitors do not pass Core Web Vitals on this page. 75th-percentile LCP is 1.8 s.

Server & Cache

C

74 / 100

No page cache was detected; the server took 101 ms to respond.

Assets

C

79 / 100

448 KB transferred in 16 requests, including 375 KB of JavaScript.

Delivery

A

93 / 100

Delivered with HTTP/2, Gzip compression, no CDN detected.

Top improvements

  1. Reduce the impact of third-party codeHigh impact

    Scripts and resources from other companies account for 421 KB of this page.

    Evidence

    • Third-party code: 421 KB (94% of page weight) across 15 requests
    • www.gstatic.com — 201 KB
    • www.googletagmanager.com — 160 KB
    • fonts.gstatic.com — 36 KB

    Why it matters

    Tags, widgets and embeds run on the same main thread as your own code and are outside your control. They are a common cause of slow interaction.

    How to fix

    Remove tags that are no longer used, load the rest after the first interaction, and replace heavy embeds (video, maps, chat) with a lightweight placeholder that loads on click.

    Related metric: TBT

  2. Reduce unused JavaScriptMedium impactPotential savings: 118 KB

    118 KB of downloaded JavaScript was never executed during page load.

    Evidence

    • www.googletagmanager.com/gtag/js?id=G-S8N9N15MT1 (68 KB could be saved)
    • www.gstatic.com/_/mss/boq-chrome-wdi-li…3lrY4LsR_zINvBKtbMYMoMZlZP-4cjBQ/ee=EVN (50 KB could be saved)

    Why it matters

    Unused code still has to be downloaded, parsed and compiled, which competes with rendering and slows interaction.

    How to fix

    Load scripts only on the pages that use them, split large bundles, and delay scripts that are not needed until the visitor interacts.

    Related metric: LCP

  3. Delay non-critical JavaScriptMedium impact

    JavaScript kept the main thread busy for 339 ms while the page was loading.

    Evidence

    • Total Blocking Time: 339 ms

    Why it matters

    While scripts run, the page cannot respond to taps or clicks. High blocking time is the main cause of poor INP and a sluggish first interaction.

    How to fix

    Delay scripts that are not required for initial rendering (analytics, chat widgets, ads, social embeds) until the first user interaction.

    Related metric: TBT

  4. Load the LCP image soonerMedium impact

    The largest image on the first screen is not discoverable in the initial HTML or is not prioritized.

    Evidence

    • fetchpriority=high should be applied

    Why it matters

    LCP cannot happen until this image has downloaded. Anything that delays its request delays LCP directly.

    How to fix

    Remove lazy-loading from the LCP image, add fetchpriority="high", and preload it if it is set from CSS or JavaScript.

    Related metric: LCP

  5. Keep text visible while fonts loadLow impactPotential savings: 45 ms

    1 web font hides text until it has loaded.

    Evidence

    • fonts.gstatic.com/s/googlesans/v62/4Uas…Yo_Iqcsih3SAyH6cAwhX9RPjIUvbQoi-E.woff2 (45 ms)

    Why it matters

    Visitors see blank space where text should be until the font arrives, which delays FCP and can delay LCP.

    How to fix

    Use font-display: swap (or optional) so text renders immediately in a fallback font.

    Related metric: FCP

3 more findings are listed in the other tabs.

Page weight

448 KB transferred · 16 requests · Mobile

  • JavaScript 375 KB 8 requests
  • Fonts 36 KB 1 request
  • HTML 27 KB 1 request
  • Images 8 KB 3 requests
  • Other 2 KB 3 requests

448 KB transferred · 16 requests · Desktop

  • JavaScript 375 KB 8 requests
  • Fonts 36 KB 1 request
  • HTML 27 KB 1 request
  • Images 8 KB 3 requests
  • Other 2 KB 3 requests

Shareable summary

Core Web Vitals

Real-user data shows what visitors actually experienced over the last 28 days. The lab test is a single controlled page load, useful for finding causes. The two often differ, and Google uses the real-user data.

Real users Chrome UX Report · 75th percentile

Does not pass Core Web Vitals

Mobile visitors · data for this page

LCP p75 — Good
1.8 s
INP p75 — Needs improvement
254 ms
CLS p75 — Good
0.06
TTFB p75 — Needs improvement
1.1 s
FCP p75 — Good
1.6 s

Desktop visitors · data for this page

LCP p75 — Good
1.1 s
INP p75 — Good
132 ms
CLS p75 — Good
0.01
TTFB p75 — Needs improvement
855 ms
FCP p75 — Good
1.0 s

Lab test Google Lighthouse · simulated load

Mobile

Lighthouse — Needs improvement
86
LCP — Needs improvement
2.6 s
FCP — Needs improvement
2.3 s
TBT — Needs improvement
339 ms
Speed Index — Good
2.3 s
CLS — Good
0

Desktop

Lighthouse — Good
100
LCP — Good
0.6 s
FCP — Good
0.6 s
TBT — Good
5 ms
Speed Index — Good
0.6 s
CLS — Good
0.001

Server & Cache

TTFB (server response)
101 ms
HTML cache
Not detected
CDN
None detected
Compression
Gzip
HTTP version
HTTP/2 (HTTP/3 advertised)
Server
ESF
Redirects
None
Browser caching
HTML is fetched fresh on each visit
Static asset caching
No same-site static assets could be sampled

Connection timing from the scanner

DNS
27 ms
TCP
8 ms
TLS
13 ms
First-byte wait
112 ms
Total
150 ms
HTML size
26 KB

Measured from the Warp Scan server, so network times reflect its location rather than your visitors'. The TTFB figure above is the first-byte wait on an open connection (the faster of two requests), so it includes one network round trip from the scanner.

Developer details

Cache evidence

  • cache-control: no-cache, no-store, max-age=0, must-revalidate

Response headers (first request)

cache-control: no-cache, no-store, max-age=0, must-revalidate
expires: Mon, 01 Jan 1990 00:00:00 GMT
vary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site
pragma: no-cache
server: ESF
content-type: text/html; charset=utf-8
content-encoding: gzip
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

Response headers (repeat request, 101 ms)

cache-control: no-cache, no-store, max-age=0, must-revalidate
expires: Mon, 01 Jan 1990 00:00:00 GMT
vary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site
pragma: no-cache
server: ESF
content-type: text/html; charset=utf-8
content-encoding: gzip
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

No server or caching issues found.

JavaScript

375 KB in 8 requests · 84% of page weight · Mobile

375 KB in 8 requests · 84% of page weight · Desktop

  • Reduce unused JavaScriptMedium impactPotential savings: 118 KB

    118 KB of downloaded JavaScript was never executed during page load.

    Evidence

    • www.googletagmanager.com/gtag/js?id=G-S8N9N15MT1 (68 KB could be saved)
    • www.gstatic.com/_/mss/boq-chrome-wdi-li…3lrY4LsR_zINvBKtbMYMoMZlZP-4cjBQ/ee=EVN (50 KB could be saved)

    Why it matters

    Unused code still has to be downloaded, parsed and compiled, which competes with rendering and slows interaction.

    How to fix

    Load scripts only on the pages that use them, split large bundles, and delay scripts that are not needed until the visitor interacts.

    Related metric: LCP

  • Delay non-critical JavaScriptMedium impact

    JavaScript kept the main thread busy for 339 ms while the page was loading.

    Evidence

    • Total Blocking Time: 339 ms

    Why it matters

    While scripts run, the page cannot respond to taps or clicks. High blocking time is the main cause of poor INP and a sluggish first interaction.

    How to fix

    Delay scripts that are not required for initial rendering (analytics, chat widgets, ads, social embeds) until the first user interaction.

    Related metric: TBT

CSS

0 B in 0 requests · 0% of page weight · Mobile

0 B in 0 requests · 0% of page weight · Desktop

  • Remove unused CSSLow impactPotential savings: 16 KB

    16 KB of CSS rules are not used by this page.

    Evidence

    • body,html{height:100%;overflow:hidden} … (16 KB could be saved)

    Why it matters

    Stylesheets block rendering, so every unused rule delays the first paint.

    How to fix

    Generate per-page CSS that contains only the rules in use, and load the remainder without blocking rendering.

    Related metric: FCP

Images

8 KB in 3 requests · 2% of page weight · Mobile

8 KB in 3 requests · 2% of page weight · Desktop

  • Load the LCP image soonerMedium impact

    The largest image on the first screen is not discoverable in the initial HTML or is not prioritized.

    Evidence

    • fetchpriority=high should be applied

    Why it matters

    LCP cannot happen until this image has downloaded. Anything that delays its request delays LCP directly.

    How to fix

    Remove lazy-loading from the LCP image, add fetchpriority="high", and preload it if it is set from CSS or JavaScript.

    Related metric: LCP

  • Add width and height to imagesLow impact

    1 image has no explicit dimensions.

    Evidence

    • gstatic.com/webvitalsdashboard/img/google_developers.svg

    Why it matters

    Without dimensions the browser cannot reserve space, so content jumps when the image arrives. That movement is measured as CLS.

    How to fix

    Set width and height attributes (or a CSS aspect-ratio) on every image.

    Related metric: CLS

Fonts

36 KB in 1 requests · 8% of page weight · Mobile

36 KB in 1 requests · 8% of page weight · Desktop

  • Keep text visible while fonts loadLow impactPotential savings: 45 ms

    1 web font hides text until it has loaded.

    Evidence

    • fonts.gstatic.com/s/googlesans/v62/4Uas…Yo_Iqcsih3SAyH6cAwhX9RPjIUvbQoi-E.woff2 (45 ms)

    Why it matters

    Visitors see blank space where text should be until the font arrives, which delays FCP and can delay LCP.

    How to fix

    Use font-display: swap (or optional) so text renders immediately in a fallback font.

    Related metric: FCP

Third Parties

421 KB from other domains in 15 requests · 94% of page weight

Service Transfer size Requests Main-thread blocking
Google Analytics 183 KB 4 —
Google Fonts 36 KB 1 —
  • Reduce the impact of third-party codeHigh impact

    Scripts and resources from other companies account for 421 KB of this page.

    Evidence

    • Third-party code: 421 KB (94% of page weight) across 15 requests
    • www.gstatic.com — 201 KB
    • www.googletagmanager.com — 160 KB
    • fonts.gstatic.com — 36 KB

    Why it matters

    Tags, widgets and embeds run on the same main thread as your own code and are outside your control. They are a common cause of slow interaction.

    How to fix

    Remove tags that are no longer used, load the rest after the first interaction, and replace heavy embeds (video, maps, chat) with a lightweight placeholder that loads on click.

    Related metric: TBT

Headers & Delivery

HTTPS
Yes
HSTS
Not set
Cache-Control
no-cache, no-store, max-age=0, must-revalidate
Validators
None
Content-Type
text/html; charset=utf-8
Vary
Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site
  • Consider a CDNLow impact

    No CDN was detected in front of this page.

    Evidence

    • No CDN headers were present in the response

    Why it matters

    Without a CDN every visitor connects to one origin location, so distant visitors wait longer for every file.

    How to fix

    Serve static assets, and ideally HTML, through a CDN with locations near your audience.

Technology

Unable to determine the technology behind this site from its public responses.