Searchflex ·Core Web Vitals · April 2026

Core Web Vitals & site speed

https://searchflex.com · 100 URLs · mobile + desktop · April 2026
52 / 100
Cross-referenced with tracking audit. Third-party vendor attribution, consent-gating status, and PII leakage flags are included below.

Executive summary

Searchflex's mobile Core Web Vitals are failing at a speed score of 52, creating direct Google ranking risk across all 100 audited URLs; the single biggest revenue-adjacent issue is that GTM, Facebook Pixel, and Hotjar are collectively blocking the main thread for over 57 seconds in aggregate on mobile alone, meaning visitors — especially those on paid campaigns driven by that very Facebook Pixel — are waiting several seconds before they can interact with the page. Fixing just the tag-loading strategy is projected to lift desktop scores by up to 7 points and cut Total Blocking Time nearly in half, with mobile gains expected to be at least equivalent.

At a glance

33 critical326 high435 medium
100
URLs audited
80
Finding types
(794 occurrences)
19
Distinct vendors
+7
Max projected lift

Top 3 fixes

The highest-impact actions from the full recommendation list. Start here — these three alone are projected to move the needle most.

1
HIGH

PRIORITY 1 — Consent-gate GTM-loaded tags (GTM, Facebook Pixel, Hotjar)

In GTM, open each tag and change its firing trigger from 'All Pages' or 'DOM Ready' to the built-in 'Consent Initialization' trigger; pair it with a condition that checks analytics_storage=granted (for GA/Hotjar) or ad_storage=granted (for Facebook). This alon…

2
HIGH

PRIORITY 2 — Audit and prune GTM tag bloat

Open GTM Preview mode, load your highest-traffic pages, and export the list of tags firing on page load. Any tag firing on every page that could instead fire on a specific URL path, element click, or custom event should be re-scoped immediately. The goal is to…

3
HIGH

PRIORITY 3 — Lazy-load Calendly on interaction

Calendly is costing 1,314ms of blocking time on mobile. If it is injected via GTM, add an 'Element Visibility' trigger scoped to the booking section rather than firing on page load. If it is hard-coded in the template, replace the inline script tag with a dyna…

Core Web Vitals distribution

How the sample splits across Google's Good / Needs Improvement / Poor bands for each metric. A passing site needs ≥75% of URLs in Good for every metric. Hover each segment for exact counts.

mobile

LCP ≤2.5s good · >4s poor
10%
90%
0 good · 10 NI · 88 poor
INP ≤200ms good · >500ms poor (lab: TBT)
24%
76%
0 good · 24 NI · 74 poor
CLS ≤0.1 good · >0.25 poor
39%
43%
18%
38 good · 42 NI · 18 poor

desktop

LCP ≤2.5s good · >4s poor
97%
3%
93 good · 3 NI · 0 poor
INP ≤200ms good · >500ms poor (lab: TBT)
4%
27%
69%
4 good · 26 NI · 66 poor
CLS ≤0.1 good · >0.25 poor
81%
15%
4%
78 good · 14 NI · 4 poor

CrUX field trend — last 6 months

Real-user data from Google's Chrome User Experience Report. Each sparkline spans ~25 weekly periods ending now. Background bands show Good (green) / Needs Improvement (yellow) / Poor (red). A diverging field vs lab story is a signal — lab tests reveal the bad page-load path, but field data is what Google ranks on.

https://searchflex.com desktop
LCP 2268ms
▲ 18% worse · 12 weekly periods
INP 68ms
▲ 33% worse · 10 weekly periods
CLS 0.040
▲ 100% worse · 14 weekly periods

LCP anti-patterns

A correctly-tuned LCP element loads eagerly, has fetchpriority="high", and is discoverable in the initial HTML. Any of these missing will delay paint.

0
URLs with loading="lazy" on LCP
Fix: remove loading="lazy" on above-the-fold LCP element
142
URLs missing fetchpriority="high"
Fix: add fetchpriority="high" to LCP img / preload tag
0
LCP not discoverable in initial HTML
Fix: server-render the LCP element or add <link rel="preload">

Worst pages

Lowest-scoring URLs per strategy — prioritise these for manual investigation in addition to sitewide fixes.

mobile

#URLScoreLCP (lab)TBT (lab)CLSFlags
1 https://searchflex.com/pet-digital-marketing-services/seo/ 17 10229ms 4522ms 0.275
2 https://searchflex.com/tech-digital-marketing-services/google-ads/ 18 10002ms 3619ms 0.257
3 https://searchflex.com/ecommerce-seo/shopify/dubai/ 31 9173ms 905ms 0.263 no fp
4 https://searchflex.com/ecommerce-seo/shopify/melbourne/ 31 8894ms 941ms 0.26 no fp
5 https://searchflex.com/tech-digital-marketing-services/ecommerce/ 32 12976ms 2083ms 0.068
6 https://searchflex.com/ecommerce-seo/shopify/sydney/ 32 9153ms 2803ms no fp
7 https://searchflex.com/blog/local-seo-for-small-businesses/ 32 6400ms 886ms 0.262
8 https://searchflex.com/ecommerce-seo/melbourne/ 33 10004ms 965ms 0.2 no fp
9 https://searchflex.com/ecommerce-google-ads/manchester/ 33 9304ms 1814ms 0.105 no fp
10 https://searchflex.com/blog/shopify-seo-issues/ 33 6076ms 6270ms

desktop

