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
64 images, 0 KB saveable
REVIEW
64 images, 0 KB saveable
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/81... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/16... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/16... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/sm... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/16... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/81... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/16... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/responsiv... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/18... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/responsiv... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/16... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/72... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.heraldscotland.com/resources/images/20... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
64images1.4 MB
0oversized-0 KB
55legacy format
46missing 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
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
Performance issues directly impact user engagement and conversion rates.
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
C
Green Hosting
Action
Whether the site is served from green-energy infrastructure
REVIEW
Green Hosting
No green hosting detected
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
9 fonts (157 KB)
PASS
9 fonts (157 KB)
Info::
i
9 font(s) use font-display: swap (FOUT risk but functional)
Web fonts
9
157 KB total
Render-blocking
0
of 9
Dominant font-display
swap
Most common across fonts
Font loading timeline
TransferFOIT (block)FOUT (swap)
source-serif-4-v8-latin...woff2swap
Size20 KB
Load time37 ms
Start536 ms
RiskFOUT — text flashes from fallback to web font
source-serif-4-v8-latin...woff2swap
Size21 KB
Load time38 ms
Start536 ms
RiskFOUT — text flashes from fallback to web font
source-serif-4-v8-latin...woff2swap
Size21 KB
Load time38 ms
Start537 ms
RiskFOUT — text flashes from fallback to web font
libre-franklin-v14-lati...woff2swap
Size15 KB
Load time32 ms
Start537 ms
RiskFOUT — text flashes from fallback to web font
noto-serif-v23-latin-70...woff2swap
Size15 KB
Load time34 ms
Start538 ms
RiskFOUT — text flashes from fallback to web font
noto-serif-v23-latin-60...woff2swap
Size15 KB
Load time49 ms
Start538 ms
RiskFOUT — text flashes from fallback to web font
libre-franklin-v14-lati...woff2swap
Size15 KB
Load time64 ms
Start539 ms
RiskFOUT — text flashes from fallback to web font
source-serif-4-v8-latin...woff2swap
Size20 KB
Load time53 ms
Start539 ms
RiskFOUT — text flashes from fallback to web font
noto-serif-v23-latin-40...woff2swap
Size14 KB
Load time15 ms
Start1.0 s
RiskFOUT — text flashes from fallback to web font
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 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
No optimization needed
PASS
No optimization needed
Info::
✓
No resource hint issues
Network Waterfall
193 requests over 7726ms
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-party2617ms · 1230KB · £27/mo
Script
Category
Execution
Transfer
Unused
Monthly Cost
Verdict
www.heraldscotland.com
www.heraldscotland.com
Other
763ms
69 KB
—
£8/mo
Costly
Unattributable
Unattributable
Other
357ms
0 KB
—
£4/mo
Costly
a02342.heraldscotland.com
a02342.heraldscotland.com
Other
173ms
91 KB
68%
£2/mo
Optional
Google Tag Manager
www.googletagmanager.com
Tag Manager
167ms
151 KB
43%
£2/mo
Optional
discovery.evvnt.com
discovery.evvnt.com
Other
161ms
110 KB
26%
£2/mo
Optional
Google Tag Manager
www.googletagmanager.com
Tag Manager
139ms
170 KB
37%
£1/mo
Optional
btloader.com
btloader.com
Other
118ms
39 KB
—
£1/mo
Optional
cdn.tinypass.com
cdn.tinypass.com
Other
112ms
133 KB
61%
£1/mo
Optional
a02342.heraldscotland.com
a02342.heraldscotland.com
Other
106ms
42 KB
—
£1/mo
Optional
Google Tag Manager
www.googletagmanager.com
Tag Manager
79ms
134 KB
48%
£1/mo
Optional
cdn.parsely.com
cdn.parsely.com
Other
74ms
29 KB
—
£1/mo
Optional
assets.adobedtm.com
assets.adobedtm.com
Other
72ms
67 KB
39%
£1/mo
Optional
ajax.googleapis.com
ajax.googleapis.com
Other
65ms
30 KB
—
£1/mo
Optional
js-agent.newrelic.com
js-agent.newrelic.com
Other
63ms
28 KB
—
£1/mo
Optional
www.heraldscotland.com
www.heraldscotland.com
Other
62ms
18 KB
—
£1/mo
Optional
Google Tag Manager
www.googletagmanager.com
Tag Manager
53ms
118 KB
54%
£1/mo
Optional
id.tinypass.com
id.tinypass.com
Other
52ms
1 KB
—
£1/mo
Optional
www.heraldscotland.com
Other
Costly
Execution763ms
Transfer69 KB
Monthly Cost£8/mo
Unattributable
Other
Costly
Execution357ms
Transfer0 KB
Monthly Cost£4/mo
a02342.heraldscotland.com
Other
Optional
Execution173ms
Transfer91 KB
Unused68%
Monthly Cost£2/mo
Google Tag Manager
Tag Manager
Optional
Execution167ms
Transfer151 KB
Unused43%
Monthly Cost£2/mo
discovery.evvnt.com
Other
Optional
Execution161ms
Transfer110 KB
Unused26%
Monthly Cost£2/mo
Google Tag Manager
Tag Manager
Optional
Execution139ms
Transfer170 KB
Unused37%
Monthly Cost£1/mo
btloader.com
Other
Optional
Execution118ms
Transfer39 KB
Monthly Cost£1/mo
cdn.tinypass.com
Other
Optional
Execution112ms
Transfer133 KB
Unused61%
Monthly Cost£1/mo
a02342.heraldscotland.com
Other
Optional
Execution106ms
Transfer42 KB
Monthly Cost£1/mo
Google Tag Manager
Tag Manager
Optional
Execution79ms
Transfer134 KB
Unused48%
Monthly Cost£1/mo
cdn.parsely.com
Other
Optional
Execution74ms
Transfer29 KB
Monthly Cost£1/mo
assets.adobedtm.com
Other
Optional
Execution72ms
Transfer67 KB
Unused39%
Monthly Cost£1/mo
ajax.googleapis.com
Other
Optional
Execution65ms
Transfer30 KB
Monthly Cost£1/mo
js-agent.newrelic.com
Other
Optional
Execution63ms
Transfer28 KB
Monthly Cost£1/mo
www.heraldscotland.com
Other
Optional
Execution62ms
Transfer18 KB
Monthly Cost£1/mo
Google Tag Manager
Tag Manager
Optional
Execution53ms
Transfer118 KB
Unused54%
Monthly Cost£1/mo
id.tinypass.com
Other
Optional
Execution52ms
Transfer1 KB
Monthly Cost£1/mo
These scripts may cost more than they're worth
www.heraldscotland.com adds 763ms and costs ~£8/month
Unattributable adds 357ms and costs ~£4/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.heraldscotland.com takes 763ms 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 357ms 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
68% of a02342.heraldscotland.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
61% of cdn.tinypass.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
54% of Google Tag Manager'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.