A Tag Meta Charset

O que <meta charset="utf-8"> faz, por que a especificação HTML exige que ela esteja nos primeiros 1024 bytes, como uma codificação errada causa mojibake, e por que é uma questão de renderização correta e não um fator de ranqueamento.

Publicado pela primeira vez: 2 de jul. de 2026 · Última atualização: 13 de ago. de 2026 · Avançado
Idiomas
1 sinal de evidência nesta página

A tag meta charset — <meta charset="utf-8"> — declara a codificação de caracteres da sua página para que navegadores e rastreadores convertam bytes brutos nos caracteres corretos. A especificação HTML exige que ela esteja nos primeiros 1024 bytes do documento, e a melhor prática é que seja o primeiro filho literal de <head>. Se você errar (ausente, tardia ou com codificação incompatível), você terá mojibake: letras acentuadas, aspas curvas, travessões, scripts não latinos e emojis renderizados como lixo — o que pode corromper o que é exibido e indexado. NÃO é um fator de ranqueamento direto; a única orientação do Google é 'use Unicode/UTF-8 quando possível'. UTF-8 é a codificação quase universal e exigida pela especificação para HTML5 hoje. Um cabeçalho Content-Type enviado pelo servidor com charset substitui a tag na página, o que é uma fonte comum de bugs de migração. Esta é uma das tags voltadas para o navegador no cluster de meta tags.

TL;DR — <meta charset="utf-8"> declara a codificação de caracteres do documento. A especificação HTML do WHATWG exige que a declaração seja serializada completamente dentro dos primeiros 1024 bytes do documento, e para HTML5 o valor deve corresponder a utf-8; a melhor prática é colocá-la como o primeiro filho literal de <head>. Uma codificação ausente, tardia ou incompatível produz mojibake — caracteres acentuados corrompidos, aspas curvas, scripts não latinos e emoji — o que é um problema de renderização e correção de indexação, não um sinal de ranqueamento. A única declaração pública do Google é “use Unicode/UTF-8 quando possível.” Um cabeçalho Content-Type enviado pelo servidor com charset sobrepõe a tag no documento, o que é um bug clássico de mojibake pós-migração. Apenas um elemento meta charset é permitido por documento, e ele não tem efeito em XML. Uma marca de ordem de byte (BOM) UTF-8, se presente, vence tudo; caso contrário, o cabeçalho HTTP vence a tag na página — ordem de precedência completa abaixo.

Evidence for this claim For HTML documents, the charset declaration must identify UTF-8. Scope: Modern HTML conformance requirements. Confidence: high · Verified: WHATWG HTML: Character encoding declaration Evidence for this claim The complete character-encoding declaration must occur within the first 1024 bytes of the document. Scope: HTML serialization requirement intended to make encoding available early to parsers. Confidence: high · Verified: WHATWG HTML: Specifying the document's character encoding

O que é a tag

A declaração de charset informa ao parser qual codificação de caracteres usar ao converter os bytes do documento em texto. O WHATWG HTML Living Standard diz claramente: “The charset attribute specifies the character encoding used by the document. This is a character encoding declaration.” (tradução) «O atributo charset determina a codificação de caracteres empregada pelo documento; esta é a declaração dessa codificação.» A abordagem da MDN é a versão prática: “This attribute declares the document’s character encoding.” (tradução) «Esse atributo declara qual codificação de caracteres o documento utiliza.»

A sintaxe moderna é a forma curta:

<meta charset="utf-8">

Há também uma forma legada pré-HTML5 que você ainda verá em modelos mais antigos:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Ambas declaram a mesma coisa. Em um documento HTML5 moderno, você só precisa da forma curta <meta charset="utf-8"> — usar ambas é redundante, não prejudicial, e a especificação permite apenas um elemento meta que declara charset por documento. (A forma http-equiv é melhor considerada legada do que algo a adicionar do zero; se você estiver auditando uma página que a tenha, ela não está quebrada, apenas antiga.)

Os requisitos da especificação que você realmente precisa saber

