Browsers will use heuristic caching, which can be unpredictable. Set explicit cache headers.
No Cache-Control header
Adding a Cache-Control header can significantly improve repeat-visit performance.
C
Image Optimization
Action
65 images, 0 KB saveable
REVIEW
65 images, 0 KB saveable
Warning::
!
https://static.ksl.com/beta/node_modules/ksl-respo... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3118/311876/31187687.jpg is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315372/31537237.jpg?f... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315386/31538657.jpg?f... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315386/31538653.jpeg?... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://static.ksl.com/images/weather/New2013/SVG/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/2879/287947/28794711.jpeg?... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315382/31538238.JPG?f... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315386/31538653.jpeg?... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/2908/290836/29083691.png is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315363/31536385.jpeg?... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315373/31537360.jpeg?... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/2879/287947/28794711.jpeg?... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://static.ksl.com/images/weather/New2013/SVG/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315388/31538878.jpg?f... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315372/31537283.jpeg?... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://img.ksl.com/slc/3153/315383/31538304.jpg?f... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://static.ksl.com/images/weather/New2013/SVG/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
65images739 KB
0oversized-0 KB
50legacy format
18missing dimensionsCLS risk
Set explicit width and height to prevent CLS.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
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.
Why this matters
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
A+
Text Compression
All text resources are compressed
PASS
All text resources are compressed
Info::
✓
All text resources are compressed
All text resources are properly compressed.
A+
Font Loading
2 fonts (52 KB)
PASS
2 fonts (52 KB)
Info::
i
2 font(s) use font-display: swap (FOUT risk but functional)
Web fonts
2
52 KB total
Render-blocking
0
of 2
Dominant font-display
swap
Most common across fonts
Font loading timeline
TransferFOIT (block)FOUT (swap)
pe0AMImSLYBIv1o4X1M8ce2...woff2swap
Size48 KB
Load time56 ms
Start1.2 s
RiskFOUT — text flashes from fallback to web font
6ca0.ttfttfswap
Size4 KB
Load time53 ms
Start1.2 s
RiskFOUT — text flashes from fallback to web font
Convert to woff2 for ~30% smaller file size
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)
Fixing the unchecked items could save ~1 KB and ~2 ms
A+
Resource Caching
All resources properly cached
PASS
All resources properly cached
Info::
✓
No caching issues found
All static resources have appropriate caching headers.
A+
Critical Rendering Path
No render-blocking resources
PASS
No render-blocking resources
Info::
✓
No render-blocking resources detected
A+
Resource Hints
2 hints, 0 missing preconnects
PASS
2 hints, 0 missing preconnects
Info::
✓
Page uses 2 resource hint(s)
Current Resource Hints
preconnect—
preload
2
dns-prefetch—
prefetch—
2 resource hints configured
A+
Render-Blocking Resources
No render-blocking resources detected
PASS
No render-blocking resources detected
Info::
✓
No render-blocking resources detected in <head>
A+
Third-Party Resources
No third-party resources detected
PASS
No third-party resources detected
A+
Green Hosting
Whether the site is served from green-energy infrastructure
PASS
Green Hosting
This site is hosted on green energy infrastructure
Provider: Google Cloud
Network Waterfall
161 requests over 6287ms
INFO
HTML JavaScript CSS Images Fonts XHR/Fetch Other
Third-Party Script Cost
Per-script blocking time, transfer cost, and cache headers
INFO
100%of JavaScript execution is third-party
First-party Third-party8531ms · 1972KB · €31/mo
Script
Category
Execution
Transfer
Unused
Monthly Cost
Verdict
www.ksl.com
www.ksl.com
Other
1511ms
32 KB
—
€6/mo
Costly
Unattributable
Unattributable
Other
742ms
0 KB
—
€3/mo
Costly
Google Tag Manager
www.googletagmanager.com
Tag Manager
723ms
166 KB
46%
€3/mo
Costly
d3njgrq4uvb497.cloudfront.net
d3njgrq4uvb497.cloudfront.net
Other
519ms
88 KB
50%
€2/mo
Costly
cookie-cdn.cookiepro.com
cookie-cdn.cookiepro.com
Other
517ms
18 KB
—
€2/mo
Costly
client.px-cloud.net
client.px-cloud.net
Other
454ms
131 KB
45%
€2/mo
Costly
adl.ksldigital.media
adl.ksldigital.media
Other
417ms
24 KB
—
€2/mo
Costly
d2ogoirb28wat7.cloudfront.net
d2ogoirb28wat7.cloudfront.net
Other
364ms
33 KB
63%
€1/mo
Costly
cookie-cdn.cookiepro.com
cookie-cdn.cookiepro.com
Other
352ms
126 KB
51%
€1/mo
Costly
securepubads.g.doubleclick.net
securepubads.g.doubleclick.net
Other
344ms
188 KB
69%
€1/mo
Costly
fundingchoicesmessages.google.com
fundingchoicesmessages.google.com
Other
295ms
70 KB
54%
€1/mo
Costly
Google Tag Manager
www.googletagmanager.com
Tag Manager
294ms
165 KB
40%
€1/mo
Costly
media.twiliocdn.com
media.twiliocdn.com
Other
253ms
122 KB
71%
€1/mo
Costly
Stripe
js.stripe.com
Payment
248ms
221 KB
73%
€1/mo
Essential
Google Tag Manager
www.googletagmanager.com
Tag Manager
234ms
129 KB
49%
€1/mo
Costly
d3njgrq4uvb497.cloudfront.net
d3njgrq4uvb497.cloudfront.net
Other
228ms
54 KB
—
€1/mo
Costly
d2ogoirb28wat7.cloudfront.net
d2ogoirb28wat7.cloudfront.net
Other
205ms
167 KB
—
€1/mo
Costly
tentacles.smartocto.com
tentacles.smartocto.com
Other
168ms
14 KB
—
€1/mo
Optional
static.ksl.com
static.ksl.com
Other
159ms
77 KB
27%
€1/mo
Optional
cdn.siftscience.com
cdn.siftscience.com
Other
144ms
20 KB
—
€1/mo
Optional
www.googletagservices.com
www.googletagservices.com
Other
83ms
35 KB
—
€0/mo
Optional
cookie-cdn.cookiepro.com
cookie-cdn.cookiepro.com
Other
79ms
9 KB
—
€0/mo
Optional
static.ksl.com
static.ksl.com
Other
78ms
6 KB
—
€0/mo
Optional
tags.srv.stackadapt.com
tags.srv.stackadapt.com
Other
63ms
8 KB
—
€0/mo
Optional
fundingchoicesmessages.google.com
fundingchoicesmessages.google.com
Other
59ms
69 KB
—
€0/mo
Optional
www.ksl.com
Other
Costly
Execution1511ms
Transfer32 KB
Monthly Cost€6/mo
Unattributable
Other
Costly
Execution742ms
Transfer0 KB
Monthly Cost€3/mo
Google Tag Manager
Tag Manager
Costly
Execution723ms
Transfer166 KB
Unused46%
Monthly Cost€3/mo
d3njgrq4uvb497.cloudfront.net
Other
Costly
Execution519ms
Transfer88 KB
Unused50%
Monthly Cost€2/mo
cookie-cdn.cookiepro.com
Other
Costly
Execution517ms
Transfer18 KB
Monthly Cost€2/mo
client.px-cloud.net
Other
Costly
Execution454ms
Transfer131 KB
Unused45%
Monthly Cost€2/mo
adl.ksldigital.media
Other
Costly
Execution417ms
Transfer24 KB
Monthly Cost€2/mo
d2ogoirb28wat7.cloudfront.net
Other
Costly
Execution364ms
Transfer33 KB
Unused63%
Monthly Cost€1/mo
cookie-cdn.cookiepro.com
Other
Costly
Execution352ms
Transfer126 KB
Unused51%
Monthly Cost€1/mo
securepubads.g.doubleclick.net
Other
Costly
Execution344ms
Transfer188 KB
Unused69%
Monthly Cost€1/mo
fundingchoicesmessages.google.com
Other
Costly
Execution295ms
Transfer70 KB
Unused54%
Monthly Cost€1/mo
Google Tag Manager
Tag Manager
Costly
Execution294ms
Transfer165 KB
Unused40%
Monthly Cost€1/mo
media.twiliocdn.com
Other
Costly
Execution253ms
Transfer122 KB
Unused71%
Monthly Cost€1/mo
Stripe
Payment
Essential
Execution248ms
Transfer221 KB
Unused73%
Monthly Cost€1/mo
Google Tag Manager
Tag Manager
Costly
Execution234ms
Transfer129 KB
Unused49%
Monthly Cost€1/mo
d3njgrq4uvb497.cloudfront.net
Other
Costly
Execution228ms
Transfer54 KB
Monthly Cost€1/mo
d2ogoirb28wat7.cloudfront.net
Other
Costly
Execution205ms
Transfer167 KB
Monthly Cost€1/mo
tentacles.smartocto.com
Other
Optional
Execution168ms
Transfer14 KB
Monthly Cost€1/mo
static.ksl.com
Other
Optional
Execution159ms
Transfer77 KB
Unused27%
Monthly Cost€1/mo
cdn.siftscience.com
Other
Optional
Execution144ms
Transfer20 KB
Monthly Cost€1/mo
www.googletagservices.com
Other
Optional
Execution83ms
Transfer35 KB
Monthly Cost€0/mo
cookie-cdn.cookiepro.com
Other
Optional
Execution79ms
Transfer9 KB
Monthly Cost€0/mo
static.ksl.com
Other
Optional
Execution78ms
Transfer6 KB
Monthly Cost€0/mo
tags.srv.stackadapt.com
Other
Optional
Execution63ms
Transfer8 KB
Monthly Cost€0/mo
fundingchoicesmessages.google.com
Other
Optional
Execution59ms
Transfer69 KB
Monthly Cost€0/mo
These scripts may cost more than they're worth
www.ksl.com adds 1511ms and costs ~€6/month
Unattributable adds 742ms and costs ~€3/month
Google Tag Manager adds 723ms and costs ~€3/month
d3njgrq4uvb497.cloudfront.net adds 519ms and costs ~€2/month
cookie-cdn.cookiepro.com adds 517ms and costs ~€2/month
client.px-cloud.net adds 454ms and costs ~€2/month
adl.ksldigital.media adds 417ms and costs ~€2/month
d2ogoirb28wat7.cloudfront.net adds 364ms and costs ~€1/month
cookie-cdn.cookiepro.com adds 352ms and costs ~€1/month
securepubads.g.doubleclick.net adds 344ms and costs ~€1/month
fundingchoicesmessages.google.com adds 295ms and costs ~€1/month
Google Tag Manager adds 294ms and costs ~€1/month
media.twiliocdn.com adds 253ms and costs ~€1/month
Google Tag Manager adds 234ms and costs ~€1/month
d3njgrq4uvb497.cloudfront.net adds 228ms and costs ~€1/month
d2ogoirb28wat7.cloudfront.net adds 205ms and costs ~€1/month
100% of JavaScript execution time is spent on third-party scripts. Consider auditing which scripts are essential.
Why this matters
When third-party JS execution time exceeds your own, performance gains from frontend work are capped by code you don't own.
Learn more ▾▴
Every millisecond of third-party JS competes with your own for main-thread time. If their share is bigger than yours, optimization on your code base barely moves the needle. Audit, defer, or remove third-parties before further frontend optimization. Use Lighthouse's third-party audit to identify the worst offenders.
Source: web.dev
www.ksl.com takes 1511ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Unattributable takes 742ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Google Tag Manager takes 723ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
d3njgrq4uvb497.cloudfront.net takes 519ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
50% of d3njgrq4uvb497.cloudfront.net's code is unused. The script may be loading features you don't use.
Why this matters
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
cookie-cdn.cookiepro.com takes 517ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
client.px-cloud.net takes 454ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
adl.ksldigital.media takes 417ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
d2ogoirb28wat7.cloudfront.net takes 364ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
63% of d2ogoirb28wat7.cloudfront.net's code is unused. The script may be loading features you don't use.
Why this matters
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
cookie-cdn.cookiepro.com takes 352ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
51% of cookie-cdn.cookiepro.com's code is unused. The script may be loading features you don't use.
Why this matters
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
securepubads.g.doubleclick.net takes 344ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
69% of securepubads.g.doubleclick.net's code is unused. The script may be loading features you don't use.
Why this matters
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
fundingchoicesmessages.google.com takes 295ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
54% of fundingchoicesmessages.google.com's code is unused. The script may be loading features you don't use.
Why this matters
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
Google Tag Manager takes 294ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
media.twiliocdn.com takes 253ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
71% of media.twiliocdn.com's code is unused. The script may be loading features you don't use.
Why this matters
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
73% of Stripe's code is unused. The script may be loading features you don't use.
Why this matters
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev
Google Tag Manager takes 234ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
d3njgrq4uvb497.cloudfront.net takes 228ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
d2ogoirb28wat7.cloudfront.net takes 205ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
Why this matters
This script has high main-thread execution time — optimize hot paths or defer.