WordPress — Core Web Vitals

Field data PhoneDesktopAll October 2026 edition · All devices field outcomes
62.8% of WordPress sites pass all three Core Web Vitals
  • #10 of 12 CMSs by overall pass rate
  • Add TTFB and only 27.2% still pass
  • Runs on 31.1% of all sites measured (65,509 crawled WordPress sites, 62,901 with field data)

The distribution, not just the median

Each bar is the good / needs-work / poor split for WordPress. The marks where the whole fleet sits, so you can see who is ahead and who is behind.

LCP 2.7s p75
70.3% good ▼ fleet 82.5%
INP 104ms p75
98.1% good ▲ fleet 94.7%
CLS 0.03 p75
89.1% good ▲ fleet 87.8%
TTFB diagnostic 1.8s p75
31.3% good ▼ fleet 58.7%
FCP diagnostic 2.3s p75
59.2% good ▼ fleet 76.6%
Where WordPress loses ground: TTFB — 31.3% of sites pass, against 58.7% across the fleet. The takeaways below show which techniques move that number.
Metric & Architecture Takeaways

What moves Core Web Vitals on WordPress

Field data findings across WordPress sites from our metric deep dives.

LCP image loading 21,330 sites
74% vs 69% good LCP (default vs lazy)

WordPress sites without loading="lazy" on the hero image pass LCP 5 percentage points more often than sites with lazy-loaded heroes.

WordPress 6.3+ omits loading="lazy" on the first three content images by default. Across WordPress, 80.9% of sites use default loading and 14.5% have loading="lazy" on the LCP image, with median LCP ranging from 1.8s to 2.0s (74% vs 69% good LCP).

Read the WordPress LCP loading breakdown →
LCP resource discovery 60,560 sites
73% vs 66% good LCP (HTML img vs CSS background)

WordPress sites with an HTML <img> hero pass LCP 7 percentage points more often than sites with CSS background heroes.

Across WordPress sites, 55.4% reference the hero image in initial HTML (73% good LCP, 1.9s median), 39.7% use section background-image styles (66% good LCP, 2.1s median), and sites with <link rel="preload"> pass at 77% good LCP.

Read the WordPress LCP discovery breakdown →
Font-display 63,032 sites
79% vs 66% good LCP (all swap vs mixed rules)

WordPress sites with all fonts on swap pass LCP 13 points more often than mixed-rule sites.

Across WordPress, 48.8% of @font-face rules use swap and 50% use auto or block. Sites with every font on swap record a 1.7s median LCP (79% good LCP) compared with 2.1s (66% good LCP) on mixed-rule sites.

Read the WordPress font-display breakdown →
HTML document protocol 63,757 sites
75% vs 69% good LCP (HTTP/3 vs HTTP/2)

20.9% of WordPress sites serve HTML over HTTP/3, passing LCP 6 points more often than those on HTTP/2.

Across WordPress origins, 20.9% serve main HTML over HTTP/3 (75% good LCP, 1.8s median), 71.8% use HTTP/2 (69% good LCP, 2.0s median), and 7.3% use HTTP/1.1.

Read the WordPress HTML protocol breakdown →
Main-thread yielding 63,753 sites
65.4% run scripts with no yielding API

65.4% of WordPress sites call no main-thread yielding API.

Across WordPress, 65.4% of sites run scripts without a yielding API, 32.1% call requestIdleCallback(), and 2.6% call scheduler.yield().

Read the WordPress yielding breakdown →
Speculation rules 63,755 sites
84.2% use WordPress 6.8 conservative prefetch

84.2% of WordPress sites emit conservative speculation rules (63% CWV pass vs 64% with none).

WordPress 6.8+ enables Speculative Loading in core with prefetch and conservative eagerness by default, configurable with the wp_speculation_rules_configuration filter. Across WordPress, 84.2% of sites emit conservative rules (63% passing all three Core Web Vitals) compared with 64% on sites with no inline rules.

Read the WordPress speculation rules breakdown →
LCP priority hints 60,560 sites
76% vs 69% good LCP (highprio vs none)

84.8% of WordPress hero elements carry no priority hint (76% good LCP with highprio vs 69% with none).

WordPress 6.3+ adds fetchpriority="high" to the first detected content image during server rendering. Across WordPress, 10.7% of LCP elements carry fetchpriority="high" (76% good LCP, 1.8s median) and 84.8% carry no priority hint (69% good LCP, 2.0s median).

Read the WordPress priority hints breakdown →
As the LCP element 60,560 sites
73% vs 67% good LCP (<img> vs background-image)

42.4% of WordPress sites paint LCP from a CSS background-image (73% good LCP on <img> vs 67%).

