How to Fix LCP Issues in H1 or Textual Elements
Headlines and large text blocks can be major LCP bottlenecks. Learn how to optimize fonts, CSS, and rendering to improve performance.

Largest Contentful Paint (LCP) is one of the most important Core Web Vitals and a direct ranking factor in Google Search. While images and hero banners are often blamed for slow rendering, many websites face the opposite challenge: the LCP is triggered by the H1 or a large textual block.
When text is the largest element above the fold, its render path depends on font loading, CSS application, and server delivery. Even a small delay in any of these steps can compromise LCP and negatively affect both SEO and user experience.
Quick fixes like changing the font or installing a cache plugin don’t address the root of the problem. To solve LCP issues in text, you need to optimize the font pipeline, configure font-display
, implement Critical CSS, and decide whether fonts should be hosted locally or delivered via Google.

Estratégias superficiais como simplesmente trocar a fonte ou instalar um plugin de cache não resolvem a raiz do problema do LCP no H1. É necessário pensar em pipeline de fontes, configuração de font-display
, Critical CSS e decisões arquitetônicas sobre onde hospedar os arquivos.
The role of fonts in LCP
Font loading is often the main bottleneck when the H1 defines the LCP. Using Google Fonts in their default setup adds external requests and network latency. Hosting fonts locally eliminates this dependency and allows better compression and control.
Font optimization strategies
Strategy | Advantage | Risk/Observation |
---|---|---|
Google Fonts default | Easy to implement | Extra latency on every request |
Google Fonts with display=swap | Text appears quickly with fallback | May cause FOUT (flash of unstyled text) |
Self-hosted (server) | Reduces latency and relies only on your environment | Requires version control and compression |
Preload critical fonts | Ensures top priority for the H1 font | Overuse can block other resources |
Critical CSS and early rendering
In many cases, the delay is not in the fonts but in heavy CSS files blocking render. Critical CSS solves this by inlining only the styles needed to render the H1 and other key elements, while loading the rest of the stylesheet asynchronously.
Best practices:
- Inline the critical CSS in the
<head>
. - Load the full CSS asynchronously with
media="print"
+onload
. - Use tools such as Penthouse or Critical to automate CSS extraction.
Example: Preload fonts (self-hosted or Google Fonts with adjustments)
<!-- Preconnect para reduzir latência -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Preload da fonte crítica usada no H1 -->
<link rel="preload" href="/fonts/Mulish-Bold.woff2" as="font" type="font/woff2" crossorigin>
<!-- Importação otimizada do Google Fonts com display=swap -->
<link href="https://fonts.googleapis.com/css2?family=Mulish:wght@700&display=swap" rel="stylesheet">
HTMLWhat happens here:
- The browser connects early to the font server (preconnect).
- The H1 font is downloaded with priority (preload).
display=swap
ensures the headline appears quickly with a fallback font while the custom font finishes loading.
Exemplo de Critical CSS inline + CSS assíncrono
<head>
<!-- Critical CSS inline (apenas o necessário para renderizar o H1 rápido) -->
<style>
h1 {
font-family: 'Mulish', sans-serif;
font-weight: 700;
font-size: 2.5rem;
color: #111;
margin: 0;
}
</style>
<!-- CSS completo carregado de forma assíncrona -->
<link rel="stylesheet" href="/css/styles.css" media="print" onload="this.media='all'">
<noscript><link rel="stylesheet" href="/css/styles.css"></noscript>
</head>
HTMLWhat happens here:
- The browser can already render the H1 immediately with the critical styles.
- The full CSS is downloaded in parallel but only applied afterward (media=print hack).
- If the user has JavaScript disabled, the
<noscript>
fallback ensures normal loading.
Advanced tip: smart font fallback
Always define a fallback font chain for your H1:
h1 {
font-family: 'Mulish', 'Segoe UI', Roboto, Arial, sans-serif;
}
HTMLIf the custom font is delayed, the browser uses a system font, preserving visual consistency and reducing LCP impact.
Checklist to avoid LCP issues in text
- Self-host fonts whenever possible.
- Use WOFF2 + Brotli compression.
- Configure
font-display=swap
oroptional
. - Preload fonts used in the H1 or first viewport.
- Inline Critical CSS for key elements.
- Load non-critical CSS asynchronously.
- Validate results in Lighthouse and CrUX field data.
FAQ about LCP on H1 or texts elements
LCP measures the time it takes for the largest visible element in the viewport to render. It is part of Google’s Core Web Vitals and directly affects ranking and user experience.
In most cases, yes. It ensures the text is displayed immediately with a fallback, even if the custom font takes longer to load.
Self-hosting is usually faster because it removes external requests. Just remember to use compression and preload.
Not mandatory, but highly recommended. It can significantly reduce LCP, especially on sites with heavy stylesheets.