Imagens de fundo são do mal

Por que imagens de fundo prejudicam suas Core Web Vitals e como substituí-las

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-09

Imagens de fundo são do mal

Aqueles que me conhecem ou já me ouviram palestrar podem ter me escutado falar sobre imagens de fundo. Aqueles que não: eu realmente não gosto de imagens de fundo. Aqui está o porquê de eu não gostar de imagens de fundo, como encontrar rapidamente páginas com imagens de fundo e como corrigi-las.

Última revisão por Arjen Karel em março de 2026

Por que imagens de fundo são ruins para as Core Web Vitals

Ao carregar uma página da web, cada elemento tem seu tempo e seu lugar. Com algumas técnicas modernas como adiamento, pré-carregamento, carregamento assíncrono, agendamento, definição de fetchpriority etc etc, podemos ter todos os recursos críticos praticamente sob controle. Exceto pelas imagens de fundo! 

Considere este exemplo do mundo real:

Diariamente, principalmente em sites WordPress, vejo esse padrão. Todas as imagens normais são carregadas via lazy loading e algumas imagens (neste caso, os ícones sociais no rodapé) são imagens de fundo. Você consegue adivinhar o que acontece?

<html>
<head>
    <style>
        footer {
            /* a margin of 100 vh wil make the footer off-screen !*/
            margin-top: 100vh;
            >.social {
                >.facebook {background-image: url('img/facebook.jpg');}
                >.instagram {background-image: url('img/instagram.jpg');}
                >.linkedin {background-image: url('img/linkedin.jpg');}
                >.email {background-image: url('img/email.jpg');}
            }
        }
    </style>
</head>
<body>
    <!-- yes this image is lazy loaded, because tiny mistakes happen! -->
    <img loading="lazy" src="img/hero.jpg"></img>
    <footer>
        <div class="social">
            <span class="facebook"></span>
<span class="instagram"></span>
<span class="linkedin"></span>
<span class="email"></span>
</div> </footer> </body> </html>

Você deve ter adivinhado: as imagens de fundo fora da tela são colocadas na fila para download antes da imagem 'hero.jpg' muito mais importante que geralmente se tornará o elemento de Largest Contentful Paint na página.

Mas isso não é tudo!

Como eu disse, imagens de fundo são do mal! Isso porque, além da prioridade estranha que elas às vezes recebem, as imagens de fundo não possuem os recursos legais que as imagens normais têm!

  • Sem lazy loading: não há atributo de carregamento para imagens de fundo. O atributo loading="lazy" que funciona em tags <img> (com 94.9% de suporte global) simplesmente não existe para fundos.
  • Sem async decoding: não há atributo de decoding para imagens de fundo
  • Sem fetchpriority: não há atributo de fetchpriority para imagens de fundo. Você não pode dizer ao navegador qual imagem de fundo é mais importante. Com tags <img>, 17.3% das páginas mobile já usam fetchpriority="high" em sua imagem LCP, de acordo com o Web Almanac 2025.
  • Fontes de imagens responsivas: A função image-set() para imagens de fundo não tem os mesmos recursos que você obtém com srcset e o elemento <picture>.
  • Sem atributo width e height. Não ser capaz de definir o simples atributo de width e height significa que o navegador não pode reservar espaço para a imagem, o que causa Cumulative Layout Shift (CLS). Você acaba usando soluções alternativas em CSS, e mais código é sempre mais lento do que menos código com a mesma complexidade!
  • Sem alt text: imagens de fundo não possuem o atributo alt, o que prejudica a acessibilidade e significa que o Google Imagens não pode indexá-las.

Imagens de fundo carregadas via url() são candidatas válidas de LCP. Uma imagem de fundo lenta aparecerá como seu LCP, mas você não tem nenhuma das ferramentas acima para otimizá-la. O navegador deve primeiro baixar e analisar o CSS antes mesmo de saber que a imagem existe. Esse atraso no carregamento do recurso adiciona cerca de 400ms ao LCP mediano de acordo com as próprias medições do Google.

De acordo com o Web Almanac 2025, 9% das páginas mobile ainda usam uma imagem iniciada por CSS como seu elemento LCP. Esse número não mudou desde 2022. Em sites monitorados pelo CoreDash, substituir uma imagem de fundo de destaque (hero) por uma tag <img> melhorou o LCP mediano em 35%.