Across WordPress sites, 35.2% paint LCP from an HTML <img> element (73% good LCP, 1.8s median) and 42.4% paint LCP from a CSS background-image (67% good LCP, 2.0s median, 6 points apart).

Read the WordPress LCP element types breakdown →
LCP image hosting 48,366 sites
94.5% WordPress same-origin LCP images

94.5% of WordPress sites serve their LCP image from the same origin (70% good LCP).

Across WordPress sites, 94.5% serve the LCP image from the first-party document origin (70% good LCP) and 5.5% serve it from an external origin (69% good LCP).

Read the WordPress LCP origins breakdown →
Responsive LCP image markup 60,560 sites
75% vs 69% good LCP (srcset vs non-responsive)

79.1% of WordPress hero elements have no responsive srcset or <picture> (75% good LCP with srcset vs 69% without, 6 points apart).

WordPress core generates srcset attributes on standard <img> blocks with wp_calculate_image_srcset(). Across WordPress, 18.2% of LCP elements carry srcset (75% good LCP, 1.8s median) and 79.1% have no responsive markup (69% good LCP, 2.0s median).

Read the WordPress responsive LCP breakdown →
Speculation rules 63,755 sites
84.5% WordPress sites using prefetch

84.5% of WordPress sites emit document prefetch speculation rules (63% CWV pass rate).

WordPress 6.8+ enables Speculative Loading in core with a conservative prefetch posture by default. Across WordPress, 84.5% of sites with speculation rules use prefetch (63% passing all three Core Web Vitals) and 0.6% use prerender.

Read the WordPress speculation posture breakdown →
HTML compression 63,757 sites
78% vs 67% good LCP (Brotli vs gzip)

50.2% of WordPress sites compress HTML with gzip (67% good LCP vs 78% with Brotli, 11 points apart).

Across WordPress sites, 50.2% serve gzip-compressed HTML (67% good LCP, 2.0s median), 31.4% serve Brotli-compressed HTML (78% good LCP, 1.7s median), and 12.3% send uncompressed HTML (66% good LCP).

Read the WordPress HTML compression breakdown →
An HTML edge CDN 63,757 sites
86.1% WordPress sites serving HTML from origin

86.1% of WordPress sites serve main HTML directly from the origin server without a detected CDN proxy.

Across WordPress sites, 86.1% serve main HTML directly from the origin server (70% good LCP, 1.9s median) and 8.4% proxy main HTML through Cloudflare (72% good LCP).

Read the WordPress CDN usage breakdown →
As their CMS 63,757 sites
63% WordPress all-three CWV pass rate

WordPress is the largest CMS cohort in the dataset at 63% all-three Core Web Vitals pass rate.

Across 63,757 audited WordPress sites, 63% pass all three Core Web Vitals (LCP, INP, and CLS) simultaneously.

Open WordPress Explorer Hub →
CSS @import rules 63,757 sites
70% vs 66% good LCP (no @import vs @import)

2.9% of WordPress sites use CSS @import rules, passing LCP 4 points less often than @import-free sites.

WordPress recommends enqueueing parent and child theme stylesheets with wp_enqueue_style(). Across WordPress, 97.1% of sites have no CSS @import (70% good LCP, 1.9s median) and 2.9% contain @import rules (66% good LCP, 2.1s median).

Read the WordPress CSS @import breakdown →
Text compression coverage 63,757 sites
73% vs 65% good LCP (all compressed vs uncompressed leak)

32.9% of WordPress sites serve at least one uncompressed text response (65% vs 73% good LCP, 8 percentage points apart).

Across WordPress, 67.1% of sites compress every text resource (73% good LCP, 1.9s median) and 32.9% serve at least one uncompressed HTML, CSS, JS, JSON, or SVG response (65% good LCP, 2.1s median).

Read the WordPress uncompressed text breakdown →
ETag cache validation 63,757 sites
87.7% WordPress sites serving ETag headers

87.7% of WordPress sites emit ETag headers, while 12.3% omit them.

Across WordPress sites, 87.7% serve ETag headers on responses (70% good LCP, 1.9s median) and 12.3% serve responses without ETag headers (73% good LCP, 1.9s median).

Read the WordPress ETag breakdown →
Last-Modified cache validation 63,757 sites
98.8% WordPress sites with Last-Modified

98.8% of WordPress sites send Last-Modified headers on responses.

Across WordPress sites, 98.8% emit Last-Modified headers (70% good LCP, 1.9s median).

Read the Last-Modified cache validation study →
Image loading strategies 63,695 sites
93% / 18.6% eager below fold / lazy above fold

WordPress sites have eager below-the-fold images on 93% of sites and lazy above-the-fold images on 18.6%.

