WordPress font-display and the Core Web Vitals

swap, auto, block, fallback, or optional across 7.6 million @font-face rules: how sites mix font-display rules on the same page and how that affects LCP and CLS.

Field data PhoneDesktopAll Scope All sites October 2026 edition · Desktop field outcomes · WordPress sites only
WordPress Scoped to 63,295 sites out of 203,892 analyzed (cms) Compare with all sites →

Across WordPress sites, 48.8% of all 7,601,463 declared @font-face rules set font-display: swap, while 42.2% leave it at auto. Most sites load more than one font stylesheet, so 65.3% of WordPress sites have at least one swap rule and 52.4% have at least one block rule. Sites that keep every font on swap or optional have a good LCP on 82% of sites, against 80% for blocking-only sites and 72% for sites that mix swap with block or auto.

The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
1

Core Web Vitals pass rate

Here, a site counts under every font-display value present in its @font-face rules. Sites with at least one matching rule have a good LCP: fallback at 77%, auto at 74%, swap at 74%, block at 72%. Why does swap (74%) sit right next to auto (74%)? Three in four sites that load Google Fonts with swap also load icon or theme fonts with block or auto. Those multi-font pages count under both values.

SitesGood, needs improvement, poor LCPMedian
All WordPress sites17,00576%1.7s
fallback 7.6%1,09477%1.7s
auto (browser default) 81.4%13,50674%1.8s
swap 65.3%11,80274%1.8s
block 52.4%8,77272%1.9s
optional 0.2%3665%1.8s
GoodNeeds improvementPoorSites: with Chrome field data
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
2

Font-display usage

Across 62,571 WordPress sites that declare web fonts, swap accounts for 48.8% of all @font-face rules, auto for 42.2%, block for 8.1%, fallback for 0.9%, and optional for 0.1%. At the site level, 54.7% of sites mix swap with blocking rules on the same page, 34.6% use only blocking rules (auto, block, or fallback), and 10.6% use swap or optional on every font rule.

All declared @font-face rules 7,601,463 rules
swap 48.8%auto (browser default) 42.2%
swap 48.8% auto (browser default) 42.2% block 8.1% fallback 0.9% optional 0.1%
Sites with web fonts by site mix (non-overlapping) 62,571 sites
Only swap or optional 10.6%Only blocking (auto, block, fallback) 34.6%Mixed (swap + blocking on same page) 54.7%
Only swap or optional 10.6% Only blocking (auto, block, fallback) 34.6% Mixed (swap + blocking on same page) 54.7%
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
3

Pass rate by site-wide font-display mix

When each site is counted once by its full rule mix, sites that keep every font on swap or optional have a good LCP on 82% of sites, against 80% for blocking-only sites and 72% for mixed sites. Mixed sites load a median of 6 font files across 78 @font-face rules (usually Google Fonts plus Font Awesome or theme icon fonts). Pure swap sites load a median of 5 font files across 32 rules.

Site font mixSitesGood, needs improvement, poor LCPMedian
All WordPress sites17,00576%1.7s
Only swap or optional 10.6% · 5 fonts2,07682%1.5s
Only blocking (auto, block, fallback) 34.6% · 4 fonts5,04480%1.7s
Mixed (swap + blocking on same page) 54.7% · 6 fonts9,73672%1.8s
GoodNeeds improvementPoor
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
4

font-display pass rate by number of font files

Comparing sites that load the same number of font files separates font-display from font count. With 1 to 2 font files, sites on pure swap have a good LCP on 87% of sites, against 83% for sites with any block rule. On pages loading 8 or more font files, pure swap reaches 75% against 65% for sites with block.

Downloaded font files Only swap / optional Auto or fallback (no block) Includes font-display: block
1 to 2 font files
87% 1.3s median 1,322 sites
83% 1.5s median 5,312 sites
83% 1.5s median 3,364 sites
3 to 4 font files
87% 1.4s median 1,812 sites
81% 1.6s median 7,528 sites
76% 1.8s median 7,452 sites
5 to 7 font files
79% 1.6s median 1,839 sites
79% 1.7s median 6,178 sites
72% 1.9s median 11,206 sites
8 or more font files
75% 1.7s median 1,552 sites
74% 1.8s median 3,417 sites
65% 2.1s median 10,502 sites
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
5

Font-display per framework

On jQuery, 49% of declared @font-face rules use font-display: swap, 42% use auto, and 8% use block. 75% of jQuery sites have a good LCP. On Vue, 48% of rules use swap, 41% use auto, and 10% use block, and 75% of Vue sites have a good LCP.

Framework@font-face rules on its sitesGood LCP
WordPress sites with font-display 62,571 sitesswap 49%auto (browser default) 42%76%
Alpine 372 sitesblock 39%swap 36%auto (browser default) 24%82%
jQuery 59,841 sitesswap 49%auto (browser default) 42%75%
Vue 4,815 sitesswap 48%auto (browser default) 41%block 10%75%
React 2,225 sitesswap 49%auto (browser default) 39%block 11%66%
auto (browser default) swap block fallback optional
The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
6

font-display or the framework

Does the framework explain the font-display gap?

On jQuery, 81% of sites that keep every font on swap or optional have a good LCP, compared with 79% for blocking-only sites and 72% for jQuery sites that mix swap with blocking rules. Within jQuery, keeping every font on swap beats mixing rules by 9 percentage points. On Vue, 85% of sites that keep every font on swap or optional have a good LCP, compared with 77% for blocking-only sites and 71% for Vue sites that mix swap with blocking rules. Within Vue, keeping every font on swap beats mixing rules by 14 percentage points.

How font-display affects LCP and CLS during page load

When text is the LCP element, font-display: block and font-display: auto hide it for up to 3 seconds while the font file downloads. If the font arrives late, that wait delays LCP directly. With font-display: swap, the browser paints the fallback system font right away so LCP is recorded on first render, then swaps in the web font once it downloads. Swapping an unadjusted fallback font can shift text lines. Even so, pure swap sites match or beat blocking sites on field CLS at every font count (81% good CLS).

The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
7

Understanding font-display

Set font-display: swap or font-display: optional in theme.json (under settings.typography.fontFamilies[].fontFace[].fontDisplay) and replace icon fonts like Font Awesome or Dashicons with inline SVGs. On WordPress, 54.7% of sites mix rules on the same page because their body fonts use swap while page-builder or plugin icon stylesheets ship font-display: block or auto. At the same font file count, WordPress sites that keep every font on swap beat sites with any block rule by 4 to 11 percentage points on LCP and match or beat them on CLS.

The State of Web Vitals · October 2026 · WordPress: 63,295 crawled sites · 17,005 with desktop field data · 62,571 sites with font-displayBy Arjen Karel · corewebvitals.io/state-of-cwv
Related signals Stylesheet origin (1P/3P) → CSS coverage (used vs unused) → Image format mix → Fonts per page → By Arjen Karel · 63,295 crawled WordPress sites (17,005 with desktop Chrome field data, 62,571 sites with font-display, October 2026) · How we measured