UTF-8 é efetivamente obrigatório para HTML5. A MDN afirma diretamente: o “value must be an ASCII case-insensitive match for the string utf-8, because UTF-8 is the only valid encoding for HTML5 documents.” (tradução) «valor deve ser uma correspondência ASCII sem diferenciar maiúsculas de minúsculas para a string utf-8, porque UTF-8 é a única codificação válida para documentos HTML5.» A especificação WHATWG vai além e exige que a codificação real do documento seja UTF-8, independentemente do que é declarado. UTF-8 cobre praticamente todos os scripts além de emoji, por isso a era de codificações por região ISO-8859-1 / Windows-1252 / Shift-JIS acabou para novos trabalhos — elas sobrevivem apenas como casos de compatibilidade legada.

Ele deve estar nos primeiros 1024 bytes do documento. Este é um requisito rígido da especificação, não uma sugestão branda. MDN: <meta> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.” (tradução) «Elementos <meta> que declaram uma codificação de caracteres devem estar localizados inteiramente dentro dos primeiros 1024 bytes do documento.» A razão é mecânica — o parser fareja o fluxo de bytes em busca de uma codificação antes de poder interpretar o restante com segurança. Se a sua declaração aparecer tarde demais, o parser pode já ter se comprometido com uma codificação adivinhada (ou ter que reiniciar, o que custa performance). Observe o enquadramento com cuidado: são os primeiros 1024 bytes do documento inteiro, não apenas do <head>.

Evidence for this claim The complete character-encoding declaration must occur within the first 1024 bytes of the document. Scope: HTML serialization requirement intended to make encoding available early to parsers. Confidence: high · Verified: WHATWG HTML: Specifying the document's character encoding