WordPress 6.3+ adds loading="lazy" to content images while omitting it on the first three images. Across 63,695 WordPress sites, 70% with eager above-the-fold images pass LCP compared with 66% when an above-the-fold image has loading="lazy".

Read the WordPress image loading breakdown →
Responsive image markup 63,430 sites
81% vs 7.4% srcset on <img> vs <picture>

WordPress generates srcset on 81% of sites, while 7.4% use <picture>.

WordPress core adds srcset and sizes to attachment images with wp_calculate_image_srcset(). Across WordPress, 80.9% of sites use srcset on <img> (69% good LCP) and 7.4% use <picture> (71% good LCP).

Read the WordPress responsive image breakdown →
Image dimension sizing 63,430 sites
92.2% size content images (89% good CLS)

WordPress sets width and height on 92.2% of sites, while 74.4% also have unsized images.

WordPress core adds width and height attributes to media library images with wp_img_tag_add_width_and_height_attr(). Across WordPress, 92.2% of sites include explicitly sized images (89% good CLS) and 74.4% include at least one unsized <img> (88% good CLS).

Read the WordPress image dimensions breakdown →
Image fetchpriority hints 63,430 sites
65.6% ship fetchpriority="high" (69% good LCP)

WordPress 6.3+ emits fetchpriority="high" on 65.6% of sites (69% good LCP).

WordPress 6.3+ adds fetchpriority="high" to the first large content image with wp_get_loading_optimization_attributes(). Across 63,430 WordPress sites, 65.6% include fetchpriority="high" (69% good LCP) compared with 70% on sites with default priority.

Read the WordPress fetchpriority breakdown →
Iframe loading 29,657 sites
19.2% lazy-load iframes (63% good LCP)

19.2% of iframe-using WordPress sites lazy-load iframes, while 89.4% use default iframe loading.

WordPress 5.7+ adds loading="lazy" to iframes with wp_iframe_tag_add_loading_attr(). Across iframe-using WordPress sites, 19.2% use loading="lazy" (63% good LCP) and 89.4% use default iframe loading (67% good LCP).

Read the WordPress iframe loading breakdown →
Iframe dimension sizing 29,657 sites
62.7% size embeds explicitly (86% good CLS)

62.7% of iframe-using WordPress sites set explicit iframe dimensions (86% good CLS).

Across iframe-using WordPress sites, 62.7% include explicit width and height attributes on iframes (86% good CLS) and 82.0% include unsized iframes (85% good CLS).

Read the WordPress iframe dimensions breakdown →
CSS rendering hints 51,752 sites
85% / 37% will-change / content-visibility

WordPress sites using CSS hints include will-change on 84.8% and content-visibility on 37.3%.

Across 51,752 WordPress sites using CSS hints, 84.8% use will-change, 67.4% use aspect-ratio, and 37.3% use content-visibility (98% good INP).

Read the WordPress CSS hints breakdown →
Layout shift causes 45,228 sites
87% vs 51% good CLS (font swap vs embed growth)

On WordPress sites with lab layout shifts, embed_grow sites pass field CLS at 51% vs 87% on font_text sites.

Across 45,228 WordPress sites with lab layout shifts, 78.5% record element box growth (85% good field CLS), 24.1% record web font reflow (87% good CLS), and 0.7% record embed_grow (51% good CLS).

Read the WordPress CLS attribution breakdown →
Layout shift direction 45,207 sites
86% vs 84% good CLS (lateral vs downward shifts)

WordPress sites with downward layout shifts (49.7%) pass field CLS at 84% vs 86% for lateral shifts.

Across 45,207 shifting WordPress sites, 83.2% record horizontal shifts (86% good field CLS) and 49.7% record downward vertical shifts (84% good CLS).

Read the WordPress shift direction breakdown →
Subresource network protocols 63,757 sites
97% / 78% / 62% H2 / H3 / HTTP/1.1 subresources

WordPress sites fetch subresources over HTTP/2 on 96.9%, HTTP/3 on 78.2%, and HTTP/1.1 on 62.1%.

Across 63,757 WordPress sites, 96.9% fetch subresources over HTTP/2 (70% good LCP), 78.2% over HTTP/3, and 62.1% include at least one HTTP/1.1 request (67% good LCP).

Read the WordPress network protocol breakdown →
HTTP cache TTL tiers 63,757 sites
80.2% vs 15.9% long TTL vs Cache-Control: immutable

15.9% of WordPress sites serve Cache-Control: immutable assets, while 80.2% use long TTLs.

WordPress core appends a ?ver= query string to enqueued scripts and styles with wp_enqueue_script(). Across WordPress, 80.2% of sites serve long-TTL static files and 15.9% emit Cache-Control: immutable.

Read the WordPress cache strategy breakdown →
Analytics providers 38,846 sites
94.4% / 77.0% GA4 / legacy UA tag presence

