Verificador de charset
Cole uma URL e veja qual codificação a página declara — e se ela está declarada a tempo.
A página é buscada pelo servidor do DevTools. Só funciona com URLs públicas.
O que é
A tag <meta charset="utf-8"> declara em qual codificação os bytes do documento devem ser interpretados. Ela tem uma exigência de posição que quase nenhuma outra tag tem: precisa aparecer dentro dos primeiros 1024 bytes do HTML. A razão é que o navegador começa a interpretar bytes antes de terminar de ler o arquivo, e ao encontrar a declaração tarde demais ele precisa descartar tudo e recomeçar.
Por que importa
Sem declaração, o navegador adivinha a codificação — e em conteúdo em português a adivinhação erra de um jeito muito visível: "informação" vira "informação", ou aparece o losango preto com ponto de interrogação. O estrago não fica no navegador. O Google indexa o texto como ele foi decodificado, então o title e a description exibidos na busca saem corrompidos, e a página passa a competir com palavras que ninguém digita. É o tipo de erro que parece cosmético e afeta ranqueamento de verdade.
Como corrigir
- Coloque <meta charset="utf-8"> como a primeira tag dentro do <head>, antes de qualquer <title> ou <link>.
- Use UTF-8, não ISO-8859-1 nem Windows-1252. UTF-8 cobre acentuação portuguesa, emoji e qualquer alfabeto, e é o padrão assumido pela web moderna.
- Confira se o servidor também envia o cabeçalho Content-Type: text/html; charset=utf-8. O cabeçalho HTTP tem precedência sobre a meta tag, então um servidor mal configurado sobrepõe a declaração correta do HTML.
- Garanta que os arquivos estejam de fato salvos em UTF-8. Declarar uma codificação e gravar em outra produz exatamente o mesmo texto quebrado.
- Prefira UTF-8 sem BOM. O marcador de ordem de bytes no começo do arquivo pode vazar como caractere invisível antes do <!DOCTYPE> e desencadear o modo de compatibilidade do navegador.
- Verifique também a codificação da conexão com o banco de dados. Página em UTF-8 lendo de uma coluna em latin1 quebra o acento no caminho, sem nenhum erro aparente no HTML.
Charset na primeira posição do head
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Informação e acentuação corretas</title>
</head>Perguntas frequentes
- Por que os acentos do meu site aparecem como ç e ã?
- Porque o conteúdo está gravado em UTF-8 mas sendo interpretado como ISO-8859-1 ou Windows-1252. Cada caractere acentuado, que em UTF-8 ocupa dois bytes, é lido como dois caracteres separados. A correção é declarar UTF-8 na meta tag e no cabeçalho Content-Type do servidor.
- O charset precisa mesmo estar nos primeiros 1024 bytes?
- Sim, é o que a especificação HTML determina. O navegador só examina esse trecho inicial procurando a declaração; encontrando depois, ele já começou a decodificar com um palpite e precisa reprocessar o documento. Por isso a recomendação é deixá-la como a primeira tag do head.
- Meta charset ou cabeçalho HTTP: qual vale?
- O cabeçalho HTTP tem precedência. Se o servidor envia charset=iso-8859-1 e o HTML declara utf-8, vale o do servidor e o texto quebra mesmo com a meta tag certa. O ideal é que os dois digam UTF-8.
- UTF-8 com ou sem BOM?
- Sem BOM. Na web ele não traz benefício e pode causar problema: os bytes iniciais podem ser emitidos antes do DOCTYPE, jogando o navegador em quirks mode, ou aparecer como caractere invisível no começo da página.
Outras checagens
Ferramentas relacionadas
- Analisador de cabeçalhos HTTP — confira o Content-Type enviado pelo servidor
- Escape e unescape — inspecione caracteres que chegaram corrompidos
- Todas as checagens de SEO