Primeira pintura de conteúdo (FCP)

O que o First Contentful Paint mede, qual é uma boa pontuação de FCP, por que ele não é um Core Web Vital, como difere de First Paint e LCP e como corrigir um FCP lento.

Publicado pela primeira vez: 26 de jun. de 2026 · Última atualização: 3 de ago. de 2026 · Avançado
Idiomas

First Contentful Paint (FCP) é o tempo desde o início do carregamento da página até o primeiro momento em que qualquer parte do conteúdo — texto, imagem, SVG ou canvas não branco — é renderizada. Bom é ≤1,8 s no percentil 75 de usuários reais. FCP NÃO é um Core Web Vital: os sinais de ranking são LCP, INP e CLS. FCP é uma métrica diagnóstica (de laboratório e de campo) e um componente do LCP — acontece no mesmo momento ou antes do LCP — portanto é principalmente útil para encontrar recursos que bloqueiam a renderização e TTFB lento. No Lighthouse 10 ele representa 10% da pontuação de Performance. Corrija-o eliminando CSS/JS que bloqueiam a renderização, reduzindo TTFB, colocando CSS crítico inline, usando font-display: swap e fazendo preconnect às origens necessárias.

TL;DR — FCP é o tempo do início da navegação até o primeiro momento em que qualquer conteúdo da página (texto, imagem, <svg> ou <canvas> não branco) é renderizado. Ele não é um Core Web Vital — é uma métrica diagnóstica suplementar, de laboratório e de campo, e um componente do LCP (o FCP acontece no mesmo momento ou antes do LCP). Limites de campo (p75): Bom ≤ 1,8 s, precisa melhorar ≤ 3,0 s, ruim > 3,0 s. No Lighthouse 10 ele representa 10% da pontuação de Performance. Como o relógio do FCP começa na navegação — incluindo tempo de redirecionamento, configuração da conexão e TTFB — os números de laboratório (Lighthouse) e campo (CrUX) frequentemente divergem. Corrija-o onde ele nasce: primeiro CSS/JS que bloqueiam a renderização, depois TTFB, depois fontes.

O que o FCP mede (com precisão)

A definição do Google, do artigo de Philip Walton no web.dev, é a coluna de precisão aqui: “First Contentful Paint (FCP) measures the time from when the user first navigated to the page to when any part of the page’s content is rendered on the screen.” Tradução: “First Contentful Paint (FCP) mede o tempo desde a primeira navegação do usuário até o momento em que qualquer parte do conteúdo da página é renderizada na tela.” “Conteúdo”, segundo a mesma documentação, significa “text, images (including background images), <svg> elements, or non-white <canvas> elements.” Tradução: “texto, imagens (incluindo imagens de fundo), elementos <svg> ou elementos <canvas> não brancos.”

A palavra que faz todo o trabalho é qualquer. O FCP não se importa com o que renderiza — um logotipo de 40 pixels conta tanto quanto uma imagem hero completa. É o sinal “já há alguma coisa na tela?”, exatamente por isso é um indicador inicial, não uma métrica de conclusão. Evidence for this claim FCP measures from navigation until the first text, image, SVG, or non-white canvas content is rendered. Scope: Current web.dev FCP definition and qualifying content types. Confidence: high · Verified: web.dev: First Contentful Paint

Um detalhe fácil de perder e que muda como você lê o número: o relógio do FCP começa na navegação, então inclui tudo que acontece antes de seu HTML sequer ser analisado. O Ponto-chave do próprio Google diz: “FCP includes any unload time from the previous page, connection set up time, redirect time, and Time To First Byte (TTFB) which can be significant when measured in the field.” Tradução: “O FCP inclui qualquer tempo de descarregamento da página anterior, tempo de configuração da conexão, tempo de redirecionamento e Time To First Byte (TTFB), que pode ser significativo quando medido em campo.” Um servidor que leva 1,5 s para responder já consumiu a maior parte do seu orçamento de 1,8 s antes de o navegador processar um único byte.

