WordPress stylesheet loading and placement and the Core Web Vitals
20.7% of audited sites (13,129) use non-blocking stylesheets in <head> and reach 67% good LCP (2.0s median), whereas the 35.7% placing <link rel="stylesheet"> tags inside <body> drop to 68% good LCP (2.0s median).
99.4% of WordPress sites use inline <style> blocks stylesheet loading and placement, and 76% of those sites have a good LCP, against 76% of all WordPress sites.
99.4% of WordPress sites use inline <style> blocks stylesheet loading and placement, and 78% of those sites have a good CLS, against 78% of all WordPress sites.
Core Web Vitals pass rate
Sites with inline <style> blocks stylesheet loading and placement have a good LCP most often: 76%, against 76% of all WordPress sites. Sites with non-blocking <head> stylesheets CSS loading have it least often, at 67%.
Sites with inline <style> blocks stylesheet loading and placement have a good CLS most often: 78%, against 78% of all WordPress sites. Sites with <body> stylesheets CSS loading have it least often, at 75%.
Stylesheet loading and placement usage
Inline <style> blocks is the most used: 99.4% of WordPress sites.
LCP phase breakdown by stylesheet placement and loading mode
Across the four LCP sub-parts in Chrome's field data, the largest gap between inline <style> blocks and non-blocking <head> stylesheets sits in time to first byte (TTFB): 999 ms median for inline <style> blocks against 1209 ms for non-blocking <head> stylesheets. Overall median field LCP is 1.8s for inline <style> blocks (TTFB 999 ms, load delay 289 ms, load duration 129 ms, render delay 219 ms) versus 2.0s for non-blocking <head> stylesheets.
Across the four LCP sub-parts in Chrome's field data, the largest gap between inline <style> blocks and non-blocking <head> stylesheets sits in time to first byte (TTFB): 999 ms median for inline <style> blocks against 1209 ms for non-blocking <head> stylesheets. Overall median field LCP is 1.8s for inline <style> blocks (TTFB 999 ms, load delay 289 ms, load duration 129 ms, render delay 219 ms) versus 2.0s for non-blocking <head> stylesheets.
Stylesheet loading and placement per framework
Alpine sets the stylesheet loading and placement to inline <style> blocks on 100% of its sites, and 82% of Alpine sites have a good LCP, against 76% of all sites. Vue sets the stylesheet loading and placement to render-blocking <head> stylesheets on 100% of its sites, and 75% of Vue sites have a good LCP.
Alpine sets the stylesheet loading and placement to inline <style> blocks on 100% of its sites, and 81% of Alpine sites have a good CLS, against 78% of all sites. Vue sets the stylesheet loading and placement to render-blocking <head> stylesheets on 100% of its sites, and 75% of Vue sites have a good CLS.
Stylesheet loading or the framework
Does the framework explain the stylesheet loading and placement difference?
Almost every site with inline <style> blocks stylesheet loading and placement is a jQuery site, and almost every jQuery site has inline <style> blocks stylesheet loading and placement, so the data can't tell inline <style> blocks stylesheet loading and placement and jQuery apart. On Vue, 75% of sites with inline <style> blocks stylesheet loading and placement have a good LCP, against 75% of Vue sites with render-blocking <head> stylesheets. Within Vue, sites with inline <style> blocks and render-blocking <head> stylesheets have a good LCP about equally often. On React, 66% of sites with inline <style> blocks stylesheet loading and placement have a good LCP, against 65% of React sites with render-blocking <head> stylesheets. Within React, sites with inline <style> blocks and render-blocking <head> stylesheets have a good LCP about equally often.
Almost every site with inline <style> blocks stylesheet loading and placement is a jQuery site, and almost every jQuery site has inline <style> blocks stylesheet loading and placement, so the data can't tell inline <style> blocks stylesheet loading and placement and jQuery apart. On Vue, 75% of sites with inline <style> blocks stylesheet loading and placement have a good CLS, against 74% of Vue sites with render-blocking <head> stylesheets. Within Vue, sites with inline <style> blocks and render-blocking <head> stylesheets have a good CLS about equally often. On React, 75% of sites with inline <style> blocks stylesheet loading and placement have a good CLS, against 75% of React sites with render-blocking <head> stylesheets. Within React, sites with inline <style> blocks and render-blocking <head> stylesheets have a good CLS about equally often.
Why <link rel="stylesheet"> inside <body> hurts LCP and triggers late style recalculation
Standard <link rel="stylesheet"> tags in <head> (98.9% of sites, 62,581) block first paint until downloaded (76% good LCP, 1.7s median), while inline <style> blocks (99.4%) reach 76% good LCP and non-blocking <head> stylesheets (20.7%) reach 67% good LCP (2.0s median). Scattering <link rel="stylesheet"> tags inside <body> (35.7% of sites, 22,615) forces late parser pauses and mid-render style passes, dropping good LCP to 68% (2.0s median).
Understanding stylesheet loading and placement
Enqueue block and plugin CSS in <head> or inline small block styles via wp_enqueue_block_style() instead of printing <link rel="stylesheet"> tags mid-body inside shortcodes. On WordPress, 98.9% of sites load CSS in <head> (76% good LCP) while the 35.7% loading CSS inside <body> drop to 68% good LCP (2.0s median).
By Arjen Karel · 63,295 crawled WordPress sites (17,005 with desktop Chrome field data, 63,291 sites with stylesheet loading and placement, October 2026). How we measured.