Codificador de Entidades HTML
Converta caracteres de entidades HTML online, suporta codificação e decodificação para prevenir ataques XSS
Selecione Método de Conversão
O que é Codificação de Entidade HTML?
Codificação de entidade HTML é um mecanismo que converte caracteres especiais em referências de entidades HTML. Em HTML, certos caracteres têm significados especiais (como <, >, &), e se você precisa exibir esses caracteres na página, deve usar codificação de entidade. A codificação de entidade vem em duas formas: entidades nomeadas (como <) e entidades numéricas (como <). Entidades nomeadas são mais legíveis, enquanto entidades numéricas podem representar qualquer caractere Unicode. A codificação HTML importa quando um texto precisa ser inserido em HTML sem ser interpretado como marcação. Caracteres como <, >, &, aspas e apóstrofos podem alterar tags, atributos ou entidades. A ferramenta é útil para exemplos, templates, conteúdo CMS e depuração de problemas ligados a XSS. O contexto continua essencial: texto HTML, atributos, URLs, JavaScript e CSS exigem regras de escape diferentes, então a saída deve ser usada no local correto.
Como Usar
Como usar
- Digite ou cole o texto a ser convertido na caixa de entrada à esquerda
- Clique no botão de conversão correspondente para selecionar o método de codificação ou decodificação
- O resultado será exibido automaticamente à direita
- Clique no botão 'Copiar' para copiar o resultado para a área de transferência
Métodos de Conversão
Atalhos de Teclado
- Ctrl + ECodificação de Entidades HTML
- Ctrl + DDecodificação de Entidades HTML
Dicas de Codificação
- Codifique o texto visível ao usuário antes de inseri-lo no código-fonte HTML, especialmente quando o texto pode conter colchetes angulares, aspas ou e-comerciais.
- A codificação de entidades HTML ajuda a evitar que marcações sejam interpretadas, mas é apenas uma parte da defesa contra XSS e não substitui o escape contextual da saída.
Casos de uso
Princípio técnico
O HTML usa dois tipos de referências de caracteres definidos pelo WHATWG HTML Living Standard. As referências de caracteres nomeadas começam com & e terminam com ;, provenientes da tabela entities.json mantida pelo WHATWG (cerca de 2.231 nomes na especificação atual, incluindo aliases legados sem ponto e vírgula final, como & sem o ;). As referências de caracteres numéricas usam pontos de código Unicode em formato decimal (<) ou hexadecimal (<) e podem codificar qualquer caractere de U+0000 a U+10FFFF, exceto a faixa de surrogates U+D800-U+DFFF. Os cinco caracteres que DEVEM ser escapados para preservar a segurança sintática do HTML são & (&), < (<), > (>), " (") e ' ('); observe que ' faz parte de XML e HTML5, mas NÃO é válido em HTML 4.01, por isso a OWASP recomenda a forma numérica ' para atributos delimitados por aspas duplas que precisam fazer round-trip em parsers legados. A codificação nesta ferramenta é uma substituição em passada única: a ordem importa porque & deve ser escapado primeiro, caso contrário os prefixos de entidade inseridos para < e > seriam re-escapados em &lt;. A decodificação utiliza o parser HTML do navegador atribuindo a entrada ao innerHTML de um elemento destacado e lendo de volta o textContent; isso despacha para a máquina de estados do Tokenizer oficial na especificação HTML (seções 13.2.5.72 Character reference state até 13.2.5.80), que resolve corretamente formas nomeadas, decimais e hexadecimais, incluindo entradas malformadas como ponto e vírgula ausente. A codificação numérica para o modo de codificação completa percorre a string ponto a ponto de código usando String.prototype.codePointAt para lidar com caracteres astrais que ocupam um par de surrogates UTF-16 (por exemplo, emoji U+1F600 se torna 😀 e não o fallback de dois surrogates). A prevenção de XSS requer escape consciente do contexto, não apenas codificação de entidades HTML. O OWASP Cross-Site Scripting Prevention Cheat Sheet define cinco contextos distintos: corpo HTML, atributo HTML (entre aspas ou sem aspas), dados JavaScript (dentro de <script>), CSS e URL. O escape de entidades HTML cobre apenas os contextos 1 e 2. Contextos JavaScript devem usar escapes \xHH ou \uHHHH via JSON.stringify, contextos URL precisam de encodeURIComponent (percent-encoding RFC 3986), e manipuladores de eventos inline combinam as regras porque seus valores passam pelos parsers HTML e JavaScript. Um cabeçalho Content-Security-Policy com script-src 'self' e 'unsafe-inline' removido é a camada moderna de defesa em profundidade que captura erros de escape, e sinks do DOM como innerHTML, document.write e setAttribute('on*', ...) devem ser substituídos por textContent ou bindings gerenciados por framework (JSX do React, mustache do Vue) que escapam por padrão.
- Referências nomeadas: cerca de 2.231 entradas no entities.json do WHATWG; os cinco nomes que devem ser escapados são & < > " ' (' é apenas HTML5/XML, não HTML 4.01)
- Referências numéricas: decimal &#DDDDD; e hexadecimal &#xHHHH; cobrem U+0000 a U+10FFFF; surrogates U+D800-U+DFFF e U+0000 NULL são inválidos conforme a especificação HTML
- Ordem de escape: & deve ser substituído primeiro, caso contrário o prefixo & inserido nos escapes subsequentes é duplamente codificado; a codificação é O(n) com uma tabela de lookup de 5 entradas
- Decodificação via DOMParser: atribuir ao innerHTML de um elemento destacado invoca o tokenizer da especificação HTML (Character reference state, seções 13.2.5.72-80) que lida com entidades legadas sem ponto e vírgula final
- Tratamento de caracteres astrais: use String.prototype.codePointAt e iteração for...of para que emoji e caracteres CJK extension B (U+10000+) produzam um único &#NNNNN; em vez de duas referências de surrogate
- Escape consciente do contexto (regra #0 do OWASP XSS Prevention Cheat Sheet): corpo HTML, atributo HTML, JavaScript, CSS e URL cada um precisa de escape diferente; entidades HTML sozinhas não impedem XSS em sinks JS ou URL
- Defesa em profundidade: Content-Security-Policy script-src 'self' (estilo RFC), sanitização allowlist do DOMPurify para entrada de texto rico, e preferir textContent/innerText sobre innerHTML em código DOM vanilla
Exemplos
Codificação básica de elementos
Entrada: <script>alert(1)</script>
Saída: <script>alert(1)</script>
Uso: impede que o navegador interprete o texto como uma tag real ao renderizar conteúdo enviado pelo usuárioCodificação de valores de atributo
Entrada: <div title="Hello & world">
Saída: <div title="Hello & world">
Nota: aspas e o e comercial dentro do atributo são codificados como entidades para que o valor não consiga escapar das aspasExibição de URL em página
Entrada: search?q=hello&lang=en
Saída: search?q=hello&lang=en
Uso: a página deve codificar o & antes de inserir a URL no HTML, caso contrário o parser pode tratar o restante como uma entidade malformadaCaracteres não-ASCII (codificação completa)
Entrada: caracteres CJK como 中文
Saída: forma numérica UTF-8 completa 中文 (ou entidades nomeadas, se a página as suportar)
Uso: incorporação segura de Unicode arbitrário em HTML legado; páginas modernas geralmente usam UTF-8 diretamentePerguntas frequentes
Quais caracteres a codificação HTML converte?
Os cinco caracteres reservados do SGML: & vira &, < vira <, > vira >, " vira ", ' vira ' (ou '). Opcionalmente, caracteres não-ASCII podem ser convertidos em entidades numéricas (&#xNN;) para sistemas legados que não lidam com UTF-8.
Quando preciso de codificação HTML?
Sempre que texto fornecido pelo usuário for inserido em conteúdo HTML. Não codificar é a causa raiz das vulnerabilidades XSS. Codifique conteúdo do usuário no corpo do HTML, em valores de atributo, contexto JavaScript, contexto CSS e contexto de URL — cada contexto tem regras um pouco diferentes.
Qual a diferença entre ' e '?
Os dois produzem uma aspa simples. ' foi adicionado no HTML5, mas não é válido em HTML4 nem em clientes de e-mail antigos — se sua saída for lida por sistemas antigos, use '. A página emite ' por padrão para máxima compatibilidade.
Por que minha saída ainda contém &?
Se a entrada já contém uma entidade HTML como &, codificar produz &amp; — o que está correto, porque o & da entrada era um caractere literal, não uma entidade. Decodifique primeiro se sua origem já estiver com entidades.
Os emojis são convertidos?
Emojis são Unicode válido e o HTML moderno os trata como caracteres comuns — não precisa codificar, a menos que seu sistema de destino exija somente ASCII. Ative 'entidade numérica para não-ASCII' para convertê-los para a forma &#xNNNN;.
Codificação HTML é o mesmo que codificação de URL?
Não. A codificação de URL (percent-encoding) substitui caracteres inseguros por sequências %NN para uso em URLs. A codificação HTML os substitui por entidades nomeadas ou numéricas para uso em HTML. Use a ferramenta certa no contexto certo — misturá-las gera bugs de codificação dupla.
A conversão é feita localmente?
Sim. A codificação e decodificação rodam no seu navegador. O texto colado não é enviado.