JavaScript is 847 KB — consider code splitting or lazy loading
Large JavaScript bundles delay interactivity. Split code by route or defer non-critical scripts.
Got: 847 KB
Info::
i
Fonts are 221 KB — consider subsetting or using system fonts
Subset fonts to include only used characters, or switch to system font stacks.
Got: 221 KB
Info::
i
74 HTTP requests
Info::
i
Estimated 0.32 g CO2 per page load
1.5 MBtransferred
74 requests
0.32 g CO2 per page load
JavaScript847.4 KiB53%
Images370.5 KiB23%
Fonts220.9 KiB14%
Other66.2 KiB4%
CSS42.1 KiB3%
HTML16.9 KiB1%
Other15.4 KiB1%
Other4.2 KiB0%
Other325 B0%
02.4 MB4.9 MB
Approaching limit
Large JavaScript bundles delay interactivity. Split code by route or defer non-critical scripts.
Why this matters
JavaScript bundle is large — code-split routes and lazy-load off-screen components to defer.
Source: web.dev
Subset fonts to include only used characters, or switch to system font stacks.
Why this matters
Font payload is large — subset to used glyphs only, or fall back to system fonts (zero load time).
Source: web.dev font loading
C
Image Optimization
Action
22 images, 0 KB saveable
REVIEW
22 images, 0 KB saveable
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... 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.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://www.exeter.ac.uk/v8media/recruitmentsites/... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
22images370 KB
0oversized-0 KB
9legacy format
12missing 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
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
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
6 fonts (221 KB)
PASS
6 fonts (221 KB)
Info::
i
6 font(s) use font-display: swap (FOUT risk but functional)
Web fonts
6
221 KB total
Render-blocking
0
of 6
Dominant font-display
swap
Most common across fonts
Font loading timeline
TransferFOIT (block)FOUT (swap)
outfit-v11-latin_latin-...woff2swap
Size18 KB
Load time98 ms
Start146 ms
RiskFOUT — text flashes from fallback to web font
outfit-v11-latin_latin-...woff2swap
Size18 KB
Load time42 ms
Start146 ms
RiskFOUT — text flashes from fallback to web font
fa-brands-400.woff2woff2swap
Size76 KB
Load time60 ms
Start146 ms
RiskFOUT — text flashes from fallback to web font
fa-regular-400.woff2woff2swap
Size14 KB
Load time40 ms
Start147 ms
RiskFOUT — text flashes from fallback to web font
fa-solid-900.woff2woff2swap
Size77 KB
Load time62 ms
Start147 ms
RiskFOUT — text flashes from fallback to web font
glyphicons-halflings-re...woff2swap
Size18 KB
Load time47 ms
Start280 ms
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
15 hints, 0 missing preconnects
PASS
15 hints, 0 missing preconnects
Info::
✓
Page uses 15 resource hint(s)
Current Resource Hints
preconnect
3
preload
+2
12
dns-prefetch—
prefetch—
15 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
HTTP Caching
max-age=43200 (12 hours)
PASS
max-age=43200 (12 hours)
Info::
✓
Cache-Control header is set
Got: max-age=43200
Info::
✓
Effective TTL: 12 hours (max-age=43200)
Info::
i
No ETag or Last-Modified header
Conditional requests (304 Not Modified) are not possible without validators.
Cache-Control
max-age=43200
Directive
Value
Meaning
max-age
43200
Cache for 12 hours
Effective TTL: 43200 seconds
Network Waterfall
74 requests over 3341ms
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-party2662ms · 807KB · £28/mo
Script
Category
Execution
Transfer
Unused
Monthly Cost
Verdict
Unattributable
Unattributable
Other
568ms
0 KB
—
£6/mo
Costly
Google Tag Manager
www.googletagmanager.com
Tag Manager
373ms
207 KB
31%
£4/mo
Costly
Google Tag Manager
www.googletagmanager.com
Tag Manager
364ms
157 KB
42%
£4/mo
Costly
cdn-ukwest.onetrust.com
cdn-ukwest.onetrust.com
Other
312ms
129 KB
53%
£3/mo
Costly
www.exeter.ac.uk
www.exeter.ac.uk
Other
256ms
17 KB
—
£3/mo
Costly
Microsoft Clarity
scripts.clarity.ms
Session Replay
245ms
26 KB
—
£3/mo
Costly
Google Tag Manager
www.googletagmanager.com
Tag Manager
237ms
169 KB
39%
£2/mo
Costly
try.abtasty.com
try.abtasty.com
Other
169ms
64 KB
56%
£2/mo
Optional
try.abtasty.com
try.abtasty.com
Other
80ms
8 KB
—
£1/mo
Optional
www.exeter.ac.uk
www.exeter.ac.uk
Other
58ms
30 KB
—
£1/mo
Optional
Unattributable
Other
Costly
Execution568ms
Transfer0 KB
Monthly Cost£6/mo
Google Tag Manager
Tag Manager
Costly
Execution373ms
Transfer207 KB
Unused31%
Monthly Cost£4/mo
Google Tag Manager
Tag Manager
Costly
Execution364ms
Transfer157 KB
Unused42%
Monthly Cost£4/mo
cdn-ukwest.onetrust.com
Other
Costly
Execution312ms
Transfer129 KB
Unused53%
Monthly Cost£3/mo
www.exeter.ac.uk
Other
Costly
Execution256ms
Transfer17 KB
Monthly Cost£3/mo
Microsoft Clarity
Session Replay
Costly
Execution245ms
Transfer26 KB
Monthly Cost£3/mo
Google Tag Manager
Tag Manager
Costly
Execution237ms
Transfer169 KB
Unused39%
Monthly Cost£2/mo
try.abtasty.com
Other
Optional
Execution169ms
Transfer64 KB
Unused56%
Monthly Cost£2/mo
try.abtasty.com
Other
Optional
Execution80ms
Transfer8 KB
Monthly Cost£1/mo
www.exeter.ac.uk
Other
Optional
Execution58ms
Transfer30 KB
Monthly Cost£1/mo
These scripts may cost more than they're worth
Unattributable adds 568ms and costs ~£6/month
Google Tag Manager adds 373ms and costs ~£4/month
Google Tag Manager adds 364ms and costs ~£4/month
cdn-ukwest.onetrust.com adds 312ms and costs ~£3/month
www.exeter.ac.uk adds 256ms and costs ~£3/month
Microsoft Clarity adds 245ms and costs ~£3/month
Google Tag Manager adds 237ms and costs ~£2/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
Unattributable takes 568ms 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 373ms 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 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
cdn-ukwest.onetrust.com takes 312ms 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
53% of cdn-ukwest.onetrust.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
www.exeter.ac.uk takes 256ms 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
Microsoft Clarity takes 245ms 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 237ms 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
56% of try.abtasty.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.