What does Google say about SEO? /
Quick SEO Quiz

Test your SEO knowledge in 5 questions

Less than a minute. Find out how much you really know about Google search.

🕒 ~1 min 🎯 5 questions

Official statement

Google advises prioritizing flash of unstyled text (FOUT) over flash of invisible text (FOIT). Preventing text from appearing invisible while waiting for web fonts to load helps enhance user experience and ensures that critical information is visible quickly.
36:15
🎥 Source video

Extracted from a Google Search Central video

⏱ 44:01 💬 EN 📅 25/01/2018 ✂ 7 statements
Watch on YouTube (36:15) →
Other statements from this video 6
  1. 3:14 La règle des 3 secondes condamne-t-elle vraiment votre SEO ?
  2. 4:11 Le speed index est-il vraiment l'indicateur ultime pour mesurer la vitesse de chargement ?
  3. 7:04 Pourquoi Google recommande-t-il de tester vos pages sur une connexion 3G rapide ?
  4. 11:33 Faut-il bannir les polices web pour améliorer votre SEO ?
  5. 18:21 Le stockage local peut-il vraiment accélérer le chargement de vos polices web ?
  6. 22:53 Faut-il vraiment utiliser l'URL de Google Fonts pour optimiser le chargement des polices ?
📅
Official statement from (8 years ago)
TL;DR

Google recommends favoring flash of unstyled text (FOUT) over flash of invisible text (FOIT) when loading web fonts. This directive aims to improve user experience by ensuring that the textual content remains visible while custom fonts are downloading. Specifically, this means configuring your fonts to display a default system font instead of leaving text invisible, which directly affects your CLS and LCP metrics.

What you need to understand

What distinguishes FOUT from FOIT?

FOIT (Flash of Invisible Text) refers to the moment when your browser completely hides the text while waiting for the custom web font to load. During this time, the user sees a blank page or empty areas where the text content should appear.

FOUT (Flash of Unstyled Text) immediately displays the text using a fallback system font, then swaps to the custom font once it has loaded. The visitor can read the content within the first milliseconds, even if the final visual rendering is not yet optimal.

Why is Google promoting this approach now?

The answer lies in two acronyms: LCP and CLS. FOIT delays the text display, which directly degrades your Largest Contentful Paint if your main content is textual. Many e-commerce or editorial sites see their LCP explode due to custom fonts that take 2-3 seconds to load.

While FOUT does create a slight visual flash during the font swap, this micro-change is significantly less penalizing than a prolonged blank screen. Google has clearly calculated: readable text immediately is better than a perfect but delayed rendering.

How can I technically induce FOUT instead of FOIT?

Modern browsers have evolved in how they handle FOIT. Some, like Chrome, enforce a maximum 3-second timeout before displaying text with a fallback font. Others, like Safari, use an unlimited timeout, which can create disastrous situations.

To enforce consistent FOUT behavior, you need to use the CSS property font-display with the value swap or fallback. The swap value shows the system text immediately and then swaps as soon as the custom font arrives. The fallback value imposes a very short swap window (100ms) and then blocks the swap permanently if the font has not arrived.

  • font-display: swap ensures that the text is always visible, at the cost of a potential late flash
  • font-display: fallback limits the risk of CLS by blocking late swaps after about 3 seconds
  • font-display: optional lets the browser decide based on network conditions, which is the most performing approach but less predictable
  • The old practice font-display: block results in exactly the FOIT that Google now advises against
  • Always declare consistent fallback fonts in your font stack (size, weight, spacing similar) to minimize CLS during the swap

SEO Expert opinion

Is this directive really new or just a reminder?

Let's be honest: Google has been repeating this advice since the introduction of font-display in 2016. What has changed is the context of Core Web Vitals that transforms a UX recommendation into a measurable ranking criterion. Previously, optimizing font loading was a nice-to-have for demanding sites.

Today, with the growing weight of CWV in the algorithm, ignoring FOIT can practically cost you positions. I observe on the ground that sites shifting from block to swap regularly gain 0.5 to 1 second on their LCP, moving them from orange to green in PageSpeed Insights.

In what cases does this rule become problematic?

Google's recommendation assumes that textual content takes precedence over visual identity. However, some luxury sites or creative agencies have such distinctive fonts that FOUT creates visually unacceptable dissonance for their brand.

In these cases, you have two options: either aggressively preload your critical fonts using <link rel="preload"> to reduce the delay to 200-300ms and make the FOIT almost invisible, or accept an average CWV score by using font-display: block. [To be verified]: Google has never clarified whether a poor LCP caused by branding choices could be compensated by other signals.

Doesn't FOUT actually generate CLS during the swap?

Absolutely, and that's the cunning trap of this recommendation. Swapping from Arial to a custom font with different metrics results in a reflow of the text that can shift your entire layout. I've seen sites go from 0.05 to 0.18 CLS just because of a poorly managed font swap.