FCP NÃO é um Core Web Vital

Vou ser direto, porque a maioria das páginas faz ressalvas: FCP não é um Core Web Vital e não faz parte dos sinais de ranking do Google. Os Core Web Vitals são LCP, INP e CLS — e FCP não é mencionado em nenhuma parte da página de Core Web Vitals de ranking da Pesquisa Google.

O que FCP é, na taxonomia do Google, é um “Other Web Vital” — uma métrica suplementar útil para diagnóstico. O web.dev coloca assim: “the metrics Time to First Byte (TTFB) and First Contentful Paint (FCP) are both vital aspects of the loading experience, and are both useful in diagnosing issues with LCP (slow server response times or render-blocking resources, respectively).” Tradução: “as métricas Time to First Byte (TTFB) e First Contentful Paint (FCP) são aspectos vitais da experiência de carregamento e ambas são úteis para diagnosticar problemas com LCP (tempos lentos de resposta do servidor ou recursos que bloqueiam a renderização, respectivamente).”

Portanto, o enquadramento honesto para as partes interessadas tem dois lados, e você deve declarar ambos sem hesitar:

  • FCP não afeta rankings diretamente. Não otimize FCP “para SEO”.
  • FCP é um ótimo diagnóstico para LCP, que afeta rankings. Recursos que bloqueiam a renderização aparecem primeiro no FCP.

FCP versus First Paint (FP)

Esses dois são confundidos o tempo todo:

  • First Paint (FP) dispara quando o navegador pinta qualquer coisa — inclusive uma cor de fundo simples sem conteúdo real.
  • FCP dispara apenas quando conteúdo elegível renderiza: texto, imagens (incluindo imagens de fundo), elementos <svg> ou elementos <canvas> não brancos. Esta é uma lista específica, definida pela especificação — não uma regra vaga de “qualquer conteúdo do DOM” — e vale mantê-la precisa, pois uma imagem de fundo conta mesmo não sendo texto no DOM.

Portanto, FP ≤ FCP, sempre. Na maioria das páginas eles são quase idênticos, porque é raro pintar uma cor de fundo sem conteúdo por cima. Quando existe uma diferença significativa, geralmente significa que um fundo cosmético foi pintado antes de qualquer conteúdo real. A Paint Timing API retorna entradas first-paint e first-contentful-paint — mas FCP é o que vale analisar; FP raramente informa algo acionável.

FCP versus LCP

O outro par que as pessoas misturam:

  • FCP = quando qualquer conteúdo é pintado. Dispara cedo. Pode ser um logotipo pequeno ou um link de navegação.
  • LCP = quando o maior elemento na viewport é renderizado. Dispara no mesmo momento ou depois do FCP.

A formulação do Google: FCP mede quando qualquer conteúdo é pintado e LCP quando o conteúdo principal é pintado, então LCP pretende ser mais seletivo. Leia isso como “mais seletivo”, não como “certificado como correto” — nenhuma das métricas prova que o conteúdo principal real da página está completo ou é útil para o visitante. FCP apenas confirma que algo elegível foi pintado; LCP confirma que o maior candidato elegível foi pintado. Uma página pode ter FCP rápido (logotipo em 0,5 s) e LCP lento (imagem hero em 4 s) — essa diferença é um diagnóstico útil por si só. E, se seu FCP estiver próximo do LCP, isso costuma ser um bom sinal: significa que a primeira coisa pintada também é a maior, sem pintura inicial desperdiçada em elementos de interface que não importam para o usuário. Evidence for this claim FCP answers when any eligible content first appears, while LCP tracks the largest eligible viewport candidate; neither metric proves the page's main content is complete or useful. Scope: field and lab Confidence: high · Verified: First Contentful Paint (FCP)

