Speed Audit Report

What Causes Chronic Venous Insufficiency?

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

Analysis: April 20, 2026 - Lighthouse 13.0

Executive Summary

Main issue: The page takes 6.6 seconds to display its main content on mobile devices (should be under 2.5s). Desktop loads fine.

Root cause: Google reCAPTCHA (loaded by Divi Contact Form) blocks the browser for over 2 seconds, and there's a conflict with PerfMatters.

Impact: Mobile users experience slow page loads, affecting user experience and SEO (Core Web Vitals).

Mobile
Desktop
54
Performance Score
Needs Improvement

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

LCP - Main Content
6.6s
Target: 2.5s or less
View details
TBT - Blocking Time
570ms
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.6 seconds (target: <2.5s)
Why is it slow? Loading waterfall analysis:
  1. 0 - 1.2s: Browser downloads HTML, starts parsing
  2. 1.2 - 2.8s: Render-blocking CSS (style-static.min.css) delays first paint
  3. 2.8 - 4.1s: JavaScript execution blocks main thread (reCAPTCHA: 600ms+)
  4. 4.1 - 5.2s: PerfMatters lazy loading HOLDS the image - waits for scroll/interaction trigger that never comes because image is already in viewport
  5. 5.2 - 6.6s: Image finally loads after IntersectionObserver fires late
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: 570ms (target: <200ms)
Exceeds threshold by: 370ms (2.85x the acceptable limit)
Main Thread Breakdown (from DevTools Performance tab):
Script Blocking Time Source
recaptcha__en.js 312ms Google reCAPTCHA v3
scripts.min.js 98ms Divi Theme core
swiper-bundle.min.js 67ms Slider library (unused on page)
Other scripts 93ms Various
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

The analysis was validated directly in the browser console to confirm the issues and their exact origin. Click each image to enlarge.

Performance panel
Performance Panel Main thread blocked (yellow bars)
Summary
Breakdown by Origin 2,183ms of blocking scripts
reCAPTCHA stack
Stack Trace: reCAPTCHA Confirmed as main culprit
Incognito test
Incognito Test Issues persist without extensions
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.