4 font(s) use font-display: swap (FOUT risk but functional)
Web fonts
4
123 KB total
Render-blocking
0
of 4
Dominant font-display
swap
Most common across fonts
Font loading timeline
TransferFOIT (block)FOUT (swap)
kmKnZrc3Hgbbcjq75U4usly...woff2swap
Size33 KB
Load time412 ms
Start140 ms
RiskFOUT — text flashes from fallback to web font
memvYaGs126MiZpBA-UvWbX...woff2swap
Size48 KB
Load time399 ms
Start140 ms
RiskFOUT — text flashes from fallback to web font
memQYaGs126MiZpBA-UFUIc...woff2swap
Size19 KB
Load time416 ms
Start141 ms
RiskFOUT — text flashes from fallback to web font
S6uyw4BMUTPHjx4wXg.woff2woff2swap
Size23 KB
Load time422 ms
Start141 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
1 hints, 0 missing preconnects
PASS
1 hints, 0 missing preconnects
Info::
✓
Page uses 1 resource hint(s)
Current Resource Hints
preconnect
1
preload—
dns-prefetch—
prefetch—
1 resource hints configured
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+
Document Compression
Document response uses brotli
PASS
Document response uses brotli
Info::
✓
Main HTML response uses brotli (Content-Encoding: br)
Brotli is the best text-compression algorithm for general use, ~20% smaller than gzip on average (40% on smaller files). Modern browsers all support it.
A
Asset Compression
1 of 1 asset host still on gzip
PASS
1 of 1 asset host still on gzip
Info::
i
framerusercontent.com serves assets with gzip; brotli would be ~20% smaller (assets: 27)
Every current browser accepts brotli. On a CDN this is a per-pull-zone toggle (Cloudflare, Fastly, CloudFront, CDN77, Bunny all expose it); on an origin it needs the brotli module (nginx-brotli, Apache mod_brotli). The saving lands on the assets this host serves, not on the HTML document -- the document's own encoding is reported separately.
Got: framerusercontent.com (text/javascript)
A+
LCP Image Preload
LCP preload audit not available
PASS
LCP preload audit not available
Info::
✓
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, must-revalidate
A+
Server-Timing Observability
7 Server-Timing entries advertised
PASS
7 Server-Timing entries advertised
Info::
✓
Server-Timing header advertises 7 timing entries
A+
Server Response Intelligence
2 server-response signal(s) detected
PASS
2 server-response signal(s) detected
Info::
✓
`Vary` header declared: Accept-Encoding, Accept
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).
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
JavaScript Blocking
1 JS blocking issue(s) detected
PASS
1 JS blocking issue(s) detected
Warning::
!
Total JS execution time is 6.9 s -- over the 3.5s budget
Total JavaScript execution (parse + compile + run) across all scripts exceeds 3.5 seconds. On low-end devices that becomes 7-15+ seconds and shows up directly in TBT and INP. Reduce by: tree-shaking unused dependencies, code-splitting (dynamic `import()`), removing or deferring third-party tracking, and replacing heavy frameworks where they're not needed.
A
CSS Performance Depth
1 CSS depth issue(s) detected
PASS
1 CSS depth issue(s) detected
Warning::
!
3 `@font-face` rule(s) without `font-display` -- causes FOIT
An `@font-face` rule without `font-display` causes Flash of Invisible Text (FOIT): the browser hides the styled text for up to 3 seconds while the custom font downloads, then either swaps to fallback (Chrome / Firefox) or stays invisible (older Safari). Add `font-display: swap` (shows fallback immediately, swaps in the custom font when ready) or `font-display: optional` (uses fallback if the font isn't ready in 100ms; never causes visible swap). Either eliminates FOIT outright.
Network Waterfall
51 requests over 3595ms
INFO
HTML JavaScript CSS Images Fonts XHR/Fetch Other
Third-Party Script Cost
Per-script blocking time, transfer cost, and cache headers
INFO
29%of JavaScript execution is third-party
First-party Third-party1989ms · 223KB · $26/mo
Script
Category
Execution
Transfer
Unused
Monthly Cost
Verdict
framerusercontent.com
framerusercontent.com
Other
1203ms
49 KB
52%
$16/mo
Costly
framerusercontent.com
framerusercontent.com
Other
648ms
44 KB
—
$9/mo
Costly
events.framer.com
events.framer.com
Other
79ms
11 KB
—
$1/mo
Optional
framerusercontent.com
framerusercontent.com
Other
58ms
118 KB
58%
$1/mo
Optional
framerusercontent.com
Other
Costly
Execution1203ms
Transfer49 KB
Unused52%
Monthly Cost$16/mo
framerusercontent.com
Other
Costly
Execution648ms
Transfer44 KB
Monthly Cost$9/mo
events.framer.com
Other
Optional
Execution79ms
Transfer11 KB
Monthly Cost$1/mo
framerusercontent.com
Other
Optional
Execution58ms
Transfer118 KB
Unused58%
Monthly Cost$1/mo
These scripts may cost more than they're worth
framerusercontent.com adds 1203ms and costs ~$16/month
framerusercontent.com adds 648ms and costs ~$9/month
framerusercontent.com takes 1203ms 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 framerusercontent.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
framerusercontent.com takes 648ms 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
58% of framerusercontent.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.