#URLScoreLCP (lab)TBT (lab)CLSFlags
1 https://searchflex.com/food-drink-digital-marketing-services/seo/ 36 2973ms 5128ms 0.051 no fp
2 https://searchflex.com/tech-digital-marketing-services/ 39 2675ms 8705ms 0.023
3 https://searchflex.com/ecommerce-seo/melbourne/ 46 2107ms 678ms 0.249 no fp
4 https://searchflex.com/tech-digital-marketing-services/ecommerce/ 48 2301ms 4204ms 0.036
5 https://searchflex.com/blog/shopify-seo-issues/ 50 2615ms 703ms 0.119 no fp
6 https://searchflex.com/pet-digital-marketing-services/seo/ 50 1906ms 3097ms 0.079
7 https://searchflex.com/ecommerce-seo/shopify/sheffield/ 52 1959ms 2737ms 0.051 no fp
8 https://searchflex.com/contact/ 53 1281ms 5415ms 0.075 no fp
9 https://searchflex.com/skincare-digital-marketing-services/ecommerce/ 54 2137ms 577ms 0.166 no fp
10 https://searchflex.com/ecommerce-google-ads/manchester/ 54 2055ms 1300ms 0.056 no fp

Sitewide third-party impact

How each vendor compounds across every audited page. Fixing a script on 1% of pages nudges the score. Fixing a script on 90% of pages moves it.

VendorStrategyCoverage Mean blockingAggregate blocking Transfer totalConsent
Google Tag Manager
(gtm)
desktop
96/100 · 96%
238ms 22875ms 36308 KB before consent
Facebook
(meta_pixel)
desktop
96/100 · 96%
232ms 22319ms 22057 KB before consent
Hotjar desktop
96/100 · 96%
128ms 12280ms 6096 KB before consent
Cloudflare CDN desktop
96/100 · 96%
34ms 3275ms 2666 KB
Calendly desktop
3/100 · 3%
1030ms 3090ms 5097 KB
Google Maps desktop
4/100 · 4%
295ms 1178ms 1611 KB
Google CDN desktop
3/100 · 3%
360ms 1079ms 2302 KB
Stripe desktop
3/100 · 3%
166ms 499ms 803 KB
cdn-cookieyes.com
(cookieyes)
desktop
96/100 · 96%
1ms 131ms 2864 KB before consent
Optanon desktop
3/100 · 3%
44ms 131ms 628 KB
JSDelivr CDN desktop
96/100 · 96%
1ms 50ms 4745 KB
Google reCAPTCHA desktop
3/100 · 3%
10ms 30ms 92 KB
Google Fonts desktop
96/100 · 96%
0ms 0ms 6684 KB
joshbenson.co.uk desktop
14/100 · 14%
0ms 0ms 64 KB
Google Analytics
(ga4)
desktop
96/100 · 96%
0ms 0ms 84 KB before consent

Sitewide heavy files

Specific files that either render-block or ship large amounts of unused code on many pages at once. One-file fixes that propagate everywhere.

FileTypeStrategy CoverageWasted
https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js?ver=6.9.1 render blocking desktop 96/100 · 96% 31272ms aggregate
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js?ver=6.9.1 render blocking desktop 96/100 · 96% 28596ms aggregate
https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css?ver=1.0.0 render blocking desktop 96/100 · 96% 19409ms aggregate
https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300..900;1,300..900&display=swap render blocking desktop 96/100 · 96% 19313ms aggregate
0;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap render blocking desktop 96/100 · 96% 19313ms aggregate
https://searchflex.com/wp-content/plugins/wpforms/assets/css/frontend/modern/wpforms-full.min.css?ver=1.9.9.2 render blocking desktop 96/100 · 96% 15526ms aggregate
ps://searchflex.com/wp-content/plugins/wpforms/assets/pro/css/frontend/modern/wpforms-full.min.css?ver=1.9.9.2 render blocking desktop 96/100 · 96% 11679ms aggregate
https://searchflex.com/wp-content/themes/searchflexnew/js/main.js?ver=6.9.1 render blocking desktop 96/100 · 96% 11679ms aggregate
https://searchflex.com/wp-content/themes/searchflexnew/style.css?ver=1.0.0 render blocking desktop 96/100 · 96% 7832ms aggregate
https://assets.calendly.com/assets/booking/css/booking-a8fe825cd.css unused css desktop 3/100 · 3% 1347KB (95% unused)
https://searchflex.com/wp-content/plugins/wpforms/assets/css/frontend/modern/wpforms-full.min.css?ver=1.9.9.2 unused css desktop 96/100 · 96% 1244KB (92% unused)
https://searchflex.com/wp-content/themes/searchflexnew/style.css?ver=1.0.0 unused css desktop 96/100 · 96% 1135KB (82% unused)
https://www.gstatic.com/recaptcha/releases/gTpTIWhbKpxADzTzkcabhXN4/styles__ltr.css unused css desktop 3/100 · 3% 124KB (100% unused)
#onetrust-banner-sdk .onetrust-vendors-list-handler{cursor:pointer;color:#1f96db;font-size:inherit; … } … unused css desktop 3/100 · 3% 60KB (85% unused)
https://www.googletagmanager.com/gtag/js?id=GT-NFXG5CGP unused js desktop 96/100 · 96% 6248KB (37% unused)

What-if: projected score lift per fix

Directional estimates — each scenario assumes an 80% reduction in the named script's blocking contribution. Actual lift varies based on what Lighthouse then sees as the next bottleneck.

Defer or consent-gate Google Tag Manager (desktop)
+7
Today: 72 / 100 Projected: 79 / 100

Removing 80% of Google Tag Manager's 239ms blocking contribution drops TBT from 532ms to 340ms. Directional only — actual lift depends on which other scripts Lighthouse then sees as bottlenecks.

