font-display on React sites
swap, auto, block, fallback, or optional across 747,295 @font-face rules: how sites mix font-display rules on the same page and how that affects LCP and CLS.
Across React sites, 71.3% of all 747,295 declared @font-face rules set font-display: swap, while 21.9% leave it at auto. Most sites load more than one font stylesheet, so 91.5% of React sites have at least one swap rule and 17.6% have at least one block rule. Sites that keep every font on swap or optional have a good LCP on 90% of sites, against 79% for blocking-only sites and 69% for sites that mix swap with block or auto.
Across React sites, 71.3% of all 747,295 declared @font-face rules set font-display: swap, while 21.9% leave it at auto. Most sites load more than one font stylesheet, so 91.5% of React sites have at least one swap rule and 17.6% have at least one block rule. Sites that keep every font on swap or optional have a good CLS on 89% of sites, against 73% for blocking-only sites and 73% for sites that mix swap with block or auto.
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: swap at 79%, fallback at 73%, auto at 70%, block at 66%. Why does swap (79%) sit right next to auto (70%)? 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.
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 CLS: swap at 81%, block at 73%, auto at 73%, fallback at 71%. Why does swap (81%) sit right next to auto (73%)? 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.
Font-display usage
Across 9,533 React sites that declare web fonts, swap accounts for 71.3% of all @font-face rules, auto for 21.9%, block for 6.3%, fallback for 0.4%, and optional for 0.1%. At the site level, 32.9% of sites mix swap with blocking rules on the same page, 8.5% use only blocking rules (auto, block, or fallback), and 58.6% use swap or optional on every font rule.
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 90% of sites, against 79% for blocking-only sites and 69% for mixed sites. Mixed sites load a median of 6 font files across 59 @font-face rules (usually Google Fonts plus Font Awesome or theme icon fonts). Pure swap sites load a median of 5 font files across 39 rules.
When each site is counted once by its full rule mix, sites that keep every font on swap or optional have a good CLS on 89% of sites, against 73% for blocking-only sites and 73% for mixed sites. Mixed sites load a median of 6 font files across 59 @font-face rules (usually Google Fonts plus Font Awesome or theme icon fonts). Pure swap sites load a median of 5 font files across 39 rules.
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 88% of sites, against 70% for sites with any block rule. On pages loading 8 or more font files, pure swap reaches 83% against 58% for sites with block.
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 CLS on 84% of sites, against 69% for sites with any block rule. On pages loading 8 or more font files, pure swap reaches 87% against 74% for sites with block. At every font count, pure swap matches or beats block on field CLS.
| Downloaded font files | Only swap / optional | Auto or fallback (no block) | Includes font-display: block |
|---|---|---|---|
| 1 to 2 font files | 88%84% 699 sites | 74%68% 346 sites | 70%69% 142 sites |
| 3 to 4 font files | 96%95% 1,880 sites | 81%68% 615 sites | 70%77% 313 sites |
| 5 to 7 font files | 91%89% 2,034 sites | 77%78% 721 sites | 73%72% 547 sites |
| 8 or more font files | 83%87% 951 sites | 70%79% 523 sites | 58%74% 660 sites |
Font-display per platform
On Wix, 99% of declared @font-face rules use font-display: swap, 1% use auto, and 0% use block. 92% of Wix sites have a good LCP. On WordPress, 49% of rules use swap, 39% use auto, and 11% use block, and 66% of WordPress sites have a good LCP.
On Wix, 99% of declared @font-face rules use font-display: swap, 1% use auto, and 0% use block. 96% of Wix sites have a good CLS. On WordPress, 49% of rules use swap, 39% use auto, and 11% use block, and 75% of WordPress sites have a good CLS.
font-display or the platform
Does the platform explain the font-display gap?
On Wix, 95% of sites that keep every font on swap or optional have a good LCP, compared with 100% for blocking-only sites and 80% for Wix sites that mix swap with blocking rules. Within Wix, keeping every font on swap beats mixing rules by 15 percentage points. On WordPress, 70% of sites that keep every font on swap or optional have a good LCP, compared with 74% for blocking-only sites and 63% for WordPress sites that mix swap with blocking rules. Within WordPress, pure swap and mixed sites have a good LCP about equally often.
On Wix, 96% of sites that keep every font on swap or optional have a good CLS, compared with 100% for blocking-only sites and 94% for Wix sites that mix swap with blocking rules. Within Wix, pure swap and mixed sites have a good CLS about equally often. On WordPress, 72% of sites that keep every font on swap or optional have a good CLS, compared with 81% for blocking-only sites and 74% for WordPress sites that mix swap with blocking rules. Within WordPress, pure swap and mixed sites have a good CLS about equally often.
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 (89% good CLS).
Understanding font-display
Set font-display: swap or font-display: optional on every @font-face rule, and check third-party icon stylesheets for leftover font-display: block rules. Across this dataset, 32.9% of sites mix rules on the same page because they load Google Fonts with display=swap alongside Font Awesome or theme icon fonts set to block or auto. At the same font file count, sites that keep every font on swap beat sites with any block rule by 18 to 26 percentage points on LCP. They do not lose a single point on CLS. Pair font-display: swap with size-adjust, ascent-override, and descent-override on body text fonts so the swap does not shift layout.
By Arjen Karel · 9,570 crawled React sites (1,979 with desktop Chrome field data, 9,533 sites with font-display, October 2026). How we measured.