WordPress sites with analytics run GA4 on 94.4% and Universal Analytics tags on 77.0%.

Across 38,846 analytics-using WordPress sites, 94.4% load Google Analytics 4 (98% good INP), 77.0% include Universal Analytics script references, and 8.0% run Matomo (98% good INP).

Read the WordPress analytics breakdown →
Ad networks 5,161 sites
51% vs 49% all 3 CWV pass (AdSense vs Taboola)

Ad-supported WordPress sites pass all three CWV at 51% with AdSense (94.0%) and 49% with Taboola.

Across 5,161 ad-supported WordPress sites, 94.0% run Google AdSense (51% passing all three CWV), 15.8% run Google Publisher Tag (51%), and 5.3% run Prebid.js (53%), compared with 63% across all ad-using WordPress sites.

Read the WordPress ad network breakdown →
Tag managers 35,141 sites
93.9% / 7.3% GTM / Matomo Tag Manager

WordPress sites with a tag manager use GTM on 93.9% (98% good INP) and Matomo on 7.3%.

Across 35,141 tag-manager-using WordPress sites, 93.9% load Google Tag Manager (98% good INP) and 7.3% load Matomo Tag Manager (98% good INP), compared with 98% across the cohort.

Read the WordPress tag manager breakdown →
Consent management platforms 22,802 sites
63% vs 58% all 3 CWV pass (Borlabs vs Complianz)

On WordPress, Borlabs Cookie (21.2%) passes all three CWV at 63% vs 58% for Complianz (37.0%).

Across 22,802 WordPress sites with a consent platform, 37.0% use Complianz (58% passing all three CWV), 21.6% use Quantcast Choice (59%), 21.2% use Borlabs Cookie (63%), and 16.9% use CookieYes (59%).

Read the WordPress consent platform breakdown →
Performance optimization plugins 14,939 sites
74% / 68% all 3 CWV pass (LiteSpeed / WP Rocket)

On WordPress, LiteSpeed Cache (74%) and WP Rocket (68%) pass all three CWV more often than Autoptimize (61%).

Across 14,939 WordPress sites with a detected optimization plugin, 27.5% use LiteSpeed Cache (74% passing all three CWV), 28.9% use WP Rocket (68%), 24.8% use Autoptimize (61%), and 13.5% use WP Fastest Cache (59%).

Read the WordPress optimization plugin breakdown →
Third-party technology categories 63,757 sites
60.9% / 58.8% analytics / external font services

WordPress sites load external analytics on 60.9% and third-party font services on 58.8% (60% CWV pass).

Across 63,757 WordPress sites, 96.5% load a JS library, 60.9% load analytics (60% passing all three CWV), 58.8% load external font services (60%), and 57.7% use a CDN (60%).

Read the WordPress third-party categories breakdown →
DOM element count 63,757 sites
99% vs 96% good INP (400-799 vs 1,500+ nodes)

WordPress pages with 1,500+ DOM elements (15.9%) pass field INP at 96% vs 99% at 400 to 799 nodes.

Across 63,757 WordPress sites, 37.3% have between 400 and 799 DOM nodes (99% good INP, 81ms median) and 15.9% exceed 1,500 nodes (96% good INP, 99ms median).

Read the WordPress DOM element count breakdown →
Maximum DOM depth 63,757 sites
42.1% / 3.9% 21-31 levels / 32+ levels deep

WordPress sites with 32+ DOM levels (3.9%) pass field INP at 97% vs 98% at 15 to 20 levels.

Across 63,757 WordPress sites, 39.2% have a maximum DOM depth of 15 to 20 levels (98% good INP), 42.1% have 21 to 31 levels (98% good INP), and 3.9% have 32+ levels (97% good INP).

Read the WordPress DOM depth breakdown →
Initial HTML document size 63,757 sites
83% vs 59% good LCP (<14 KB vs >75 KB HTML)

WordPress pages over 75 KB HTML (10.9%) pass LCP at 59% vs 83% under 14 KB.

Across 63,757 WordPress sites, 11.8% ship HTML under 14 KB (83% good LCP, 1.6s median), 39.6% ship 14 to 30 KB (75% good LCP), 37.8% ship 30 to 75 KB (65% good LCP), and 10.9% exceed 75 KB (59% good LCP).

Read the WordPress HTML size breakdown →
Preloaded font count 63,757 sites
88.3% / 6.6% 0 preloads / 1-2 preloads on WordPress

88.3% of WordPress sites preload zero fonts (71% good LCP), while 6.6% preload 1 to 2 fonts.

Across 63,757 WordPress sites, 88.3% emit no font preload links (71% good LCP), 6.6% preload 1 to 2 fonts (68% good LCP), and 5% preload 3 or more font files.

