Script loading attributes and the Core Web Vitals

65.1% of audited sites (128,332) still execute render-blocking synchronous scripts and drop to 79% good LCP (1.7s median), compared to 81% good LCP on sites using async (81.0%) and 81% on ES modules (19.5%).

Field data PhoneDesktopAll Scope All sites October 2026 edition · Phone field outcomes

4.9% of sites use nomodule fallback scripts script loading strategy, and 86% of those sites have a good LCP, against 82% of all sites.

The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 197,083 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
1

Core Web Vitals pass rate

Sites with nomodule fallback scripts script loading strategy have a good LCP most often: 86%, against 82% of all sites. Sites with render-blocking scripts script loading have it least often, at 79%.

SitesGood, needs improvement, poor LCPMedian
All sites126,76182%1.6s
Legacy fallback (<script nomodule>) 4.9%5,85086%1.4s
Inline <script> blocks 96.5%118,08682%1.6s
ES module (<script type="module">) 19.5%26,22281%1.6s
Async (<script async>) 81.0%99,49881%1.6s
Dynamic / script-injected 70.9%85,42280%1.6s
Deferred (<script defer>) 44.4%54,79780%1.6s
Render-blocking (<script src>) 65.1%78,87179%1.7s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 197,083 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
2

Script loading strategy usage

Inline scripts is the most used: 96.5% of sites. Nomodule fallback scripts is 4.9% of sites.

Sites using each option (sites can use more than one) 197,083 sites
Inline <script> blocks 96.5% Async (<script async>) 81.0% Dynamic / script-injected 70.9% Render-blocking (<script src>) 65.1% Deferred (<script defer>) 44.4%
Inline <script> blocks 96.5% Async (<script async>) 81.0% Dynamic / script-injected 70.9% Render-blocking (<script src>) 65.1% Deferred (<script defer>) 44.4% ES module (<script type="module">) 19.5% Legacy fallback (<script nomodule>) 4.9%
The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 197,083 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 nomodule fallback scripts and render-blocking scripts sits in time to first byte (TTFB): 461 ms median for nomodule fallback scripts against 755 ms for render-blocking scripts. Overall median field LCP is 1.4s for nomodule fallback scripts (TTFB 461 ms, load delay 449 ms, load duration 133 ms, render delay 187 ms) versus 1.7s for render-blocking scripts.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
Sites with script loading strategy 89,752652 ms337 ms236 ms337 mslab 327 ms1.6s
Dynamic / script-injected 62,828724 ms330 ms234 ms330 mslab 320 ms1.6s
Inline <script> blocks 86,984661 ms340 ms237 ms340 mslab 330 ms1.6s
Render-blocking (<script src>) 57,839755 ms345 ms240 ms345 mslab 333 ms1.7s
Async (<script async>) 74,114674 ms356 ms241 ms356 mslab 346 ms1.6s
Deferred (<script defer>) 41,270671 ms382 ms248 ms382 mslab 375 ms1.6s
ES module (<script type="module">) 20,310590 ms441 ms166 ms260 ms441 mslab 436 ms1.6s
Legacy fallback (<script nomodule>) 4,292461 ms449 ms187 ms449 mslab 452 ms1.4s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 197,083 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
4

Understanding script loading attributes

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 128,332 sites (65.1%) with render-blocking scripts, good LCP drops to 79% (1.7s median). Sites loading scripts with async (81.0%), defer (44.4%), or type="module" (19.5%) reach 81%, 80%, and 81% good LCP.

Add defer or type="module" to all first-party application scripts and async to independent third-party tags so zero synchronous <script src> tags block the HTML parser in <head>. Across all audited sites, 65.1% ship render-blocking scripts (79% good LCP, 1.7s median).

The State of Web Vitals · October 2026 · 210,902 crawled sites · 126,761 with phone field data · 197,083 sites with script loading strategyBy Arjen Karel · corewebvitals.io/state-of-cwv
Platform & Framework Takeaways

How script loading strategy plays out per platform

What the field data shows when you isolate a single CMS or framework.

WordPress 65,496 sites
89.2% WordPress sites with render-blocking scripts

89.2% of WordPress sites load render-blocking synchronous scripts (68% 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 (68% good LCP, 2.0s median) and 14.2% use ES modules (70% good LCP).

Read the WordPress script loading breakdown →
Shopify 8,570 stores
95% vs 92% good LCP (deferred vs blocking scripts)

99.6% of Shopify stores use deferred scripts (95% good LCP), while 29.8% include blocking scripts (92%).

Across Shopify storefronts, 99.6% load scripts with defer (95% good LCP, 1.4s median), 99.5% use type="module", and 29.8% include synchronous blocking scripts (92% good LCP, 1.5s median).

Read the Shopify script loading breakdown →
React & Next.js 9,570 sites
86% vs 67% good LCP (deferred vs blocking scripts)

React & Next.js sites with synchronous blocking scripts (30.0%) pass LCP at 67% vs 86% with defer.

Across React sites, 89.0% load scripts with defer (86% good LCP), 96.8% use async (85% good LCP), and 30.0% include synchronous blocking scripts in <head> (67% good LCP, 2.0s median, 19 points apart).

Related signals Cookies per site → Uses @import → DOM size → Images per page → By Arjen Karel · 210,902 crawled sites (126,761 with phone Chrome field data, 197,083 sites with script loading strategy, October 2026) · How we measured