FOIT
Embed This Widget
Add the script tag and a data attribute to embed this widget.
Embed via iframe for maximum compatibility.
<iframe src="https://fontfyi.com/iframe/glossary/foit/" width="420" height="400" frameborder="0" style="border:0;border-radius:10px;max-width:100%" loading="lazy"></iframe>
Paste this URL in WordPress, Medium, or any oEmbed-compatible platform.
https://fontfyi.com/glossary/foit/
Add a dynamic SVG badge to your README or docs.
[](https://fontfyi.com/glossary/foit/)
Use the native HTML custom element.
Flash of Invisible Text — when text is hidden until the web font loads. Worse than FOUT for user experience. Prevented by font-display: swap.
FOIT, or Flash of Invisible Text, is the opposite of FOUT. Instead of showing a fallback font while the web font loads, the browser hides all text that depends on the loading font — rendering it completely invisible until the font file arrives. From the user's perspective, they see a page with blank spaces where text should be, sometimes for several seconds on slow connections.
Chrome and Safari historically defaulted to FOIT behavior, hiding text for up to 3 seconds while waiting for web fonts. If the font still hadn't loaded after 3 seconds, they'd fall back to showing system text. This 3-second block window is sometimes called the "FOIT timeout."
The core problem with FOIT is that it prioritizes visual polish over content access. A user on a slow mobile connection might stare at an empty page — unable to read anything — while waiting for a font file that could be 100KB or more. For accessibility and performance, this is generally considered worse than FOUT.
You can trigger FOIT intentionally (though rarely advisably) using:
@font-face {
font-family: 'Playfair Display';
src: url('/fonts/playfair.woff2') format('woff2');
font-display: block; /* Causes FOIT with 3s timeout */
}
font-display: block instructs the browser to hold a block period where text is invisible, then swap to the web font when ready. It's occasionally appropriate for icon fonts where fallback characters would be meaningless symbols rather than readable text.
A middle-ground option is font-display: fallback, which shortens the invisible block period to approximately 100ms before showing the fallback font:
@font-face {
font-family: 'Lora';
src: url('/fonts/lora.woff2') format('woff2');
font-display: fallback; /* ~100ms block, then fallback, no late swap */
}
With fallback, if the font doesn't arrive within the short block window, the browser shows the system font and won't swap later if the font arrives after a swap period has elapsed. This prevents jarring late swaps while avoiding long invisible periods.
For Core Web Vitals optimization, FOIT directly impacts both Largest Contentful Paint (LCP) — by delaying when text content appears — and Cumulative Layout Shift (CLS) if the swap eventually triggers a reflow. Most performance-conscious implementations today avoid FOIT entirely, preferring font-display: swap combined with font preloading and metric overrides to minimize visual disruption.
관련 용어
이 개념을 보여주는 폰트
더 알아보기
FOUT는 폴백 텍스트를 보여주고, FOIT는 아무것도 보여주지 않습니다. 둘 다 폰트 로딩의 부작용이며, 원인과 해결 방법을 다룹니다.
웹 성능CSS의 font-display 디스크립터는 폰트 로딩 중 사용자가 무엇을 보는지 제어합니다. 각 값마다 트레이드오프가 있으며, 올바른 값을 선택하는 방법을 다룹니다.
웹 성능<link rel=preload>를 사용해 브라우저에 가장 중요한 폰트를 알려줍니다. FOUT를 줄이고, LCP를 개선하며, 프리로딩이 언제 도움이 되고 언제 해가 되는지 이해합니다.