Skip to main content
Validação HTML

Um documento não deve incluir mais de um elemento “meta” com um atributo “charset”.

Sobre este problema HTML

O elemento <meta charset> indica ao navegador qual codificação de caracteres usar ao interpretar os bytes do documento HTML. A especificação HTML declara explicitamente que não deve haver mais de um elemento <meta> com um atributo charset por documento. Esta declaração deve aparecer dentro dos primeiros 1024 bytes do documento, pelo que colocá-la como o primeiro filho de <head> (logo após a tag de abertura <head>) é a prática recomendada.

Declarações charset duplicadas acontecem tipicamente quando o código é montado a partir de múltiplos templates, partials ou snippets — cada um contribuindo com o seu próprio <meta charset>. Também pode ocorrer quando um programador adiciona manualmente uma declaração charset sem perceber que já existe uma, ou ao migrar de uma abordagem mais antiga <meta http-equiv="Content-Type"> e adicionar um novo <meta charset> sem remover o equivalente antigo.

Por que isto importa

  • Conformidade com padrões: O padrão WHATWG HTML living standard determina no máximo um <meta charset> por documento. Violar isto produz um erro de validação.
  • Comportamento imprevisível: Quando um navegador encontra declarações charset conflituosas ou duplicadas, o comportamento é indefinido. Embora a maioria dos navegadores modernos use a primeira encontrada, confiar nisto é frágil e pode levar a texto ilegível ou problemas de codificação em casos extremos.
  • Manutenibilidade: Múltiplas declarações charset sinalizam lógica de template desorganizada ou duplicada, tornando a base de código mais difícil de manter.

Como corrigir

  1. Procure no seu documento HTML (incluindo quaisquer templates, layouts ou partials que compõem a saída final) por todas as instâncias de <meta charset> ou <meta charset="...">.
  2. Mantenha exatamente uma declaração <meta charset="utf-8">, colocada como o primeiro elemento dentro de <head>.
  3. Remova todos os outros elementos <meta charset>.
  4. Se também tiver um <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> legado, remova-o — a forma mais curta <meta charset="utf-8"> é o substituto moderno, e ter ambos conta como declarações charset duplicadas.

Exemplos

❌ Incorreto: múltiplas declarações charset

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta charset="utf-8">
  <title>My Page</title>
</head>
<body>
  <p>Hello, world!</p>
</body>
</html>

O segundo <meta charset="utf-8"> desencadeia o erro de validação, mesmo que ambos especifiquem a mesma codificação.

❌ Incorreto: misturar sintaxe charset antiga e nova

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>My Page</title>
</head>
<body>
  <p>Hello, world!</p>
</body>
</html>

Ambos os elementos declaram uma codificação de caracteres, pelo que o validador trata isto como um duplicado.

✅ Correto: declaração charset única

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>My Page</title>
</head>
<body>
  <p>Hello, world!</p>
</body>
</html>

Um único <meta charset="utf-8"> aparece primeiro em <head>, antes de quaisquer outros elementos ou conteúdo. Esta é a abordagem correta e recomendada. UTF-8 é a codificação fortemente recomendada para todos os novos documentos HTML.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.