A melhor prática supera o mínimo da especificação: torne-o o primeiro filho de <head>. Não se contente com “em algum lugar nos primeiros 1024 bytes” — coloque <meta charset="utf-8"> antes do seu <title>, <link>, <script>, <style> e de todas as outras tags. Este é o posicionamento que as ferramentas modernas verificam. Há uma issue aberta no Lighthouse (#10023) propondo uma auditoria que verifica especificamente se <meta charset> é igual a document.head.firstElementChild — ou seja, sinalizando a tag quando ela não é o literal primeiro elemento no head, não apenas quando está ausente. A direção das ferramentas é no sentido de verificar o posicionamento, não apenas a presença.

Apenas um elemento meta charset por documento, e o atributo charset não tem efeito em documentos XML/XHTML (é permitido lá apenas para facilitar a migração de e para XML). Vale uma ressalva se você estiver trabalhando com conteúdo servido como XHTML ou modelos adjacentes a RSS/Atom.

BOM, cabeçalho HTTP, meta tag — a ordem de precedência

Os navegadores não leem apenas a meta tag isoladamente; o algoritmo de detecção de codificação verifica três fontes em uma ordem fixa, e a primeira que fornecer uma resposta vence:

  1. Uma marca de ordem de byte UTF-8 (BOM) — alguns bytes bem no início do arquivo. Se o navegador detectar uma BOM, isso determina a codificação com certeza; nada mais é consultado.
  2. O charset do cabeçalho HTTP Content-Type, se o servidor enviar um e não houver BOM. Isso tem precedência sobre a declaração meta no documento.
  3. A declaração <meta charset> (ou http-equiv legada) no documento, verificada somente se nenhuma das opções acima forneceu uma codificação.
Evidence for this claim A UTF-8 BOM takes precedence over HTTP and in-document declarations; otherwise an HTTP charset has higher precedence than meta, so server and document declarations must agree. Scope: HTML documents, HTTP delivery and rendered metadata as applicable Confidence: high · Verified: Declaring character encodings in HTML

Na prática, BOMs são raras em HTML escrito à mão (são mais comuns como um artefato de certos editores de texto ou ferramentas de exportação de arquivos), então o conflito entre cabeçalho e tag é o que mais afeta: uma página que declara corretamente <meta charset="utf-8"> ainda pode renderizar com caracteres corrompidos se um CDN, proxy reverso ou servidor mal configurado enviar um charset diferente no cabeçalho. É um sintoma clássico logo após uma migração de servidor ou CDN — o HTML não mudou, mas o cabeçalho mudou, e agora o cabeçalho está lutando contra a tag. Ao depurar mojibake, verifique a BOM e o charset do cabeçalho de resposta, não apenas o código-fonte da página.

Meta charset é um fator de ranqueamento para SEO?

Não — e vale ser direto porque o texto de ferramentas de auditoria baseado em medo às vezes sugere o contrário. Este é um pré-requisito de correção de renderização e indexação, não um sinal de ranqueamento.

A orientação do Google aqui é escassa e indireta em comparação com as tags que ele discute constantemente (title, meta description, robots e canonical). Não há uma página dedicada do Google Search Central sobre codificação de caracteres — o tema aparece na referência geral de meta tags compatíveis, na seção sobre Content-Type e charset. A única declaração registrada do Google é uma recomendação, não uma afirmação de ranqueamento: “We recommend using Unicode/UTF-8 where possible.” (tradução) «O Google recomenda usar Unicode/UTF-8 sempre que possível.» Nenhuma declaração literal de Mueller, Illyes, Splitt ou Canel que mencione especificamente meta charset ou mojibake aparece na imprensa especializada ou nos arquivos do Search Off the Record — charset é tratado como higiene básica dos padrões da web, assim como marcação válida, e não como um tópico que exija comentários específicos sobre SEO.

O Bing também não tem uma posição pública distinta sobre a tag on-page; sua documentação referencia UTF-8 apenas para seus próprios formatos de API/feed (arquivos de chave do IndexNow, cabeçalhos de solicitação da Webmaster API), não como orientação sobre o <meta charset> HTML em suas páginas. Como o Bingbot é um parser HTML padrão, a implicação prática é a mesma: siga a regra de UTF-8 / 1024 bytes da especificação HTML.

Então, onde pode te prejudicar? Indiretamente, e somente quando a codificação está genuinamente quebrada: texto ilegível é um problema de qualidade de conteúdo e UX, pode corromper o que aparece nos snippets, e saída severamente quebrada pode parecer quebrada para os sistemas de indexação do Google também. O consenso da indústria, como o próprio guia de meta tags da Ahrefs (por Joshua Hardwick) coloca, é que “a menos que sua página esteja severamente quebrada como resultado de problemas de charset (o que é improvável), o impacto será bastante mínimo.” Corrija porque texto quebrado é ruim, não porque você espera um aumento de ranqueamento.

Como verificar e corrigir

Um caminho de diagnóstico rápido quando você suspeita de um problema de codificação:

  • Ver código-fonte / DevTools. Confirme que <meta charset="utf-8"> existe e é o primeiro filho de <head>. No DevTools, verifique o cabeçalho de resposta Content-Type para um valor de charset — se ele discordar da tag, o cabeçalho vence e é o provável culpado. Descarte também um BOM: é mais raro, mas se presente, ele supera tanto o cabeçalho quanto a tag.
  • Validadores e rastreadores sinalizam. O validador W3C e verificadores baseados em regras (por exemplo, a regra “charset após os primeiros 1024 bytes” do Rocket Validator) apontarão uma declaração tardia ou ausente. Auditorias de site no Ahrefs Site Audit e no Screaming Frog revelam problemas de charset em todo um site.
  • Corrija a camada certa. Se a colocação estiver errada, mova a tag para o topo do head. Se a codificação estiver errada (os bytes em si não são UTF-8, ou o cabeçalho envia um charset conflitante), corrigir apenas a meta tag não ajudará — você precisa recodificar o arquivo como UTF-8 e/ou corrigir o cabeçalho Content-Type do servidor para que o cabeçalho e a tag concordem.

A correção é quase sempre trivial depois que você identifica qual camada está com defeito. Esta é uma parte estável e há muito estabelecida da especificação HTML — não há depreciação recente ou mudança de comportamento de plataforma para acompanhar; a única nuance em evolução é que as ferramentas verificam cada vez mais a colocação, não apenas a presença.

Onde isso se encaixa

A tag charset é um dos elementos de head voltados para o navegador — como a tag viewport, é sobre renderização, não ranqueamento, o que a coloca em um balde diferente das tags ativas para SEO no cluster de meta tags (o elemento title, a meta description e a família robots). É adjacente ao trabalho de internacionalização no qual passo muito tempo: a codificação é a camada por baixo de hreflang e conteúdo multi-script — hreflang diz ao Google qual versão de idioma/região servir, mas se a codificação estiver errada, o texto nessa versão fica ilegível independentemente. Para o mapa completo dos elementos de head agrupados pelo trabalho que fazem, veja o hub de meta tags.

Add an expert note

Pin an expert quote

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