Script loading attributes and the Core Web Vitals

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

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

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

The State of Web Vitals · October 2026 · 210,902 crawled sites · 69,745 with desktop 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: 88%, against 86% of all sites. Sites with render-blocking scripts script loading have it least often, at 84%.

SitesGood, needs improvement, poor LCPMedian
All sites69,74586%1.4s
Legacy fallback (<script nomodule>) 4.9%2,57888%1.4s
ES module (<script type="module">) 19.5%16,39087%1.4s
Inline <script> blocks 96.5%64,45286%1.4s
Async (<script async>) 81.0%57,28486%1.4s
Dynamic / script-injected 70.9%45,67785%1.4s
Deferred (<script defer>) 44.4%30,90084%1.5s
Render-blocking (<script src>) 65.1%42,31884%1.5s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · 210,902 crawled sites · 69,745 with desktop 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 · 69,745 with desktop 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): 438 ms median for nomodule fallback scripts against 645 ms for render-blocking scripts. Overall median field LCP is 1.4s for nomodule fallback scripts (TTFB 438 ms, load delay 428 ms, load duration 157 ms, render delay 189 ms) versus 1.5s for render-blocking scripts.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
Sites with script loading strategy 49,129572 ms275 ms192 ms275 mslab 318 ms1.4s
Dynamic / script-injected 33,765636 ms263 ms193 ms263 mslab 306 ms1.4s
Render-blocking (<script src>) 31,401645 ms275 ms197 ms275 mslab 322 ms1.5s
Inline <script> blocks 47,637581 ms276 ms194 ms276 mslab 319 ms1.4s
Async (<script async>) 42,835592 ms286 ms198 ms286 mslab 329 ms1.4s
Deferred (<script defer>) 23,159609 ms322 ms213 ms322 mslab 365 ms1.5s
ES module (<script type="module">) 12,691481 ms392 ms213 ms392 mslab 436 ms1.4s
Legacy fallback (<script nomodule>) 1,645438 ms428 ms157 ms189 ms428 mslab 443 ms1.4s
TTFB Resource load delay Resource load time Element render delay
The State of Web Vitals · October 2026 · 210,902 crawled sites · 69,745 with desktop 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 84% (1.5s median). Sites loading scripts with async (81.0%), defer (44.4%), or type="module" (19.5%) reach 86%, 84%, and 87% 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 (84% good LCP, 1.5s median).

The State of Web Vitals · October 2026 · 210,902 crawled sites · 69,745 with desktop 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 (75% 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 (75% good LCP, 1.8s median) and 14.2% use ES modules (76% good LCP).

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

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

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

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

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

Across React sites, 89.0% load scripts with defer (80% good LCP), 96.8% use async (79% good LCP), and 30.0% include synchronous blocking scripts in <head> (69% good LCP, 1.9s median, 11 points apart).

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