Read the WordPress font preloading breakdown →
Iframe count per page 63,757 sites
92% vs 80% good CLS (0 iframes vs 4+ iframes)

WordPress pages embedding 4+ iframes (9.1%) pass field CLS at 80% vs 92% with 0 iframes.

Across 63,757 WordPress sites, 53.5% embed 0 iframes (92% good CLS), 16.2% embed 1 iframe (87%), 21.2% embed 2 to 3 (87%), and 9.1% embed 4+ iframes (80% good CLS).

Read the WordPress iframe count breakdown →
Lab Total Blocking Time (TBT) 63,757 sites
98% vs 97% good INP (1-200ms vs >600ms TBT)

17.1% of WordPress sites exceed 600ms lab TBT (97% good field INP vs 98% at 1 to 200ms TBT).

Across 63,757 WordPress sites, 29.9% record 0ms lab TBT (98% good INP), 36.9% sit at 1 to 200ms TBT (98% good INP), and 17.1% exceed 600ms TBT (97% good INP, 94ms median).

Read the WordPress Total Blocking Time breakdown →
CLS shift concentration 45,228 sites
89% vs 82% good CLS (single shift vs multi-shift)

WordPress pages with multi-shift lab CLS (18.2%) pass field CLS at 82% vs 89% for a single shift.

Across 45,228 WordPress sites with non-zero lab CLS, 57.8% have 95%+ of their CLS in a single shift (89% good field CLS), 24.0% sit at 65% to 94% (84%), and 18.2% have multiple shifts (82% good CLS).

Read the WordPress CLS concentration breakdown →
Layout shift count 63,753 sites
94% vs 79% good CLS (0 shifts vs 6+ shifts)

WordPress pages with 6+ lab layout shifts (14.8%) pass field CLS at 79% vs 94% with 0 shifts (15 points apart).

Across 63,753 WordPress sites, 25.8% record 0 lab shifts (94% good CLS), 43.9% record 1 to 2 shifts (92%), 15.5% record 3 to 5 shifts (82%), and 14.8% record 6+ shifts (79% good CLS).

Read the WordPress layout shift count breakdown →
Largest single layout shift score 47,309 sites
95% vs 68% good CLS (<0.01 vs >0.25 largest shift)

Shifting WordPress sites with a largest shift over 0.25 (12.5%) pass field CLS at 68% vs 95% under 0.01 (27 points apart).

Across 47,309 WordPress sites with non-zero lab CLS, 37.8% have a largest shift under 0.01 (95% good CLS), 35.3% sit at 0.01 to 0.10 (91%), 14.3% sit at 0.10 to 0.25 (76%), and 12.5% exceed 0.25 (68% good CLS).

Read the WordPress largest shift breakdown →
Distinct network domain count 63,757 sites
72% vs 52% all 3 CWV pass (1-3 vs 15+ domains)

WordPress sites connecting to 15+ domains (10.5%) pass all three CWV at 52% vs 72% at 1 to 3 domains (20 points apart).

Across 63,757 WordPress sites, 21.9% connect to 1 to 3 domains (72% passing all three CWV), 35.3% use 4 to 7 domains (65%), 32.3% use 8 to 14 domains (59%), and 10.5% connect to 15+ domains (52%).

Read the WordPress network domain count breakdown →
Third-party request share 63,757 sites
99% vs 96% good INP (<10% vs >50% 3P requests)

51.2% of WordPress sites have under 10% third-party requests (99% good INP vs 96% over 50%).

Across 63,757 WordPress sites, 51.2% have under 10% external requests (99% good INP), 33.6% sit at 10% to 25% (98%), 12.2% sit at 25% to 50% (97%), and 3.1% exceed 50% (96%).

Read the WordPress third-party request share breakdown →
Cacheable resource share 63,757 sites
72% vs 66% good LCP (80%+ vs <20% cacheable)

35.9% of WordPress sites mark under 20% of resources cacheable (66% good LCP vs 72% at 80%+).

Across 63,757 WordPress sites, 38.7% mark 80%+ of subresources as cacheable (72% good LCP), 17.3% cache 50% to 79% (75% good LCP), and 35.9% cache under 20% (66% good LCP).

Read the WordPress cacheable resource breakdown →
Third-party provider count 63,757 sites
71% vs 54% all 3 CWV pass (0-1 vs 9+ providers)

WordPress sites with 9+ third-party providers (12.5%) pass all three CWV at 54% vs 71% with 0 to 1 providers.

Across 63,757 WordPress sites, 24.4% load 0 to 1 external providers (71% passing all three CWV), 28.3% load 2 to 4 (65%), 34.8% load 5 to 8 (60%), and 12.5% load 9+ providers (54%).