Defer or consent-gate Facebook (mobile)
+7
Today: 53 / 100 Projected: 60 / 100

Removing 80% of Facebook's 267ms blocking contribution drops TBT from 555ms to 340ms. Directional only — actual lift depends on which other scripts Lighthouse then sees as bottlenecks.

Defer or consent-gate Google Tag Manager (mobile)
+6
Today: 46 / 100 Projected: 52 / 100

Removing 80% of Google Tag Manager's 206ms blocking contribution drops TBT from 584ms to 418ms. Directional only — actual lift depends on which other scripts Lighthouse then sees as bottlenecks.

Defer or consent-gate Facebook (desktop)
+6
Today: 66 / 100 Projected: 72 / 100

Removing 80% of Facebook's 201ms blocking contribution drops TBT from 514ms to 352ms. Directional only — actual lift depends on which other scripts Lighthouse then sees as bottlenecks.

Defer or consent-gate Google Maps (mobile)
+4
Today: 50 / 100 Projected: 54 / 100

Removing 80% of Google Maps's 176ms blocking contribution drops TBT from 658ms to 517ms. Directional only — actual lift depends on which other scripts Lighthouse then sees as bottlenecks.

Defer or consent-gate Hotjar (mobile)
+4
Today: 48 / 100 Projected: 52 / 100

Removing 80% of Hotjar's 132ms blocking contribution drops TBT from 595ms to 489ms. Directional only — actual lift depends on which other scripts Lighthouse then sees as bottlenecks.

Template rollup

Median performance per template. Each template can be expanded to show the exact URLs audited — useful for tracing why a template is underperforming.

mobile

branded
48.5
4 URLs
LCP: 5068ms
INP: 615ms
CLS: 0.156
category
48.0
20 URLs
LCP: 8894ms
INP: 595ms
CLS: 0.103
checkout
49.0
1 URL
LCP: 6760ms
INP: 221ms
CLS: 0.287
content
47.0
15 URLs
LCP: 5630ms
INP: 684ms
CLS: 0.095
home
62.0
1 URL
LCP: 11935ms
INP: 263ms
CLS: 0.022
other
43.0
47 URLs
LCP: 9031ms
INP: 684ms
CLS: 0.105
product
39.0
12 URLs
LCP: 10952ms
INP: 1072ms
CLS: 0.022

desktop

branded
57.0
4 URLs
LCP: 2346ms
INP: 62ms
CLS: 0.04
category
64.0
20 URLs
LCP: 2346ms
INP: 62ms
CLS: 0.04
checkout
68.0
1 URL
LCP: 2346ms
INP: 62ms
CLS: 0.04
content
67.5
15 URLs
LCP: 2346ms
INP: 62ms
CLS: 0.04
home
65.0
1 URL
LCP: 2346ms
INP: 62ms
CLS: 0.04
other
62.0
47 URLs
LCP: 2346ms
INP: 62ms
CLS: 0.04
product
62.5
12 URLs
LCP: 2346ms
INP: 62ms
CLS: 0.04
Which URLs were audited? Expand to see the full sample by template.

home (1 URLs)

other (47 URLs)

Deep script inspection

Top scripts fetched directly and inspected for minification, compression, cache TTL, and stale library versions.

ScriptSizeMinified EncodingCache TTLVersionNotes
https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js?ver=6.9.1 42 KB yes gzip 7d healthy
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js?ver=6.9.1 30 KB yes gzip 355d healthy
https://searchflex.com/wp-content/themes/searchflexnew/js/main.js?ver=6.9.1 2 KB yes gzip 365d healthy
https://www.googletagmanager.com/gtag/js?id=GT-NFXG5CGP 174 KB yes gzip 0d Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
https://www.googletagmanager.com/gtm.js?id=GTM-NWFHGMWK 123 KB yes gzip 0d Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
142%2C87%2C79%2C71%2C117%2C106%2C43%2C143%2C0%2C82%2C137%2C140%2C153%2C38%2C108%2C13%2C168 123 KB yes gzip 0d Cache-Control max-age is only 1200s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
https://connect.facebook.net/en_US/fbevents.js 97 KB yes gzip 0d Cache-Control max-age is only 1200s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
https://assets.calendly.com/assets/booking/js/booking-2df27f82d.js 768 KB yes gzip 365d healthy
https://script.hotjar.com/modules.6a0f3932cb1341a35c18.js 71 KB yes gzip 365d healthy
https://www.googletagmanager.com/gtag/js?id=GT-NFXG5CGP&cx=c&gtm=4e64r1 173 KB yes gzip 0d Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
https://www.googletagmanager.com/gtag/js?id=G-MEEH4ZY34T&cx=c&gtm=4e64r1 173 KB yes gzip 0d Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
https://www.gstatic.com/recaptcha/releases/gTpTIWhbKpxADzTzkcabhXN4/recaptcha__en.js 362 KB yes gzip 365d healthy
https://js.stripe.com/v3 259 KB yes gzip 0d Cache-Control max-age is only 120s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
https://www.googletagmanager.com/gtag/js?id=GT-NFXG5CGP&cx=c&gtm=4e64s0h2 173 KB yes gzip 0d Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
https://www.googletagmanager.com/gtag/js?id=G-MEEH4ZY34T&cx=c&gtm=4e64s0h2 173 KB yes gzip 0d Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.

