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.6s median), compared to 81% good LCP on sites using async (81.0%) and 82% on ES modules (19.5%).

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

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

The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices 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: 89%, against 82% of all sites. Sites with render-blocking scripts script loading have it least often, at 79%.

SitesGood, needs improvement, poor LCPMedian
All sites196,26382%1.5s
Legacy fallback (<script nomodule>) 4.9%9,21689%1.4s
Inline <script> blocks 96.5%182,98082%1.5s
ES module (<script type="module">) 19.5%37,22182%1.6s
Async (<script async>) 81.0%154,03781%1.6s
Dynamic / script-injected 70.9%134,52781%1.6s
Deferred (<script defer>) 44.4%84,40180%1.6s
Render-blocking (<script src>) 65.1%123,67679%1.6s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices 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 · 196,263 with all devices 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): 453 ms median for nomodule fallback scripts against 762 ms for render-blocking scripts. Overall median field LCP is 1.4s for nomodule fallback scripts (TTFB 453 ms, load delay 452 ms, load duration 148 ms, render delay 178 ms) versus 1.6s for render-blocking scripts.

Median LCP phase breakdown (Chrome field p75) Load delay Median LCP
Sites with script loading strategy 138,194649 ms320 ms224 ms320 mslab 320 ms1.5s
Dynamic / script-injected 98,734727 ms315 ms223 ms315 mslab 315 ms1.6s
Inline <script> blocks 133,993659 ms323 ms225 ms323 mslab 323 ms1.5s
Render-blocking (<script src>) 90,741762 ms325 ms228 ms325 mslab 325 ms1.6s
Async (<script async>) 113,971676 ms340 ms228 ms340 mslab 340 ms1.6s
Deferred (<script defer>) 63,192685 ms370 ms236 ms370 mslab 370 ms1.6s
ES module (<script type="module">) 28,491579 ms430 ms247 ms430 mslab 430 ms1.6s
Legacy fallback (<script nomodule>) 6,505453 ms452 ms178 ms452 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 · 196,263 with all devices 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.6s median). Sites loading scripts with async (81.0%), defer (44.4%), or type="module" (19.5%) reach 81%, 80%, and 82% 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.6s median).

The State of Web Vitals · October 2026 · 210,902 crawled sites · 196,263 with all devices 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 (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.2% use ES modules (70% good LCP).

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

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

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

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

React & Next.js sites with synchronous blocking scripts (30.0%) pass LCP at 65% 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> (65% good LCP, 2.0s median, 21 points apart).

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