Read the WordPress third-party provider count breakdown →
Page image format mix 63,693 sites
86.7% / 39.0% PNG / WebP usage across WordPress pages

86.7% of WordPress sites serve PNG images, 85.8% serve JPEG, and 39.0% serve WebP.

WordPress 6.5 added native AVIF upload support alongside existing WebP, JPEG, and PNG support. Across 63,693 WordPress sites, 86.7% include PNG files (69% good LCP), 85.8% include JPEGs (70% good LCP), and 39.0% include WebP (69% good LCP).

Read the WordPress image format breakdown →
Image hosting origin 63,693 sites
70% vs 68% good LCP (same-origin vs cross-origin)

98.4% of WordPress sites serve same-origin images (70% good LCP), while 70.0% also load cross-origin images (68%).

Across 63,693 WordPress sites, 98.4% serve images from their own domain (70% good LCP, 1.9s median), 70.0% load cross-origin images (68% good LCP), and 20.7% embed inline base64 data: URIs (68% good LCP).

Read the WordPress image source breakdown →
Script loading strategy 63,744 sites
89.2% WordPress sites with render-blocking scripts

89.2% of WordPress sites load render-blocking synchronous scripts (69% good LCP).

WordPress 6.3+ supports registering scripts with defer and async strategies in wp_register_script() and wp_enqueue_script(). Across WordPress, 89.2% of sites execute render-blocking scripts (69% good LCP, 2.0s median) and 14.1% use ES modules (71% good LCP).

Read the WordPress script loading breakdown →
Script origin (first-party vs third-party) 63,742 sites
100.0% / 77.6% first-party / third-party scripts on WordPress

77.6% of WordPress sites execute third-party scripts (98% good INP vs 98% on first-party).

Across 63,742 WordPress sites, 100.0% execute first-party scripts (98% good INP, 86ms median) and 77.6% also load cross-origin third-party scripts (98% good INP, 87ms median).

Read the WordPress script origin breakdown →
Script initiator type 63,742 sites
98% vs 97% good INP (parser-initiated vs other initiators)

87.1% of WordPress sites load script-injected scripts, while 10.4% with other initiators pass INP at 97%.

Across 63,742 WordPress sites, 98.7% load scripts from the HTML parser (98% good INP, 86ms median), 87.1% inject scripts from other scripts (98% good INP), and 10.4% use other initiators (97% good INP, 88ms median).

Read the WordPress script initiator breakdown →
Stylesheet loading and placement 63,753 sites
70% vs 62% good LCP (<head> CSS vs <body> CSS)

35.7% of WordPress sites place <link rel="stylesheet"> tags inside <body> (62% vs 70% good LCP, 8 points apart).

WordPress 5.8+ provides the should_load_separate_core_block_assets filter to enqueue styles only for used blocks in <head>. Across WordPress, 98.9% of sites load blocking <head> stylesheets (70% good LCP, 1.9s median) and 35.7% include <link rel="stylesheet"> tags inside <body> (62% good LCP, 2.2s median).

Read the WordPress stylesheet loading breakdown →
Stylesheet origin (first-party vs third-party) 63,751 sites
70% vs 68% good LCP (first-party vs third-party CSS)

59.7% of WordPress sites load third-party CSS (68% good LCP vs 70% on first-party CSS).

Across 63,751 WordPress sites, 100.0% load first-party stylesheets (70% good LCP, 1.9s median) and 59.7% load external third-party stylesheets (68% good LCP, 2.0s median).

Read the WordPress stylesheet origin breakdown →
Stylesheet initiator type 63,751 sites
70% vs 66% good LCP (parser CSS vs script-injected CSS)

40.1% of WordPress sites inject stylesheets from JavaScript (66% vs 70% good LCP, 4 points apart).

Across 63,751 WordPress sites, 97.4% load CSS from the HTML parser (70% good LCP, 1.9s median) and 40.1% inject stylesheets from JavaScript (66% good LCP, 2.0s median).

Read the WordPress stylesheet initiator breakdown →
Web font format 61,950 sites
69% vs 65% good LCP (WOFF2 vs uncompressed TTF)

36.6% of WordPress sites download WOFF and 18.3% download TTF (65% good LCP vs 69% for WOFF2).

Across 61,950 font-using WordPress sites, 94.7% serve WOFF2 (69% good LCP), 36.6% download WOFF (67% good LCP), and 18.3% download TrueType TTF files (65% good LCP, 2.1s median).

Read the WordPress font format breakdown →
Video and audio media source 7,748 sites
87.1% / 14.6% self-hosted / external CDN video on WordPress

87.1% of media-using WordPress sites stream video from their own origin (65% good LCP, 2.1s median).