Vale conhecer uma peculiaridade de medição: por causa de restrições de segurança na temporização de imagens de origem cruzada, a API do navegador pode em casos raros informar LCP antes de FCP. Isso é um artefato de medição, não algo que aconteceu fisicamente.

Limites — e por que laboratório e campo discordam

Limites de campo (CrUX, p75): Bom ≤ 1,8 s · precisa melhorar ≤ 3,0 s · ruim > 3,0 s. A orientação do Google é medir no percentil 75 dos carregamentos de página, separado entre dispositivos móveis e desktop. Evidence for this claim A good FCP is 1.8 seconds or less at the 75th percentile; above 3 seconds is poor. Scope: Current web.dev FCP field thresholds. Confidence: high · Verified: web.dev: First Contentful Paint

Mas o Lighthouse desktop usa limites diferentes e mais rígidos — verde é aproximadamente 0–0,9 s, laranja 0,9–1,6 s, vermelho acima de 1,6 s — porque o laboratório executa um Chrome limpo e limitado em um dispositivo simulado, não em condições do mundo real. (Essas faixas, como os pesos da pontuação abaixo, são específicas da versão do Lighthouse — isto reflete a documentação de auditoria atual no momento da redação.) A pontuação FCP do Lighthouse é “a comparison of your page’s FCP time and FCP times for real websites, based on data from the HTTP Archive.” Tradução: “uma comparação do tempo de FCP da sua página com os tempos de FCP de sites reais, baseada em dados do HTTP Archive.”

Esta é a fonte mais comum de confusão sobre FCP, então memorize:

A linha de “bom” em 1,8 s é o limite de campo (CrUX p75). A linha “verde” do Lighthouse desktop é ~0,9 s. São escalas diferentes para trabalhos diferentes.

Os números de campo e de laboratório divergem principalmente porque amostram populações diferentes, não porque um seja universalmente “mais verdadeiro”. O Lighthouse executa uma sessão limpa em condições fixas de dispositivo e rede. Campo/CrUX agrega dispositivos reais, redes reais, estados de cache e tipos de navegação — incluindo restaurações do cache de voltar/avançar e páginas pré-renderizadas, que não recebem automaticamente um FCP novo como uma navegação normal; precisam de seu próprio tratamento de ciclo de vida (a biblioteca web-vitals faz isso por você). Na maioria dos sites, o número de campo é maior — usuários reais carregam cadeias de redirecionamento, tempo de descarregamento da página anterior e conexões frias que o laboratório evita — mas isso é uma tendência, não uma regra. Antes de ler uma diferença de laboratório/campo como problema, confirme que está comparando coisas equivalentes (mesma classe de dispositivo, mesmas condições de rede). Use dados de campo para o número do mundo real e o Lighthouse para o diagnóstico.

Onde o FCP fica na pontuação do Lighthouse

No Lighthouse 10 — a versão atual no momento da redação, não uma cifra permanente — FCP representa 10% da pontuação de Performance. A ponderação completa:

MétricaPeso
Total Blocking Time (TBT)30%
Largest Contentful Paint (LCP)25%
Cumulative Layout Shift (CLS)25%
First Contentful Paint (FCP)10%
Speed Index10%

A pontuação de Performance é uma média ponderada das pontuações individuais das métricas, e o Google observa que os pesos mudam com o tempo à medida que sua pesquisa evolui — FCP permaneceu em 10% do Lighthouse 8 ao 10, mas confirme na versão que você estiver executando antes de tratar “10%” como algo eterno. A leitura prática: um FCP perfeito só consegue mover sua pontuação do Lighthouse até certo ponto — e um FCP ruim frequentemente aponta para um LCP ruim também (eles compartilham causas-raiz), embora isso seja uma sobreposição a verificar, não algo garantido pela pontuação.

O que causa um FCP lento

