Adding a Cache-Control header can significantly improve repeat-visit performance.
B
Third-Party Impact
43% third-party, 0 ms blocking
REVIEW
43% third-party, 0 ms blocking
Info::
i
Third-party code accounts for 43% of page weight (3.1 MiB of 7.1 MiB)
Info::
✓
Third-party blocking time is low (0 ms)
57%
43%
First-party Third-party
C
Image Optimization
Action
72 images, 0 KB saveable
REVIEW
72 images, 0 KB saveable
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://governor.mt.gov/flag-status/util/full.png is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
Warning::
!
https://mt.gov/_images/media-gallery/fp_photo_gall... is missing width/height — may cause layout shift
Set explicit width and height to prevent CLS.
72images4.1 MB
0oversized-0 KB
69legacy format
9missing 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
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
4 fonts (265 KB)
PASS
4 fonts (265 KB)
Info::
i
4 font(s) use font-display: swap (FOUT risk but functional)
Web fonts
4
265 KB total
Render-blocking
0
of 4
Dominant font-display
swap
Most common across fonts
Font loading timeline
TransferFOIT (block)FOUT (swap)
fa-solid-900.woff2woff2swap
Size111 KB
Load time6 ms
Start2.0 s
RiskFOUT — text flashes from fallback to web font
Subset this font — over 100 KB suggests Latin Extended or full glyph coverage that most pages don't need
fa-brands-400.woff2woff2swap
Size99 KB
Load time7 ms
Start2.0 s
RiskFOUT — text flashes from fallback to web font
fa-regular-400.woff2woff2swap
Size19 KB
Load time3 ms
Start2.4 s
RiskFOUT — text flashes from fallback to web font
KFO7CnqEu92Fr1ME7kSn66a...woff2swap
Size37 KB
Load time36 ms
Start7.3 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)
Fixing the unchecked items could save ~55 KB and ~110 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
3 hints, 0 missing preconnects
PASS
3 hints, 0 missing preconnects
Info::
✓
Page uses 3 resource hint(s)
Current Resource Hints
preconnect
2
preload—
dns-prefetch—
prefetch
1
3 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
Network Waterfall
116 requests over 10308ms
INFO
HTML JavaScript CSS Images Fonts XHR/Fetch Other
Third-Party Script Cost
Per-script blocking time, transfer cost, and cache headers
INFO
65%of JavaScript execution is third-party
First-party Third-party2154ms · 1199KB · $29/mo
Script
Category
Execution
Transfer
Unused
Monthly Cost
Verdict
Unattributable
Unattributable
Other
803ms
0 KB
—
$11/mo
Costly
static.formstack.com
static.formstack.com
Other
774ms
713 KB
64%
$10/mo
Costly
Google Tag Manager
www.googletagmanager.com
Tag Manager
215ms
156 KB
42%
$3/mo
Costly
Google Tag Manager
www.googletagmanager.com
Tag Manager
145ms
122 KB
52%
$2/mo
Optional
template.mt.gov
template.mt.gov
Other
103ms
21 KB
—
$1/mo
Optional
code.jquery.com
code.jquery.com
Other
58ms
31 KB
—
$1/mo
Optional
Google Tag Manager
www.googletagmanager.com
Tag Manager
57ms
156 KB
71%
$1/mo
Optional
Unattributable
Other
Costly
Execution803ms
Transfer0 KB
Monthly Cost$11/mo
static.formstack.com
Other
Costly
Execution774ms
Transfer713 KB
Unused64%
Monthly Cost$10/mo
Google Tag Manager
Tag Manager
Costly
Execution215ms
Transfer156 KB
Unused42%
Monthly Cost$3/mo
Google Tag Manager
Tag Manager
Optional
Execution145ms
Transfer122 KB
Unused52%
Monthly Cost$2/mo
template.mt.gov
Other
Optional
Execution103ms
Transfer21 KB
Monthly Cost$1/mo
code.jquery.com
Other
Optional
Execution58ms
Transfer31 KB
Monthly Cost$1/mo
Google Tag Manager
Tag Manager
Optional
Execution57ms
Transfer156 KB
Unused71%
Monthly Cost$1/mo
These scripts may cost more than they're worth
Unattributable adds 803ms and costs ~$11/month
static.formstack.com adds 774ms and costs ~$10/month
Google Tag Manager adds 215ms and costs ~$3/month
65% of JavaScript execution time comes from third-party scripts.
Why this matters
Third-party scripts (analytics, ads, social, A/B testing) often dominate execution time — every one is a perf-and-privacy tax.
Learn more ▾▴
Each third-party script is a black box: you don't control when it loads, what it executes, or how much it grows. They often account for a major share of total blocking time on average sites (HTTP Archive's Web Almanac documents the trend). Audit which ones you actually need, defer the rest, and use facade patterns (lite-youtube, lite-vimeo) for embedded media.
Source: web.dev / HTTP Archive Web Almanac
Unattributable takes 803ms 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
static.formstack.com takes 774ms 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
64% of static.formstack.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 215ms 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
52% 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.
Source: web.dev
71% 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.