All recommendations

  1. PRIORITY 1 — Consent-gate GTM-loaded tags (GTM, Facebook Pixel, Hotjar): In GTM, open each tag and change its firing trigger from 'All Pages' or 'DOM Ready' to the built-in 'Consent Initialization' trigger; pair it with a condition that checks analytics_storage=granted (for GA/Hotjar) or ad_storage=granted (for Facebook). This alone targets ~57,600ms of mobile blocking time and is the highest-leverage single change available.
  2. PRIORITY 2 — Audit and prune GTM tag bloat: Open GTM Preview mode, load your highest-traffic pages, and export the list of tags firing on page load. Any tag firing on every page that could instead fire on a specific URL path, element click, or custom event should be re-scoped immediately. The goal is to reduce the number of synchronous execution contexts GTM spawns on initialisation — this is what drives the 1,283–1,687ms GTM-own-script blocking cost reported above.
  3. PRIORITY 3 — Lazy-load Calendly on interaction: Calendly is costing 1,314ms of blocking time on mobile. If it is injected via GTM, add an 'Element Visibility' trigger scoped to the booking section rather than firing on page load. If it is hard-coded in the template, replace the inline script tag with a dynamically injected script that fires only on the first click or scroll into the booking widget — use an IntersectionObserver with a rootMargin of '200px' to pre-load just before the user reaches it.
  4. PRIORITY 4 — Move the GTM container snippet to deferred initialisation: If GTM is hard-coded in the <head> (the Google-default placement), move the <script> tag to the bottom of <body> and add async defer attributes. Then initialise your consent SDK before the GTM dataLayer.push so consent state is available the moment GTM fires. This prevents GTM from being a parser-blocking resource during the critical rendering path.
  5. PRIORITY 5 — Investigate and scope the Cloudflare CDN blocking entries (~3,200ms mobile): The audit flagged Cloudflare-origin scripts adding ~3,200ms of aggregate blocking on mobile. Identify which specific Cloudflare Worker scripts or Rocket Loader assets these are (check the Network waterfall in Chrome DevTools filtered to 'cdnjs.cloudflare.com' or 'static.cloudflareinsights.com') and either defer them with async, remove unused ones, or migrate any self-hosted assets to direct CDN delivery without the Rocket Loader rewrite layer.
  6. PRIORITY 6 — Set a tag performance budget in GTM to prevent regression: After implementing fixes, create a GTM custom HTML tag that runs on 'All Pages' in a low-priority firing sequence and logs window.performance.getEntriesByType('resource') to the dataLayer. Alert via a Slack webhook or GA4 custom event if total third-party script transfer size exceeds 150KB — this creates an ongoing guardrail so future tag additions don't silently re-introduce the blocking pattern.

Findings

80 distinct finding types across 794 occurrences. Numeric variants of the same finding (e.g. "costs 867ms" vs "costs 698ms") are collapsed into one row with a range in the title.