The solution lies in using size-adjust, ascent-override, and descent-override in your @font-face to match the dimensions of your custom font exactly with those of the system fallback. Google Fonts now provides these values calculated automatically. Without this adjustment, you're trading an LCP issue for a CLS issue, which solves nothing.

Warning: on mobile with unstable 3G/4G connections, the swap can occur several seconds after the initial display, creating a disruptive user experience even if technically the text was visible. Always test in real network throttling.

Practical impact and recommendations

How can I audit my current fonts and detect FOIT?

Open Chrome DevTools, go to the Network tab, filter on Font, and refresh your page in throttling Fast 3G. Observe if your headers and paragraphs remain empty while downloading the .woff2 files. If they do, you are experiencing FOIT.

Another method: inspect your @font-face declarations in the CSS. If you see no font-display property, browsers apply their default behavior, which varies. Chrome does FOIT with a 3s timeout, Safari does unlimited FOIT. You have no control, thus you suffer.

What value of font-display should I choose according to my context?

font-display: swap suits 80% of editorial, e-commerce, and service sites. You guarantee immediate readability and accept a micro-visual flash. It's the choice most aligned with Google's directive.

font-display: fallback works better for sites where visual consistency matters greatly but where you cannot preload all fonts. The swap gets blocked after the short window, avoiding late visual changes that disrupt users already reading.

Should I treat font icons differently from text fonts?

Yes, and this is a commonly overlooked point. Icon fonts (Font Awesome, Material Icons) create catastrophic FOIT: your navigation icons, CTA buttons, rating stars completely disappear. Use font-display: block only for these fonts and preload them as a high priority.

Better yet, migrate to SVG inline or sprites for critical icons. Icon fonts are a technical debt that unnecessarily burdens your CWV. I observe that replacing Font Awesome with optimized SVGs saves 200-400ms of LCP on icon-rich pages.

  • Audit all @font-face declarations and add font-display: swap (or fallback depending on context)
  • Calculate size-adjust metrics for each custom font to match the system fallback
  • Preload with <link rel="preload"> only the 1-2 critical fonts used above-the-fold
  • Test in 3G network throttling the actual swap behavior and measure the CLS impact
  • Consider limiting the number of weights and styles loaded (regular + bold is often sufficient)
  • Migrate critical icon fonts to inline SVG to eliminate this FOIT vector
Transitioning from FOIT to FOUT requires a thorough analysis of your fonts, their weight in visual identity, and a delicate balance between LCP and CLS. These optimizations affect both front-end, server configuration (preload headers), and sometimes the design system itself. If your tech stack is complex or you're managing multiple sites, the support of a specialized SEO agency in web performance can significantly speed up compliance while avoiding classic pitfalls that degrade user experience.

❓ Frequently Asked Questions

Peut-on utiliser font-display: auto au lieu de swap ou fallback ?
La valeur auto laisse le navigateur décider du comportement, ce qui crée des incohérences entre Chrome, Safari et Firefox. Vous perdez le contrôle sur l'expérience utilisateur. Mieux vaut explicitement choisir swap ou fallback selon votre contexte.
Les Google Fonts supportent-elles nativement font-display ?
Oui, ajoutez le paramètre &display=swap à l'URL d'embed Google Fonts. Exemple : https://fonts.googleapis.com/css2?family=Roboto&display=swap. Toutes les polices du fichier CSS généré incluront alors font-display: swap.
Le préchargement des polices suffit-il à éviter le FOIT sans font-display ?
Non. Le preload accélère le téléchargement mais ne change pas le comportement de rendu. Si votre @font-face utilise font-display: block ou n'a pas de font-display, le navigateur cachera quand même le texte pendant le chargement, juste pendant une durée plus courte.
Comment mesurer précisément l'impact du FOUT sur mon CLS ?
Utilisez le Performance Monitor de Chrome DevTools ou des outils comme WebPageTest avec filmstrip activé. Comparez le CLS avant/après implémentation de font-display: swap. Les outils de lab (Lighthouse) peuvent sous-estimer l'impact réel en conditions réseau dégradées.
Dois-je appliquer font-display: swap même aux polices chargées en bas de page ?
Oui pour la cohérence, mais l'impact est moindre. Les polices below-the-fold n'affectent pas le LCP initial. Cependant, elles peuvent impacter le CLS si l'utilisateur scrolle rapidement avant leur chargement complet. Maintenez swap pour garantir la lisibilité immédiate partout.
🏷 Related Topics
Content AI & SEO JavaScript & Technical SEO PDF & Files Search Console

🎥 From the same video 6

Other SEO insights extracted from this same Google Search Central video · duration 44 min · published on 25/01/2018

🎥 Watch the full video on YouTube →

Related statements

💬 Comments (0)

Be the first to comment.

2000 characters remaining
🔔

Get real-time analysis of the latest Google SEO declarations

Be the first to know every time a new official Google statement drops — with full expert analysis.

No spam. Unsubscribe in one click.