Across 7,748 WordPress sites with <video> or <audio> elements, 87.1% serve media files from their own origin (65% good LCP) and 14.6% serve media from an external CDN (64% good LCP).

Read the WordPress media source breakdown →
Main-thread scheduling API usage 63,628 sites
77.2% / 75.1% requestAnimationFrame / setInterval on WordPress

75.1% of WordPress sites run recurring setInterval() timers, while 2.6% call scheduler.yield().

Across 63,628 WordPress sites, 77.2% call requestAnimationFrame() (98% good INP), 75.1% call setInterval() (98% good INP), and 2.6% call scheduler.yield().

Read the WordPress task scheduling breakdown →
Long Animation Frame (LoAF) script invoker type 34,218 sites
40.7% / 36.1% timer/rAF callbacks / event listeners on WordPress

On WordPress sites with Long Animation Frames, 40.7% record timer/rAF callbacks and 36.1% record event listeners.

Across 34,218 WordPress sites recording LoAF entries, 40.7% record long frames in setTimeout/requestAnimationFrame callbacks (98% good INP), 38.6% during classic <script> evaluation (98%), and 36.1% in DOM event listeners (98%).

Read the WordPress LoAF invoker breakdown →
Network resource type mix 63,757 sites
100.0% / 97.2% scripts / web fonts across WordPress pages

WordPress sites load scripts on 100.0%, images on 99.9%, CSS on 99.2%, and web fonts on 97.2%.

Across 63,757 WordPress sites, 100.0% load external JavaScript, 99.9% load images, 99.2% load CSS stylesheets, and 97.2% download web fonts (70% good LCP, 1.9s median).

Read the WordPress network resource type breakdown →
Subresource HTTP compression 63,757 sites
91.4% / 72.3% Gzip / Brotli subresources on WordPress

91.4% of WordPress sites serve Gzip subresources and 72.3% serve Brotli (70% good LCP vs 69% Gzip).

Across 63,757 WordPress sites, 91.4% load Gzip-compressed text assets (69% good LCP, 1.9s median), 72.3% load Brotli-compressed assets (70% good LCP, 1.9s median), and 55.9% include Zstandard-compressed responses (67%).

Read the WordPress subresource compression breakdown →
Subresource CDN distribution 63,757 sites
42.1% / 19.2% Cloudflare / CloudFront subresources on WordPress

99.8% of WordPress sites fetch subresources from origin/custom hosts, 42.1% use Cloudflare, and 19.2% use CloudFront.

Across 63,757 WordPress sites, 99.8% serve subresources from origin or custom hosts (70% good LCP), 42.1% use Cloudflare (68% good LCP), 19.2% use CloudFront (65%), and 10.6% use Fastly (69%).

Read the WordPress subresource CDN breakdown →
Total image payload 63,757 sites
79% vs 64% good LCP (< 350 KB vs > 3 MB)

WordPress sites shipping over 3 MB of images pass LCP 15 points less often than sites under 350 KB.

Across WordPress sites, 35% transfer 1 to 3 MB of images and 31% exceed 3 MB. Sites under 350 KB pass LCP at 79% (1.6s median) compared with 64% (2.1s median) above 3 MB.

Explore WordPress image payload data →
Total JavaScript payload 63,732 sites
79ms vs 93ms median INP (< 250 KB vs > 1 MB)

24% of WordPress sites ship over 1 MB of JavaScript (93ms median INP vs 79ms under 250 KB).

Across WordPress sites, 24% transfer over 1 MB of scripts (93ms median INP, 97% pass rate) and 21% transfer under 250 KB (79ms median INP, 98% pass rate).

Explore WordPress script payload data →
Unused JavaScript bytes 63,744 sites
54% sites with > 850 KB unused JS

54% of WordPress sites ship over 850 KB of unused JavaScript.

Across WordPress sites, 31% load 850 KB to 1.5 MB of unused scripts and 23% exceed 1.5 MB, with median INP ranging from 78ms under 400 KB unused to 95ms above 1.5 MB.

Explore WordPress unused JS data →
Total CSS payload 63,239 sites
85% vs 58% good LCP (< 40 KB vs > 160 KB)

WordPress sites over 160 KB of CSS pass LCP 27 points less often than sites under 40 KB.

Across WordPress sites, 36% ship over 160 KB of stylesheets (58% LCP pass rate, 2.3s median) and 13% ship under 40 KB (85% pass rate, 1.5s median).

Explore WordPress CSS payload data →
Unused CSS bytes 63,730 sites
86% vs 60% good LCP (< 140 KB vs > 600 KB unused)

38% of WordPress sites load over 600 KB of unused CSS (60% vs 86% good LCP under 140 KB).

