Speed Audit Report

What Are Common Symptoms of CVI?

veintreatmentclinic.com/conditions/chronic-venous-insufficiency/symptoms

Analysis: April 21, 2026 - Lighthouse 13.1

Executive Summary

Critical Alert: This page has the WORST performance of all pages analyzed. Mobile score of 42 with TBT of 2,520ms (12.6x the acceptable limit).

Root cause: "Ours" Analytics SDK (100KB) + reCAPTCHA executing excessively - combined 20 long tasks (vs 11 on other pages). Plus the usual lazy loading issue on LCP.

Comparison: TBT 2,520ms vs 570ms (Causes) vs 270ms (Skin Changes). Something on this page triggers more reCAPTCHA activity.

🔴 NEW: Identified the "unattributed" culprit - "Ours" SDK at metrics.veintreatmentclinic.com/main.js (100KB). Features: session replay, heatmaps, bot detection - all running on every page load.

Mobile
Desktop
42
Performance Score
Needs Improvement

Score from 0-100. Target: 90+. This score affects Google ranking.

LCP - Main Content
6.1s
Target: 2.5s or less
View details
TBT - Blocking Time
2520ms
Target: 200ms or less
View details
CLS - Visual Stability
0.001
Target: 0.1 or less
View details
LCP - Largest Contentful Paint
What does it measure? The time until the largest visible content element renders. Google considers LCP the most important metric for perceived load speed - it's what users "feel" as the page loading.
LCP Element Identified: YouTube video thumbnail
<img src="https://i.ytimg.com/vi/.../maxresdefault.jpg" class="perfmatters-lazy">

Rendered size: 560 x 315px (above the fold, hero position)
Actual load time: 6.7 seconds (target: <2.5s)
Why is it slow? LCP Breakdown from PageSpeed:
  1. TTFB: 0ms - Server responds quickly
  2. Resource Load Delay: 1,260ms - Time before browser even starts loading the image (lazy loading holds it)
  3. Resource Load Duration: 60ms - Actual download is fast once started
  4. Element Render Delay: 1,480ms - Time after load before render (JS blocking)
  5. Total: ~2,800ms of preventable delay from lazy loading + JS blocking
DevTools Validation (Performance tab):
The waterfall shows a clear gap between DOMContentLoaded (2.1s) and LCP (6.6s). During this 4.5 second gap, the image element exists in the DOM but has src replaced with data-src by PerfMatters, preventing the browser from fetching it.

The irony: Lazy loading is designed to IMPROVE performance by deferring off-screen images. But when applied to the LCP element (which is ON-screen), it does the opposite - it artificially delays the most important content.

Root Cause

Plugin: PerfMatters (Lazy Loading feature)
Conflict: PerfMatters applies perfmatters-lazy class globally to all images without detecting which image is the LCP candidate.
Missing optimization: No fetchpriority="high" attribute to signal browser priority.
Missing preload: No <link rel="preload"> for the hero image.

TBT - Total Blocking Time
What does it measure? Sum of all "long tasks" (JavaScript execution >50ms) that block the main thread. During these blocks, the page cannot respond to user input - clicks, scrolls, and typing are delayed. This directly impacts user experience and is a Core Web Vital proxy for INP.
Total Blocking Time: 2,520ms (target: <200ms)
Exceeds threshold by: 2,320ms (12.6x the acceptable limit!)
Critical: WORST of all pages analyzed. This is an urgent fix priority.
Main Thread Breakdown (from DevTools Performance tab):
Script Blocking Time Source
recaptcha__en.js 467ms Google reCAPTCHA v3 (767KB)
invoca-latest.min.js 150ms Invoca call tracking
scripts.min.js 57ms Divi Theme core
FontAwesome kit 48ms Icon fonts (163KB)
Why reCAPTCHA blocks so much:
reCAPTCHA v3 runs continuously in the background to build a "trust score" - it analyzes mouse movements, scroll behavior, and typing patterns. This requires significant JavaScript execution on every page load, even when there's no form submission.

The conflict: PerfMatters detects reCAPTCHA and wraps it with type="pmdelayedscript" to defer loading. However, Divi's Contact Form module injects the script with data-no-defer="1", which overrides PerfMatters. Result: the script loads immediately AND the deferral wrapper adds overhead.

Root Cause

Primary blocker: Google reCAPTCHA v3 (312ms / 55% of TBT)
Loaded by: Divi Contact Form Module
Location: Divi → Theme Options → Integration → reCAPTCHA
Conflict detail: Divi adds data-no-defer="1" which bypasses PerfMatters delay, while PerfMatters still wraps it causing double processing.