Em ordem aproximada de prioridade:

  1. Recursos que bloqueiam a renderização — o maior causador. CSS e JS síncrono no <head> obrigam o navegador a esperar: ele não consegue construir o CSSOM e a árvore de renderização, então não consegue pintar nada até esses arquivos serem baixados e analisados.
  2. TTFB alto — FCP não pode disparar antes de os bytes chegarem. Um servidor lento é o primeiro dominó, e está dentro da medição do FCP.
  3. Cadeias de redirecionamento — cada redirecionamento é uma viagem de ida e volta completa adicionada antes do primeiro byte.
  4. Estratégia de carregamento de webfontsfont-display: block (ou nenhuma regra) pode deixar o texto invisível por até ~3 segundos. Mesmo que a pintura dispare tecnicamente sobre um fundo, o usuário não vê nada útil.

Como corrigir

A lista completa, mas com uma ordem de prioridade que a documentação não fornece. Estas são alavancas comuns, não universais — verifique primeiro seu trace ou filmstrip para descobrir qual recurso ou fase realmente está atrasando seu candidato de FCP antes de buscar correções (preconnect, preload ou mudança de font-display) que podem não se aplicar à sua página:

Faça isto primeiro (maiores ganhos):

  • Elimine CSS e JavaScript que bloqueiam a renderização. Coloque o CSS crítico acima da dobra diretamente no <head>; carregue o restante de forma assíncrona; adicione async/defer a scripts não críticos. Reposicionar uma tag <link> não ajuda — o navegador não pintará até todo o CSS ser carregado e analisado, independentemente de onde a tag estiver.
  • Reduza o TTFB (tempo de resposta do servidor). Cache, CDN, uma origem mais rápida — qualquer coisa que entregue o primeiro byte antes reduz diretamente o FCP.
  • Corrija o carregamento de fontes. Use font-display: swap (mostra o texto de fallback imediatamente e troca pela fonte web quando pronta) ou font-display: optional (pula a fonte web se ela ainda não estiver em cache). Evite font-display: block para texto crítico — é o pior para FCP.

Depois organize o restante:

  • Faça preconnect às origens necessárias com <link rel="preconnect"> — estabelecer conexões antecipadas com origens importantes de terceiros pode economizar 100–500 ms.
  • Faça preload de solicitações importantes (<link rel="preload">) para uma fonte crítica ou a imagem LCP.
  • Minifique CSS, remova CSS não utilizado e remova JavaScript não utilizado — arquivos menores são analisados e liberam a pintura mais rapidamente.
  • Evite vários redirecionamentos, payloads de rede enormes, sirva assets estáticos com uma política de cache eficiente, evite um DOM excessivamente grande e minimize a profundidade das solicitações críticas. Higiene geral de payload que alimenta toda primeira pintura.

A cadeia diagnóstica FCP → TTFB → LCP

É assim que eu realmente usaria FCP, e é o enquadramento que a documentação sugere sem desenvolver. Trate as três métricas de carregamento como um único fluxo de trabalho:

  1. FCP alto → verifique recursos que bloqueiam a renderização (CSS/JS no <head>). É a causa mais comum e o ganho mais rápido.
  2. Verifique também o TTFB — como FCP o inclui, um servidor lento infla o FCP antes mesmo de qualquer bloqueio de renderização entrar em cena. A orientação do web.dev: como TTFB precede FCP e LCP, seu servidor deve responder rápido o bastante para que o percentil 75 dos usuários atinja um FCP “bom”.
  3. Esses mesmos problemas frequentemente se propagam para o LCP — a métrica que de fato é sinal de ranking — porque FCP e LCP compartilham causas-raiz com frequência. É uma sobreposição a verificar, não uma garantia: o LCP tem fatores próprios (tamanho, prioridade e caminho de carregamento do seu maior elemento específico), então corrigir as causas do FCP não promete corrigir o LCP. É o lugar certo para começar, não o último passo.

Esse é o valor do FCP para um profissional de SEO: uma leitura barata e antecipada sobre a saúde do caminho de carregamento, antes de a medição mais seletiva do LCP sequer terminar.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.