Across WordPress sites, 38% have over 600 KB of unused CSS (60% good LCP, 2.2s median) compared with 86% (1.5s median) under 140 KB.

Explore WordPress unused CSS data →
Web font file count 63,757 sites
77% vs 62% good LCP (1-3 fonts vs 7+ fonts)

32% of WordPress sites load 7+ font files, passing LCP 15 points less often than sites with 1 to 3 fonts.

Across WordPress sites, 32% request 7 or more web font files (62% good LCP, 2.2s median) compared with 77% (1.7s median) on sites with 1 to 3 fonts.

Explore WordPress font count data →
Audio and video payload 63,757 sites
71% vs 64% good LCP (no media vs with media)

WordPress pages with initial video/audio requests pass LCP 7 points less often than pages with no media.

Across WordPress sites, 88% transfer no audio or video during initial load (71% good LCP, 1.9s median) and 8% load initial media under 500 KB (64% good LCP, 2.1s median).

Explore WordPress media payload data →
Connection and preload hints 63,757 sites
35% sites with dns-prefetch only

35% of WordPress sites emit only dns-prefetch connection hints.

WordPress core prints resource hints in <head> with wp_resource_hints(), populating dns-prefetch from registered script and style hosts. Across WordPress, 35% of sites ship only dns-prefetch (69% LCP pass rate), 16% use preload (72%), and 24% emit no hints (75%).

Explore WordPress resource hints data →
Cookie count 63,757 sites
77% vs 63% good LCP (0 cookies vs 6+ cookies)

WordPress sites setting 6+ cookies pass LCP 14 points less often than sites with 0 cookies.

Across WordPress sites, 28% set zero cookies on initial load (77% good LCP, 1.7s median) and 35% set 6 or more cookies (63% good LCP, 2.1s median).

Explore WordPress cookie count data →
Synthetic paint milestones 63,610 sites
89% vs 48% good field LCP (< 300ms vs > 1.5s lab)

WordPress sites over 1,500ms lab LCP pass field LCP at 48% vs 89% under 300ms.

Across WordPress sites, 32% take over 1,500ms to paint in unthrottled lab conditions (48% field LCP pass rate, 2.6s median) compared with 89% (1.3s median) on the 16% painting under 300ms.

Explore WordPress lab paint data →
Document lifecycle milestones 63,753 sites
89% vs 48% good LCP (< 350ms vs > 1.5s DOMComplete)

WordPress sites taking over 1,500ms to reach DOMComplete pass LCP 41 points less often than sites under 350ms.

Across WordPress sites, 34% take over 1,500ms to reach DOMComplete in the lab (48% field LCP pass rate, 2.5s median) compared with 89% (1.3s median) on the 13% finishing under 350ms.

Explore WordPress document lifecycle data →
Main-thread CPU breakdown 63,757 sites
77ms vs 92ms median INP (< 150ms vs > 1.2s CPU)

35% of WordPress sites spend over 1.2 seconds in scripting CPU during load.

Across WordPress sites, 35% spend over 1,200ms in main-thread scripting during boot (92ms median field INP, 97% pass rate), compared with 77ms median INP on the 14% under 150ms.

Explore WordPress main-thread CPU data →
LCP sub-part breakdown 43,921 sites
84% sites where TTFB is largest LCP phase

Server TTFB is the largest LCP phase on 84% of WordPress sites (68% good LCP vs 81% when load delay leads).

Across WordPress sites, TTFB is the largest LCP sub-part on 84% (68% LCP pass rate, 2.0s median) and load delay is the largest sub-part on 9% (81% pass rate, 1.6s median).

Explore WordPress LCP sub-part data →
LCP image byte weight 46,092 sites
72% vs 66% good LCP (40-100 KB vs > 300 KB hero)

30% of WordPress sites ship an LCP hero image heavier than 300 KB (66% vs 72% good LCP at 40 to 100 KB).

Across WordPress sites, 30% serve a hero image over 300 KB (66% LCP pass rate, 2.0s median) compared with 72% (1.9s median) on the 21% with a 40 to 100 KB hero image.

Explore WordPress hero image size data →
Total page weight 63,757 sites
86% vs 61% good LCP (< 1.2 MB vs > 5 MB page)

60% of WordPress sites exceed 2.5 MB of total page weight (61% good LCP over 5 MB vs 86% under 1.2 MB, 25 points apart).

Across WordPress sites, 31% transfer 2.5 to 5 MB, 29% exceed 5 MB (61% LCP pass rate, 2.2s median), and 13% transfer under 1.2 MB (86% pass rate, 1.5s median).

Explore WordPress total page weight data →

CMS standings

All CMSs →

210,902 crawled sites (196,263 with Chrome field data), representing millions of real page loads, October 2026 edition. How we measured.