CLS - Cumulative Layout Shift
What does it measure? Whether page elements "jump" or shift while loading. High CLS is frustrating when you try to click something and it moves.
On this page: Excellent. The CLS of 0.001 indicates the page is visually stable and elements don't move during loading.

Manual Validation in Chrome DevTools

Analysis performed in Incognito mode to eliminate extension interference. Click each image to enlarge.

Performance Summary
Performance Summary (Incognito) 6.08s total, 1.57s unattributed
Bottom-up Analysis
Bottom-up Analysis Recalculate style: 1.5s (20.9%)
DevTools Deep Dive: Root Cause Analysis
Main Thread Breakdown (Incognito - clean test):
Origin Transfer Main Thread
[unattributed] → see Ours SDK below 0.1 KB 1,570 ms
metrics.veintreatmentclinic.com (Ours SDK) 100 KB 39,382 ms
veintreatmentclinic.com (other) 79 KB 877 ms
Google CDN (reCAPTCHA) 0 KB 90 ms
Critical Finding: "Recalculate style" takes 1.5 seconds (20.9% of total time)

This is NOT a JavaScript problem - it's a CSS/DOM complexity problem:
  • DOM has 1,856 elements (high)
  • Divi generates complex nested CSS selectors
  • Every DOM change triggers full style recalculation
  • Inline styles from Divi modules add overhead
Bottom-up Analysis - Top Time Consumers:
Activity Self Time % of Total
Recalculate style 475 ms 20.9%
querySelectorAll 232 ms 10.2%
Pre-paint 202 ms 8.9%
Function call (inline script) 153 ms 6.7%

New Recommendation Based on DevTools

Enable Dynamic CSS in Divi:
Divi → Theme Options → Performance → Dynamic CSS → ON

This generates CSS only for modules actually used on each page, reducing CSS complexity and style recalculation time significantly.

🔴 ROOT CAUSE IDENTIFIED: "Ours" Analytics SDK
The 39+ seconds of "unattributed" main thread time comes from a single source:

https://metrics.veintreatmentclinic.com/main.js

This is "Ours" - a custom first-party analytics SDK. Size: 100KB of JavaScript.

What "Ours" SDK Does (ALL features active):
Feature Impact Status
Session Tracking Device ID, session count, first visit ✅ Needed
Event Tracking Page views, scrolls, clicks, forms ✅ Needed
Heatmaps Click coords, scroll depth, rage/dead clicks ⚠️ Heavy
Session Replay Full session recording with MutationObserver 🔴 Very Heavy
Bot Detection Mouse patterns, keystroke analysis, scroll velocity 🔴 Very Heavy
UTM Tracking fbclid, gclid, referrer tracking ✅ Needed
Active Event Listeners (always running):
mousemove (50ms) scroll click (capture) keydown touchstart focusin submit visibilitychange beforeunload popstate
Why it appears as "unattributed" in DevTools:
  • It's first-party (metrics.veintreatmentclinic.com subdomain)
  • Loaded dynamically after page init
  • Chrome doesn't attribute it to the main domain

Recommended Actions for Ours SDK

  1. Sampling: Enable 10% sampling for heatmaps/session replay
  2. Feature flags: Disable session replay + bot detection on content pages
  3. Lazy init: Defer SDK load until after user interaction or 5s delay
  4. Web Worker: Move heatmap/bot detection processing off main thread
  5. Bundle split: Separate core (~20KB) from optional features (~80KB)
Recommended Actions 0/7
Critical Resolve reCAPTCHA conflict (Divi vs PerfMatters)
-700KB v

Plugin identified: Divi Theme (Contact Form Module)

Location: Divi - Theme Options - Integration - reCAPTCHA v3

Problem: PerfMatters tries to defer the script with pmdelayedscript but Divi forces data-no-defer="1", causing a conflict.

Solution: In PerfMatters - Script Manager - find reCAPTCHA - set to "Delay" or "Disable" for pages without forms. Alternatively, disable global reCAPTCHA in Divi and enable only where needed.

High Defer reCAPTCHA until user interaction
-600ms v

Problem: reCAPTCHA loads immediately even if the user never touches the form.

Solution: PerfMatters - Script Manager - search "recaptcha" - select "Delay JavaScript".

Note: Resolve the conflict from the previous action first for the delay to work.

High Remove lazy loading from LCP image (YouTube)
-1.3s LCP v

