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 68% good LCP (2.0s median), compared to 69% good LCP on sites using async (92.0%) and 70% on ES modules (14.1%).
14.1% of WordPress sites use ES module scripts script loading strategy, and 70% of those sites have a good LCP, against 70% of all WordPress sites.
90.4% of WordPress sites use dynamically injected scripts script loading strategy, and 97% of those sites have a good INP, against 97% of all WordPress sites.
Core Web Vitals pass rate
Sites with ES module scripts script loading strategy have a good LCP most often: 70%, against 70% of all WordPress sites. Sites with deferred scripts script loading have it least often, at 66%.
Sites with dynamically injected scripts script loading strategy have a good INP most often: 97%, against 97% of all WordPress sites. Sites with ES module scripts script loading have it least often, at 95%.
Script loading strategy usage
Inline scripts is the most used: 99.9% of WordPress sites. ES module scripts is 14.1% of WordPress sites.
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): 1076 ms median for ES module scripts against 1191 ms for deferred scripts. Overall median field LCP is 1.9s for ES module scripts (TTFB 1076 ms, load delay 344 ms, load duration 190 ms, render delay 247 ms) versus 2.0s for deferred scripts.
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): 1076 ms median for ES module scripts against 1191 ms for deferred scripts. Overall median field LCP is 1.9s for ES module scripts (TTFB 1076 ms, load delay 344 ms, load duration 190 ms, render delay 247 ms) versus 2.0s for deferred scripts.
Script loading strategy per framework
Vue sets the script loading strategy to ES module scripts on 82% of its sites, and 67% 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.
Vue sets the script loading strategy to ES module scripts on 82% of its sites, and 95% of Vue sites have a good INP, against 97% of all sites. jQuery sets the script loading strategy to inline scripts on 100% of its sites, and 97% of jQuery sites have a good INP.
Script loading attributes or the framework
Does the framework explain the script loading strategy difference?
On jQuery, 68% 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, 68% of sites with ES module scripts script loading strategy have a good LCP, against 67% of Vue sites with inline scripts. Within Vue, sites with ES module scripts and inline scripts have a good LCP about equally often.
Almost every site with dynamically injected scripts script loading strategy is a jQuery site, and almost every jQuery site has dynamically injected scripts script loading strategy, so the data can't tell dynamically injected scripts script loading strategy and jQuery apart. On Vue, 96% of sites with dynamically injected scripts script loading strategy have a good INP, against 95% of Vue sites with inline scripts. Within Vue, sites with dynamically injected scripts and inline scripts have a good INP about equally often. On React, 96% of sites with dynamically injected scripts script loading strategy have a good INP, against 96% of React sites with inline scripts. Within React, sites with dynamically injected scripts and inline scripts have a good INP 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 68% (2.0s median). Sites loading scripts with async (92.0%), defer (53.0%), or type="module" (14.1%) reach 69%, 66%, and 70% good LCP.
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 (68% good LCP) while 14.1% use ES modules (70% good LCP).
By Arjen Karel · 63,295 crawled WordPress sites (36,524 with phone Chrome field data, 63,282 sites with script loading strategy, October 2026). How we measured.