Severity Finding Affected Recommendation
critical
third_party
desktop
Facebook costs 147–1691ms blocking + varies main-thread on desktop
Rank #1 by blocking time on this page. Facebook transfers 232 KB and keeps the main thread busy for 1691ms, delaying INP and TBT.
5 URLs
Gate Facebook behind an `ad_storage=granted` consent trigger in GTM. Consider server-side tagging via the Conversions API for accuracy without the client-side JS cost.
critical
third_party
mobile
Calendly costs 608–2241ms blocking + varies main-thread on mobile
Rank #1 by blocking time on this page. Calendly transfers 1700 KB and keeps the main thread busy for 2241ms, delaying INP and TBT.
4 URLs
Load Calendly with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
critical
third_party
desktop
Google Tag Manager costs 216–2863ms blocking + varies main-thread on desktop
Rank #1 by blocking time on this page. Google Tag Manager transfers 295 KB and keeps the main thread busy for 2863ms, delaying INP and TBT.
4 URLs
GTM's own weight usually means a lot of tags. Run GTM Preview and look for tags firing on every page that could be scoped to specific events or URLs.
critical
third_party
desktop
Calendly costs 958–1862ms blocking + varies main-thread on desktop
Rank #1 by blocking time on this page. Calendly transfers 1699 KB and keeps the main thread busy for 1862ms, delaying INP and TBT.
3 URLs
Load Calendly with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
critical
third_party
mobile
Google Tag Manager costs 120–2189ms blocking + varies main-thread on mobile
Rank #1 by blocking time on this page. Google Tag Manager transfers 642 KB and keeps the main thread busy for 2189ms, delaying INP and TBT.
3 URLs
GTM's own weight usually means a lot of tags. Run GTM Preview and look for tags firing on every page that could be scoped to specific events or URLs.
critical
third_party
mobile
Facebook costs 83–1997ms blocking + varies main-thread on mobile
Rank #1 by blocking time on this page. Facebook transfers 230 KB and keeps the main thread busy for 1997ms, delaying INP and TBT.
3 URLs
Gate Facebook behind an `ad_storage=granted` consent trigger in GTM. Consider server-side tagging via the Conversions API for accuracy without the client-side JS cost.
critical
third_party
mobile
Google Tag Manager — 23294ms aggregate blocking across the audit (mobile)
Google Tag Manager appears on 98/100 pages (98%). Mean blocking per page: 237ms. Total main-thread time: 43724ms. Transfer: 37248KB sitewide. Fires BEFORE consent on pages with a CMP — degrading exper…
sitewide Because Google Tag Manager is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
desktop
Google Tag Manager — 22874ms aggregate blocking across the audit (desktop)
Google Tag Manager appears on 96/100 pages (96%). Mean blocking per page: 238ms. Total main-thread time: 42924ms. Transfer: 36308KB sitewide. Fires BEFORE consent on pages with a CMP — degrading exper…
sitewide Because Google Tag Manager is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
desktop
Facebook — 22319ms aggregate blocking across the audit (desktop)
Facebook appears on 96/100 pages (96%). Mean blocking per page: 232ms. Total main-thread time: 41999ms. Transfer: 22057KB sitewide. Fires BEFORE consent on pages with a CMP — degrading experience even…
sitewide Because Facebook is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
mobile
Facebook — 22110ms aggregate blocking across the audit (mobile)
Facebook appears on 98/100 pages (98%). Mean blocking per page: 225ms. Total main-thread time: 41751ms. Transfer: 22519KB sitewide. Fires BEFORE consent on pages with a CMP — degrading experience even…
sitewide Because Facebook is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
desktop
Hotjar — 12279ms aggregate blocking across the audit (desktop)
Hotjar appears on 96/100 pages (96%). Mean blocking per page: 127ms. Total main-thread time: 25266ms. Transfer: 6096KB sitewide. Fires BEFORE consent on pages with a CMP — degrading experience even fo…
sitewide Because Hotjar is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
mobile
Hotjar — 12251ms aggregate blocking across the audit (mobile)
Hotjar appears on 98/100 pages (98%). Mean blocking per page: 125ms. Total main-thread time: 25318ms. Transfer: 6223KB sitewide. Fires BEFORE consent on pages with a CMP — degrading experience even fo…
sitewide Because Hotjar is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
desktop
Cloudflare CDN — 3274ms aggregate blocking across the audit (desktop)
Cloudflare CDN appears on 96/100 pages (96%). Mean blocking per page: 34ms. Total main-thread time: 10232ms. Transfer: 2666KB sitewide.
sitewide Because Cloudflare CDN is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
mobile
Cloudflare CDN — 3188ms aggregate blocking across the audit (mobile)
Cloudflare CDN appears on 98/100 pages (98%). Mean blocking per page: 32ms. Total main-thread time: 10198ms. Transfer: 2722KB sitewide.
sitewide Because Cloudflare CDN is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
desktop
cdn-cookieyes.com — 130ms aggregate blocking across the audit (desktop)
cdn-cookieyes.com appears on 96/100 pages (96%). Mean blocking per page: 1ms. Total main-thread time: 2190ms. Transfer: 2864KB sitewide. Fires BEFORE consent on pages with a CMP — degrading experience…
sitewide Because cdn-cookieyes.com is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
mobile
cdn-cookieyes.com — 105ms aggregate blocking across the audit (mobile)
cdn-cookieyes.com appears on 98/100 pages (98%). Mean blocking per page: 1ms. Total main-thread time: 2068ms. Transfer: 2924KB sitewide. Fires BEFORE consent on pages with a CMP — degrading experience…
sitewide Because cdn-cookieyes.com is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
critical
third_party
desktop
Hotjar costs 99–215ms blocking + varies main-thread on desktop
Rank #3 by blocking time on this page. Hotjar transfers 64 KB and keeps the main thread busy for 215ms, delaying INP and TBT. It fires BEFORE consent according to the tracking audit — so it's degradin…
https://searchflex.com/ Move the Hotjar snippet to load via GTM with an `analytics_storage=granted` consent trigger, and set it to load on `Window Loaded` or `Scroll Depth > 25%` instead of on page-ready.
high
render_blocking
desktopmobile
9 render-blocking resources delay FCP by 1088–5364ms
The top offenders: /ajax/libs/jquery/3.7.1/jquery.min.js (362ms); /npm/swiper@11/swiper-bundle.min.js (319ms); /npm/swiper@11/swiper-bundle.min.css (202ms); /css2 (202ms); /css2 (202ms). Every ms save…
100 URLs
+50 more — see xlsx
Move non-critical CSS to preload + onload flip, or inline critical CSS for above-the-fold. For scripts, add `defer` (or `async` for independent scripts). If the file is first-party + required, consider HTTP/2 push or bundle it into the initial chunk.
high
lcp
mobile
LCP element takes 4136–21389ms to paint on mobile
LCP element snippet: `[NO_FETCHPRIORITY] <section class="hero-banner" style="background: url(&quot;https://searchflex.com/wp-content/uploads/2025/01/weyne-y…&quot;);">`
66 URLs
+16 more — see xlsx
The LCP element is a text / hero block. Usually this is slow because the font hasn't downloaded yet, or a JS-rendered component paints late.
high
third_party
mobile
Google Tag Manager costs 252–990ms blocking + varies main-thread on mobile
Rank #1 by blocking time on this page. Google Tag Manager transfers 642 KB and keeps the main thread busy for 990ms, delaying INP and TBT.
29 URLs
GTM's own weight usually means a lot of tags. Run GTM Preview and look for tags firing on every page that could be scoped to specific events or URLs.
high
third_party
desktop
Google Tag Manager costs 252–1020ms blocking + varies main-thread on desktop
Rank #1 by blocking time on this page. Google Tag Manager transfers 295 KB and keeps the main thread busy for 1020ms, delaying INP and TBT.
24 URLs
GTM's own weight usually means a lot of tags. Run GTM Preview and look for tags firing on every page that could be scoped to specific events or URLs.
high
third_party
mobile
Facebook costs 250–966ms blocking + varies main-thread on mobile
Rank #1 by blocking time on this page. Facebook transfers 230 KB and keeps the main thread busy for 966ms, delaying INP and TBT.
23 URLs
Gate Facebook behind an `ad_storage=granted` consent trigger in GTM. Consider server-side tagging via the Conversions API for accuracy without the client-side JS cost.
high
third_party
desktop
Facebook costs 253–1016ms blocking + varies main-thread on desktop
Rank #1 by blocking time on this page. Facebook transfers 230 KB and keeps the main thread busy for 1016ms, delaying INP and TBT.
21 URLs
Gate Facebook behind an `ad_storage=granted` consent trigger in GTM. Consider server-side tagging via the Conversions API for accuracy without the client-side JS cost.
high
third_party
mobile
Hotjar costs 254–892ms blocking + varies main-thread on mobile
Rank #3 by blocking time on this page. Hotjar transfers 63 KB and keeps the main thread busy for 892ms, delaying INP and TBT.
7 URLs
Move the Hotjar snippet to load via GTM with an `analytics_storage=granted` consent trigger, and set it to load on `Window Loaded` or `Scroll Depth > 25%` instead of on page-ready.
high
third_party
desktop
Hotjar costs 357–804ms blocking + varies main-thread on desktop
Rank #2 by blocking time on this page. Hotjar transfers 63 KB and keeps the main thread busy for 804ms, delaying INP and TBT.
5 URLs
Move the Hotjar snippet to load via GTM with an `analytics_storage=granted` consent trigger, and set it to load on `Window Loaded` or `Scroll Depth > 25%` instead of on page-ready.
high
third_party
mobile
Google CDN costs 296–795ms blocking + varies main-thread on mobile
Rank #2 by blocking time on this page. Google CDN transfers 767 KB and keeps the main thread busy for 795ms, delaying INP and TBT.
3 URLs
Load Google CDN with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
high
third_party
desktop
Google CDN costs 335–676ms blocking + varies main-thread on desktop
Rank #2 by blocking time on this page. Google CDN transfers 767 KB and keeps the main thread busy for 676ms, delaying INP and TBT.
3 URLs
Load Google CDN with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
high
render_blocking
desktopmobile
https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js?ver=6.9.1 blocks render on 1–11% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js?ver=6.9.1 blocks render on 1–6.9% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css?ver=1.0.0 blocks render on 0–11% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
0;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap blocks render on 0–900% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
.googleapis.com/css2?family=Figtree:ital,wght@0,300..900;1,300..900&display=swap blocks render on 0–900% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
tent/plugins/wpforms/assets/css/frontend/modern/wpforms-full.min.css?ver=1.9.9.2 blocks render on 1.9–9.2% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
/plugins/wpforms/assets/pro/css/frontend/modern/wpforms-full.min.css?ver=1.9.9.2 blocks render on 1.9–9.2% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
https://searchflex.com/wp-content/themes/searchflexnew/js/main.js?ver=6.9.1 blocks render on 1–6.9% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
render_blocking
desktopmobile
https://searchflex.com/wp-content/themes/searchflexnew/style.css?ver=1.0.0 blocks render on 0–1% of pages — 96–98% aggregate wasted
×2 occurrences
Seen on 98/100 audited mobile pages.
sitewide This single file blocks render across most of the site. Defer it (add `defer`), preload it, or inline its critical portion. Biggest sitewide win per line-of-change you'll find.
high
third_party
desktop
Google Maps costs 274–1026ms blocking + varies main-thread on desktop
Rank #1 by blocking time on this page. Google Maps transfers 403 KB and keeps the main thread busy for 1026ms, delaying INP and TBT.
2 URLs
Load Google Maps with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
high
lcp
desktopmobile
LCP element takes 2615–2972ms to paint on desktop
LCP element snippet: `[NO_FETCHPRIORITY] <div class="full-width-image" style="background: url(&quot;https://searchflex.com/wp-content/uploads/2025/08/Shopify…&quot;);">`
2 URLs
The LCP element is a text / hero block. Usually this is slow because the font hasn't downloaded yet, or a JS-rendered component paints late.
high
unused_js
desktopmobile
https://www.googletagmanager.com/gtag.js/js?id=GT-NFXG5CGP: 5 unused JS shipped sitewide (6248–6400KB% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide 37% of this file is dead code on average. Tree-shake, code-split, or strip. Because it's on 96 pages, every KB saved compounds.
high
unused_js
desktopmobile
https://www.googletagmanager.com/gtm.js?id=GTM-NWFHGMWK: 5855–5975KB unused JS shipped sitewide (51%% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide 50% of this file is dead code on average. Tree-shake, code-split, or strip. Because it's on 96 pages, every KB saved compounds.
high
unused_js
desktopmobile
C0–153%2C2–1682C3452KB2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries: varies unused JS shipped sitewide (varies% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide 29% of this file is dead code on average. Tree-shake, code-split, or strip. Because it's on 96 pages, every KB saved compounds.
high
unused_js
desktopmobile
https://connect.facebook.net/en_US/fbevents.js: 3170–3234KB unused JS shipped sitewide (34%% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide 34% of this file is dead code on average. Tree-shake, code-split, or strip. Because it's on 96 pages, every KB saved compounds.
high
unused_js
desktopmobile
https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js?ver=6.9.1: 1–11 unused JS shipped sitewide (2669–2722KB% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide 64% of this file is dead code on average. Tree-shake, code-split, or strip. Because it's on 96 pages, every KB saved compounds.
high
unused_js
desktopmobile
https://script.Hotjar.com/modules.6a0f3932cb1341a35c18.js: 0–3932 unused JS shipped sitewide (2562–2618KB% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide 47% of this file is dead code on average. Tree-shake, code-split, or strip. Because it's on 96 pages, every KB saved compounds.
high
third_party
mobile
Calendly — 4054ms aggregate blocking across the audit (mobile)
Calendly appears on 4/100 pages (4%). Mean blocking per page: 1013ms. Total main-thread time: 6957ms. Transfer: 6797KB sitewide.
sitewide Because Calendly is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
high
third_party
desktop
Calendly — 3089ms aggregate blocking across the audit (desktop)
Calendly appears on 3/100 pages (3%). Mean blocking per page: 1029ms. Total main-thread time: 5299ms. Transfer: 5097KB sitewide.
sitewide Because Calendly is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
high
third_party
mobile
Stripe costs 377–679ms blocking + varies main-thread on mobile
Rank #3 by blocking time on this page. Stripe transfers 248 KB and keeps the main thread busy for 679ms, delaying INP and TBT.
https://searchflex.com/90-day-seo-offer/ Load Stripe with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
high
third_party
mobile
Cloudflare CDN costs 274–507ms blocking + varies main-thread on mobile
Rank #4 by blocking time on this page. Cloudflare CDN transfers 28 KB and keeps the main thread busy for 507ms, delaying INP and TBT.
https://searchflex.com/blog/shopify-seo-issues/ Load Cloudflare CDN with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
high
third_party
mobile
JSDelivr CDN — 70ms aggregate blocking across the audit (mobile)
JSDelivr CDN appears on 98/100 pages (98%). Mean blocking per page: 0ms. Total main-thread time: 2419ms. Transfer: 4845KB sitewide.
sitewide Because JSDelivr CDN is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
high
third_party
desktop
JSDelivr CDN — 50ms aggregate blocking across the audit (desktop)
JSDelivr CDN appears on 96/100 pages (96%). Mean blocking per page: 0ms. Total main-thread time: 2279ms. Transfer: 4745KB sitewide.
sitewide Because JSDelivr CDN is on most of the site, fixing it once yields a sitewide lift. Move it behind a consent trigger, defer until user interaction, or switch to server-side tagging if it supports it.
high
cwv_lab
mobile
LCP lab above threshold on mobile (98 URLs)
Google's Core Web Vitals threshold for LCP is ≤2.5s at the 75th percentile of real Chrome users. This page is at 11.94s (rated poor). Lab data — synthetic measurement, does not directly affect ranking…
98 URLs
+48 more — see xlsx
high
cwv_lab
mobile
INP lab above threshold on mobile (98 URLs)
Google's Core Web Vitals threshold for INP is ≤200ms at the 75th percentile of real Chrome users. This page is at 263ms (rated needs improvement). Lab data — synthetic measurement, does not directly a…
98 URLs
+48 more — see xlsx
high
unused_js
desktopmobile
49330KB unused JavaScript from www.googletagmanager.com across 96 URLs
Top files: /gtm.js (61KB / 50%); /gtag.js/js (57KB / 33%); /signals/config/2322181838224260 (36KB / 29%); /en_US/fbevents.js (33KB / 34%); /modules.6a0f3932cb1341a35c18.js (26KB / 47%). Every KB of JS co…
96 URLs
+46 more — see xlsx
Tree-shake or code-split these bundles. For third-party, check whether you can import subsets (e.g. lodash → lodash-es per-method). For first-party, consider dynamic imports on the routes that actually need them.
high
cwv_lab
mobile
CLS lab above threshold on mobile (60 URLs)
Google's Core Web Vitals threshold for CLS is ≤0.1 at the 75th percentile of real Chrome users. This page is at 0.32 (rated poor). Lab data — synthetic measurement, does not directly affect rankings b…
60 URLs
+10 more — see xlsx
high
unused_js
desktopmobile
9646KB unused JavaScript from assets.calendly.com across 4 URLs
Top files: /assets/booking/js/booking-2df27f82d.js (759KB / 68%); /v3 (188KB / 72%); /recaptcha/releases/gTpTIWhbKpxADzTzkcabhXN4/recaptcha__en.js (179KB / 49%); /recaptcha/releases/gTpTIWhbKpxADzTzkc…
4 URLs
Tree-shake or code-split these bundles. For third-party, check whether you can import subsets (e.g. lodash → lodash-es per-method). For first-party, consider dynamic imports on the routes that actually need them.
medium
third_party
mobile
Facebook costs 90–458ms blocking + varies main-thread on mobile
Rank #1 by blocking time on this page. Facebook transfers 230 KB and keeps the main thread busy for 458ms, delaying INP and TBT.
72 URLs
+22 more — see xlsx
Gate Facebook behind an `ad_storage=granted` consent trigger in GTM. Consider server-side tagging via the Conversions API for accuracy without the client-side JS cost.
medium
third_party
desktop
Facebook costs 84–460ms blocking + varies main-thread on desktop
Rank #2 by blocking time on this page. Facebook transfers 230 KB and keeps the main thread busy for 460ms, delaying INP and TBT.
69 URLs
+19 more — see xlsx
Gate Facebook behind an `ad_storage=granted` consent trigger in GTM. Consider server-side tagging via the Conversions API for accuracy without the client-side JS cost.
medium
third_party
desktop
Google Tag Manager costs 84–464ms blocking + varies main-thread on desktop
Rank #2 by blocking time on this page. Google Tag Manager transfers 295 KB and keeps the main thread busy for 464ms, delaying INP and TBT.
66 URLs
+16 more — see xlsx
GTM's own weight usually means a lot of tags. Run GTM Preview and look for tags firing on every page that could be scoped to specific events or URLs.
medium
third_party
desktop
Hotjar costs 81–452ms blocking + varies main-thread on desktop
Rank #3 by blocking time on this page. Hotjar transfers 63 KB and keeps the main thread busy for 452ms, delaying INP and TBT.
66 URLs
+16 more — see xlsx
Move the Hotjar snippet to load via GTM with an `analytics_storage=granted` consent trigger, and set it to load on `Window Loaded` or `Scroll Depth > 25%` instead of on page-ready.
medium
third_party
mobile
Google Tag Manager costs 89–458ms blocking + varies main-thread on mobile
Rank #1 by blocking time on this page. Google Tag Manager transfers 295 KB and keeps the main thread busy for 458ms, delaying INP and TBT.
65 URLs
+15 more — see xlsx
GTM's own weight usually means a lot of tags. Run GTM Preview and look for tags firing on every page that could be scoped to specific events or URLs.
medium
third_party
mobile
Hotjar costs 80–459ms blocking + varies main-thread on mobile
Rank #3 by blocking time on this page. Hotjar transfers 63 KB and keeps the main thread busy for 459ms, delaying INP and TBT.
63 URLs
+13 more — see xlsx
Move the Hotjar snippet to load via GTM with an `analytics_storage=granted` consent trigger, and set it to load on `Window Loaded` or `Scroll Depth > 25%` instead of on page-ready.
medium
third_party
desktop
Cloudflare CDN costs 101–350ms blocking + varies main-thread on desktop
Rank #4 by blocking time on this page. Cloudflare CDN transfers 28 KB and keeps the main thread busy for 350ms, delaying INP and TBT.
5 URLs
Load Cloudflare CDN with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
medium
third_party
mobile
Google Maps costs 89–421ms blocking + varies main-thread on mobile
Rank #3 by blocking time on this page. Google Maps transfers 401 KB and keeps the main thread busy for 421ms, delaying INP and TBT.
4 URLs
Load Google Maps with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
medium
third_party
mobile
Cloudflare CDN costs 88–283ms blocking + varies main-thread on mobile
Rank #4 by blocking time on this page. Cloudflare CDN transfers 28 KB and keeps the main thread busy for 283ms, delaying INP and TBT.
4 URLs
Load Cloudflare CDN with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
medium
third_party
desktop
Stripe costs 146–351ms blocking + varies main-thread on desktop
Rank #3 by blocking time on this page. Stripe transfers 280 KB and keeps the main thread busy for 351ms, delaying INP and TBT.
3 URLs
Load Stripe with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
medium
third_party
mobile
Stripe costs 155–325ms blocking + varies main-thread on mobile
Rank #5 by blocking time on this page. Stripe transfers 248 KB and keeps the main thread busy for 325ms, delaying INP and TBT.
2 URLs
Load Stripe with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
medium
unused_css
desktopmobile
tent/plugins/wpforms/assets/css/frontend/modern/wpforms-full.min.css?ver=1.9.9.2: 1.9–9.2 unused CSS sitewide (1243–1256KB% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide Most of this stylesheet isn't used on the pages that load it. Split by template, use per-route CSS, or inline the critical path.
medium
unused_css
desktopmobile
https://searchflex.com/wp-content/themes/searchflexnew/style.css?ver=1.0.0: 0–1 unused CSS sitewide (1077–1134KB% unused)
×2 occurrences
Seen on 96/100 audited desktop pages.
sitewide Most of this stylesheet isn't used on the pages that load it. Split by template, use per-route CSS, or inline the critical path.
medium
third_party
mobile
Google CDN costs 192–371ms blocking + varies main-thread on mobile
Rank #2 by blocking time on this page. Google CDN transfers 767 KB and keeps the main thread busy for 371ms, delaying INP and TBT.
https://searchflex.com/tech-digital-marketing-services/ecommerce/ Load Google CDN with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
medium
third_party
desktop
Google Maps costs 164–323ms blocking + varies main-thread on desktop
Rank #3 by blocking time on this page. Google Maps transfers 403 KB and keeps the main thread busy for 323ms, delaying INP and TBT.
https://searchflex.com/ecommerce-packages/checkout-os/ Load Google Maps with `async defer`, push it as late as safely possible, and if it's tag-manager-loaded, add a consent trigger. If it's not strictly needed for functionality, lazy-load on first interaction.
medium
cwv_lab
mobile
Mobile LCP runs 2–20.5ss–94s slower than desktop on varies URLs
A large mobile-vs-desktop LCP gap usually indicates mobile-specific issues: larger hero image being served on mobile, JS bundles not being split by device class, or slow 4G network simulation exposing…
94 URLs
+44 more — see xlsx
Audit the `<picture>` source served on mobile, check if the JS bundle has mobile-specific code paths gated behind expensive conditions, and verify the CDN's mobile edge is healthy.
medium
unused_js
Script health: https://www.googletagmanager.com/gtag.js/js?id=GT-NFXG5CGP
Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: https://www.googletagmanager.com/gtm.js?id=GTM-NWFHGMWK
Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: C0–153%2C2–1682Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries2Cvaries
Cache-Control max-age is only 1200s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: https://connect.facebook.net/en_US/fbevents.js
Cache-Control max-age is only 1200s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: https://www.googletagmanager.com/gtag.js/js?id=GT-NFXG5CGP&cx=c&gtm=4e64r1
Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: https://www.googletagmanager.com/gtag.js/js?id=G-MEEH4ZY34T&cx=c&gtm=4e64r1
Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: https://js.stripe.com/v3
Cache-Control max-age is only 120s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: https://www.googletagmanager.com/gtag.js/js?id=GT-NFXG5CGP&cx=c&gtm=4e64s0h2
Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.
medium
unused_js
Script health: https://www.googletagmanager.com/gtag.js/js?id=G-MEEH4ZY34T&cx=c&gtm=4e64s0h2
Cache-Control max-age is only 900s — users re-download on every visit. Aim for ≥1 year with a content hash in the filename.
sitewide Address the specific issues flagged: produce a minified build, enable compression, extend cache-TTL with a filename hash, and upgrade deprecated libraries.