Problem: The video thumbnail is the largest element, but PerfMatters delays it with lazy loading.

Solution: PerfMatters - Lazy Loading - Exclusions - add the YouTube thumbnail URL or element class.

Additional: Add fetchpriority="high" to the image so the browser prioritizes it.

Medium Optimize Before/After images (srcset)
-600KB v

Problem: Images of 1080x1080 are displayed at 134x134 (serving 8x larger than needed).

Solution: Use responsive images with srcset to serve the correct size per device.

Medium Defer non-critical CSS (Swiper, Instagram)
-400ms v

Problem: CSS for components not visible on initial load (sliders, Instagram feed) blocks rendering.

Solution: PerfMatters - CSS - Unused CSS or use "Remove Unused CSS" to defer these styles.

Low Add font-display: swap to FontAwesome
-40ms v

Problem: Icon fonts don't have font-display: swap, causing briefly invisible text.

Solution: Configure in FontAwesome Kit settings or add custom CSS.

Low Remove unused CSS/JS (-663KB)
-663KB v

Unused JavaScript (469 KB):

  • swiper-bundle.min.js - 42 KB. Solution: Exclude via PerfMatters - Script Manager if no sliders on page.
  • scripts.min.js - 43 KB (Divi core, difficult to reduce).
  • sticky-elements.js - 27 KB. Solution: Disable if no sticky headers used.
  • recaptcha - 357 KB. Reduced by deferring reCAPTCHA.

Unused CSS (194 KB):

  • style-static.min.css - 84 KB. Solution: Divi - Theme Options - Performance - Dynamic CSS.
  • FontAwesome - 49 KB. Solution: Use icon subset.
  • reCAPTCHA styles - 41 KB. Removed by deferring reCAPTCHA.
0/7 ACTIONS
AI

AI Summary Generator

Click "Generate" to create an AI-powered summary of this audit report.

Recommended Actions

Critical Resolve reCAPTCHA conflict (Divi vs PerfMatters)
-700KB

Plugin identified: Divi Theme (Contact Form Module)

Location: Divi - Theme Options - Integration - reCAPTCHA v3

Problem: PerfMatters tries to defer the script with pmdelayedscript but Divi forces data-no-defer="1", causing a conflict.

Solution: In PerfMatters - Script Manager - find reCAPTCHA - set to "Delay" or "Disable" for pages without forms. Alternatively, disable global reCAPTCHA in Divi and enable only where needed.

High Defer reCAPTCHA until user interaction
-600ms

Problem: reCAPTCHA loads immediately even if the user never touches the form.

Solution: PerfMatters - Script Manager - search "recaptcha" - select "Delay JavaScript".

Note: Resolve the conflict from the previous action first for the delay to work.

High Remove lazy loading from LCP image (YouTube)
-1.3s LCP

Problem: The video thumbnail is the largest element, but PerfMatters delays it with lazy loading.

Solution: PerfMatters - Lazy Loading - Exclusions - add the YouTube thumbnail URL or element class.

Additional: Add fetchpriority="high" to the image so the browser prioritizes it.

Medium Optimize Before/After images (srcset)
-600KB

Problem: Images of 1080x1080 are displayed at 134x134 (serving 8x larger than needed).

Solution: Use responsive images with srcset to serve the correct size per device.

Medium Defer non-critical CSS (Swiper, Instagram)
-400ms

Problem: CSS for components not visible on initial load (sliders, Instagram feed) blocks rendering.

Solution: PerfMatters - CSS - Unused CSS or use "Remove Unused CSS" to defer these styles.

Low Add font-display: swap to FontAwesome
-40ms

Problem: Icon fonts don't have font-display: swap, causing briefly invisible text.

Solution: Configure in FontAwesome Kit settings or add custom CSS.

Low Remove unused CSS/JS (-663KB)
-663KB

Unused JavaScript (469 KB):

  • swiper-bundle.min.js - 42 KB. Solution: Exclude via PerfMatters - Script Manager if no sliders on page.
  • scripts.min.js - 43 KB (Divi core, difficult to reduce).
  • sticky-elements.js - 27 KB. Solution: Disable if no sticky headers used.
  • recaptcha - 357 KB. Reduced by deferring reCAPTCHA.

Unused CSS (194 KB):

  • style-static.min.css - 84 KB. Solution: Divi - Theme Options - Performance - Dynamic CSS.
  • FontAwesome - 49 KB. Solution: Use icon subset.
  • reCAPTCHA styles - 41 KB. Removed by deferring reCAPTCHA.