WordPress script loading attributes and the Core Web Vitals

89.1% of audited sites (56,414) still execute render-blocking synchronous scripts and drop to 69% good LCP (2.0s median), compared to 70% good LCP on sites using async (92.0%) and 71% on ES modules (14.1%).

Field data PhoneDesktopAll Scope All sites October 2026 edition · All devices field outcomes · WordPress sites only
WordPress Scoped to 63,295 sites out of 203,892 analyzed (cms) Compare with all sites →

14.1% of WordPress sites use ES module scripts script loading strategy, and 71% of those sites have a good LCP, against 70% of all WordPress sites.

The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 60,855 with all devices field data · 63,282 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
1

Core Web Vitals pass rate

Sites with ES module scripts script loading strategy have a good LCP most often: 71%, against 70% of all WordPress sites. Sites with deferred scripts script loading have it least often, at 66%.

SitesGood, needs improvement, poor LCPMedian
All WordPress sites60,85570%1.9s
Legacy fallback (<script nomodule>) 0.1%3871%1.8s
ES module (<script type="module">) 14.1%8,64571%1.9s
Inline <script> blocks 99.9%60,82070%1.9s
Async (<script async>) 92.0%56,00470%1.9s
Dynamic / script-injected 90.4%54,96769%2.0s
Render-blocking (<script src>) 89.1%54,25869%2.0s
Deferred (<script defer>) 53.0%32,38166%2.0s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 60,855 with all devices field data · 63,282 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
2

Script loading strategy usage

Inline scripts is the most used: 99.9% of WordPress sites. ES module scripts is 14.1% of WordPress sites.

Sites using each option (sites can use more than one) 63,282 sites
Inline <script> blocks 99.9% Async (<script async>) 92.0% Dynamic / script-injected 90.4% Render-blocking (<script src>) 89.1% Deferred (<script defer>) 53.0%
Inline <script> blocks 99.9% Async (<script async>) 92.0% Dynamic / script-injected 90.4% Render-blocking (<script src>) 89.1% Deferred (<script defer>) 53.0% ES module (<script type="module">) 14.1% Legacy fallback (<script nomodule>) 0.1%
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 60,855 with all devices field data · 63,282 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
3

LCP phase breakdown by script loading attribute

Across the four LCP sub-parts in Chrome's field data, the largest gap between ES module scripts and deferred scripts sits in time to first byte (TTFB): 1082 ms median for ES module scripts against 1221 ms for deferred scripts. Overall median field LCP is 1.9s for ES module scripts (TTFB 1082 ms, load delay 331 ms, load duration 173 ms, render delay 240 ms) versus 2.0s for deferred scripts.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
WordPress sites with script loading strategy 43,6151127 ms340 ms235 ms340 mslab 340 ms1.9s
ES module (<script type="module">) 6,3521082 ms331 ms240 ms331 mslab 331 ms1.9s
Inline <script> blocks 43,5971127 ms340 ms235 ms340 mslab 340 ms1.9s
Deferred (<script defer>) 23,7071221 ms341 ms246 ms341 mslab 341 ms2.0s
Async (<script async>) 40,2341138 ms345 ms238 ms345 mslab 345 ms2.0s
Dynamic / script-injected 39,5001150 ms347 ms234 ms347 mslab 347 ms2.0s
Render-blocking (<script src>) 39,0801153 ms352 ms236 ms352 mslab 352 ms2.0s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 60,855 with all devices field data · 63,282 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
4

Script loading strategy per framework

Vue sets the script loading strategy to ES module scripts on 82% of its sites, and 68% of Vue sites have a good LCP, against 70% of all sites. jQuery sets the script loading strategy to inline scripts on 100% of its sites, and 69% of jQuery sites have a good LCP.

FrameworkScript loading strategy on its sitesGood LCP
WordPress sites with script loading strategy 63,282 sitesInline <script> blocks 100%Async (<script async>) 92%Dynamic / script-injected 90%Render-blocking (<script src>) 89%Deferred (<script defer>) 53%ES module (<script type="module">) 14%70%
Alpine 380 sitesInline <script> blocks 100%Async (<script async>) 98%Dynamic / script-injected 87%Render-blocking (<script src>) 83%Deferred (<script defer>) 73%ES module (<script type="module">) 23%80%
jQuery 60,313 sitesInline <script> blocks 100%Async (<script async>) 93%Render-blocking (<script src>) 91%Dynamic / script-injected 91%Deferred (<script defer>) 54%ES module (<script type="module">) 14%69%
Vue 4,844 sitesInline <script> blocks 100%Render-blocking (<script src>) 95%Dynamic / script-injected 91%Async (<script async>) 88%ES module (<script type="module">) 82%Deferred (<script defer>) 47%68%
React 2,233 sitesInline <script> blocks 100%Async (<script async>) 92%Dynamic / script-injected 91%Render-blocking (<script src>) 89%Deferred (<script defer>) 71%ES module (<script type="module">) 20%61%
Inline <script> blocks Async (<script async>) Dynamic / script-injected Render-blocking (<script src>) Deferred (<script defer>) ES module (<script type="module">) Legacy fallback (<script nomodule>)
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 60,855 with all devices field data · 63,282 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
5

Script loading attributes or the framework

Does the framework explain the script loading strategy difference?

On jQuery, 69% of sites with ES module scripts script loading strategy have a good LCP, against 69% of jQuery sites with inline scripts. Within jQuery, sites with ES module scripts and inline scripts have a good LCP about equally often. On Vue, 69% of sites with ES module scripts script loading strategy have a good LCP, against 68% of Vue sites with inline scripts. Within Vue, sites with ES module scripts and inline scripts have a good LCP about equally often.

How synchronous blocking <script> tags halt the HTML parser before LCP

When the HTML parser hits a synchronous <script src> tag without async, defer, or type="module", it must pause DOM construction, wait for the network download, and execute the script before painting. Across 56,414 sites (89.1%) with render-blocking scripts, good LCP drops to 69% (2.0s median). Sites loading scripts with async (92.0%), defer (53.0%), or type="module" (14.1%) reach 70%, 66%, and 71% good LCP.

The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 60,855 with all devices field data · 63,282 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
6

Understanding script loading attributes

Register theme and plugin scripts with strategy => defer or async via wp_register_script() (WordPress 6.3+), and move legacy jQuery dependencies out of the critical rendering path. On WordPress, 89.1% of sites still ship render-blocking scripts (69% good LCP) while 14.1% use ES modules (71% good LCP).

The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 60,855 with all devices field data · 63,282 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
Related signals Cookies per site → Uses @import → DOM size → Images per page → By Arjen Karel · 63,295 crawled WordPress sites (60,855 with all devices Chrome field data, 63,282 sites with script loading strategy, October 2026) · How we measured