Como encontrar rapidamente todas as imagens de fundo em uma página

Então, como descobrimos se uma página da web tem imagens de fundo nela? Bem, você poderia verificar o inspetor de rede, filtrar por imagens, clicar com o botão direito na barra de menus, habilitar as colunas de iniciador e verificar o iniciador, mas é muito mais fácil colar esse código no console de desenvolvedor.

Basta abrir o console de desenvolvedor com Ctrl-Shift-I, navegar até a aba do console e colar esse código. Ele mostrará todas as imagens de fundo da página.
let bgimg = performance.getEntriesByType('resource')
  .filter(rs => rs.initiatorType == 'css')
  .map(rs => {
  return {
    name: rs.name,
    initiator: rs.initiatorType
  }
}) || [];

(bgimg.length > 0)?
    console.table(bgimg):
    console.log('No background images on this page!');

Isso mostrará a você uma tabela bem formatada com todos os nomes das imagens de fundo e os iniciadores.

Como evitar imagens de fundo

Imagens de fundo são facilmente evitáveis. Como fazer isso depende da imagem em si. Existem aproximadamente 2 métodos.

No caso de 'imagens normais'

Você não acreditaria se eu te contasse, mas na maioria dos casos em que encontro imagens de fundo, a parte de fundo da imagem nem tem um propósito. As imagens apenas 'precisam estar em algum lugar da página' e o background-image:url() é mal utilizado para esse fim.
Se for esse o caso, basta adicionar uma tag de imagem normal e remover a imagem de fundo da folha de estilos.

No caso de imagens de capa (cover images):

Imagens de capa são imagens que cobrem completamente um contêiner pai. Usar imagens de fundo como imagens de capa até faz sentido porque, muito tempo atrás, essa costumava ser a única maneira de obter imagens de capa e acho que as pessoas apenas se apegam ao que conhecem. Felizmente, temos opções melhores disponíveis para nós. Então vamos consertar isso!
No caso de cover images basta remover o estilo   background-image: url(hero.jpg); background-size: cover; e colocar uma imagem normal nesse mesmo contêiner e editar o CSS para ficar assim:

<style>
.img-container {
    position: relative;
    > img {
       width: 100%;
       height: 100%;
       object-fit: cover;
       position: absolute;
       z-index: 1;
   }
}
</style>

<div class="img-container">
  <img
       height="500"
       width="300"
       decoding="async"
       loading="lazy"
       src="hero.jpg"
       srcset="hero-320w.jpg, hero-480w.jpg 1.5x"
       alt="alt text"
       fetchpriority="low"
  >
</div>

Agora você tem uma imagem adequada com os atributos width, height, loading, decoding, srcset, fetchpriority e alt. Tudo que o navegador precisa para carregá-la com eficiência.

Quando você deve manter uma imagem de fundo

Às vezes você realmente precisa de uma imagem de fundo em CSS: padrões de repetição, sobreposições decorativas ou casos em que o CMS não oferece outra opção. Nessas situações, faça o preload da imagem para que o navegador a descubra cedo:

<link rel="preload" href="hero.webp" as="image" type="image/webp" fetchpriority="high">

Coloque isso o mais cedo possível no <head>. Para imagens de fundo fora da tela, você pode adiá-las com um IntersectionObserver para que elas só carreguem quando o usuário rolar a página perto delas.

Para verificar se suas alterações realmente melhoram a user experience real, configure o Real User Monitoring. As pontuações de laboratório dizem a você o que deveria ser mais rápido. Os dados de campo de visitantes reais dizem o que realmente é.

About the author

Arjen Karel is a web performance consultant and the creator of CoreDash, a Real User Monitoring platform that tracks Core Web Vitals data across hundreds of sites. He also built the Core Web Vitals Visualizer Chrome extension. He has helped clients achieve passing Core Web Vitals scores on over 925,000 mobile URLs.

CoreDash já vem com MCP.

Conecta no Claude ou em qualquer agente de IA. Pergunta pra ele por que seu INP disparou terça passada.

Vê como funciona
Imagens de fundo são do malCore Web Vitals Imagens de fundo são do mal