Document response uses gzip; brotli would be ~20% smaller
REVIEW
Document response uses gzip; brotli would be ~20% smaller
Info::
i
Main HTML response uses gzip (brotli would be ~20% smaller)
All current browsers support brotli. Most CDNs (Cloudflare, Fastly, AWS CloudFront, Vercel, Netlify) can switch from gzip to brotli with a single config flag. Origin servers (nginx, Apache) need a brotli module compiled in -- nginx-brotli or Apache mod_brotli.
B
Server-Timing Observability
No Server-Timing header found
REVIEW
No Server-Timing header found
Info::
i
No Server-Timing header found
Server-Timing exposes backend timing breakdowns to browser DevTools (e.g., `db: 45ms; render: 120ms; cache: 2ms`). Useful for diagnosing slow pages without backend log access. Most modern frameworks (Next.js, Cloudflare Workers, Fastly) emit it automatically; absence on a managed platform usually means telemetry headers are stripped at the edge.
A
Page Weight Budget
979 KB transferred, 56 requests
PASS
979 KB transferred, 56 requests
Info::
✓
Page weighs 2.5 MB (979 KB transferred)
Info::
i
56 HTTP requests
Info::
i
Estimated 0.20 g CO2 per page load
979 KBtransferred
56 requests
0.20 g CO2 per page load
Images505.0 KiB52%
HTML186.7 KiB19%
JavaScript148.1 KiB15%
Fonts125.1 KiB13%
CSS11.9 KiB1%
Other2.1 KiB0%
02.4 MB4.9 MB
Under budget
A+
Third-Party Impact
9% third-party, 0 ms blocking
PASS
9% third-party, 0 ms blocking
Info::
i
Third-party code accounts for 9% of page weight (90.1 KiB of 978.9 KiB)
Info::
✓
Third-party blocking time is low (0 ms)
91%
First-party Third-party
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
10 fonts (125 KB)
PASS
10 fonts (125 KB)
Info::
i
10 font(s) use font-display: swap (FOUT risk but functional)
Web fonts
10
125 KB total
Render-blocking
0
of 10
Dominant font-display
swap
Most common across fonts
Font loading timeline
TransferFOIT (block)FOUT (swap)
pxiEyp8kv8JHgFVrJJfecg....woff2swap
Size8 KB
Load time14 ms
Start803 ms
RiskFOUT — text flashes from fallback to web font
pxiByp8kv8JHgFVrLEj6Z1x...woff2swap
Size8 KB
Load time17 ms
Start804 ms
RiskFOUT — text flashes from fallback to web font
pxiByp8kv8JHgFVrLCz7Z1x...woff2swap
Size8 KB
Load time21 ms
Start804 ms
RiskFOUT — text flashes from fallback to web font
LDIoaomQNQcsA88c7O9yZ4K...woff2swap
Size27 KB
Load time25 ms
Start804 ms
RiskFOUT — text flashes from fallback to web font
pxiByp8kv8JHgFVrLDD4Z1x...woff2swap
Size8 KB
Load time28 ms
Start805 ms
RiskFOUT — text flashes from fallback to web font
pxiDyp8kv8JHgFVrJJLm111...woff2swap
Size9 KB
Load time30 ms
Start805 ms
RiskFOUT — text flashes from fallback to web font
pxiByp8kv8JHgFVrLGT9Z1x...woff2swap
Size8 KB
Load time34 ms
Start805 ms
RiskFOUT — text flashes from fallback to web font
pxiDyp8kv8JHgFVrJJLmr19...woff2swap
Size9 KB
Load time26 ms
Start810 ms
RiskFOUT — text flashes from fallback to web font
pxiByp8kv8JHgFVrLBT5Z1x...woff2swap
Size7 KB
Load time33 ms
Start811 ms
RiskFOUT — text flashes from fallback to web font
themify.woffwoffswap
Size35 KB
Load time24 ms
Start1.7 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 ~11 KB and ~22 ms
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
A+
HTTP/3 (QUIC)
HTTP/3 advertised via Alt-Svc
PASS
HTTP/3 advertised via Alt-Svc
Info::
✓
HTTP/3 (QUIC) is supported
First-load mobile users on cellular networks see meaningful latency improvements with HTTP/3. The QUIC transport collapses TLS + TCP handshakes into one and recovers faster from packet loss.
A+
Asset Compression
All 1 asset host use brotli
PASS
All 1 asset host use brotli
Info::
✓
www.googletagmanager.com serves assets with brotli (assets: 4)
LCP image preload audit not available for this scan
A+
Main HTML Cache-Control
Main HTML max-age=0 (≤ 5min) is appropriate
PASS
Main HTML max-age=0 (≤ 5min) is appropriate
Info::
✓
Main HTML max-age=0 (≤ 5min) is appropriate
Got: public, max-age=0, s-maxage=3600
A+
Server Response Intelligence
2 server-response signal(s) detected
PASS
2 server-response signal(s) detected
Info::
✓
`Vary` header declared: Accept-Encoding
The page declares a `Vary` header, telling downstream caches which request headers the response varies on. Critical for content-negotiated responses (compression, language, cookies, device class).
Info::
✓
Both `ETag` and `Last-Modified` present -- efficient revalidation supported
The page returns both `ETag` (content hash) and `Last-Modified` (timestamp) headers. Browsers can issue conditional GETs with `If-None-Match` or `If-Modified-Since`; the server returns 304 Not Modified for unchanged content, saving bandwidth. ETag is the more reliable of the two (timestamps fail in DST transitions and clock skew).