ToolActToolAct

Codificador de Entidades HTML

Converta caracteres de entidades HTML online, suporta codificação e decodificação para prevenir ataques XSS

Texto de Entrada
Caracteres: 0
Bytes: 0
Saída
Caracteres: 0
Bytes: 0

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 &lt;) e entidades numéricas (como &#60;). 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

  1. Digite ou cole o texto a ser convertido na caixa de entrada à esquerda
  2. Clique no botão de conversão correspondente para selecionar o método de codificação ou decodificação
  3. O resultado será exibido automaticamente à direita
  4. Clique no botão 'Copiar' para copiar o resultado para a área de transferência

Métodos de Conversão

Codificação de Entidades HTMLConverte < > & «» ' em entidades nomeadas, adequado para prevenção de XSS
Decodificação de Entidades HTMLRestaura entidades nomeadas para os caracteres originais
Codificação de Entidades NuméricasConverte caracteres especiais para a forma de entidade numérica (como &#60;)
Codificação CompletaCodifica todos os caracteres não ASCII, adequado para internacionalização
Decodificação CompletaRestaura todas as formas de entidades HTML

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

Escapar caracteres inseguros antes de inserir texto em HTMLCodifique e-comerciais, colchetes angulares, aspas e apóstrofos como entidades nomeadas para que textos copiados de usuários possam aparecer em exemplos de marcação sem se tornarem tags ou atributos. O texto original nunca é transmitido — cada substituição é feita localmente, permitindo sanitizar documentação interna, textos não publicados ou trechos privados sem enviar o conteúdo a um serviço remoto.
Decodificar entidades encontradas no código-fonte de páginas copiadasAltere para os modos de decodificação de entidade, numérica ou completa para converter &amp;lt;, &#60; e outros trechos codificados de volta em texto legível durante depuração ou limpeza de conteúdo. A decodificação usa o parser DOM da página em um nó destacado, ou seja, a entrada nunca entra em uma requisição de rede e a string reconstruída permanece na mesma aba do navegador.
Escolher entre codificação mínima e completaUse os modos de entidade ou numérica apenas para os caracteres HTML essenciais, ou codificação completa quando caracteres não ASCII também precisam de referências numéricas para sistemas legados. Escolha o modo que corresponde ao conjunto de entidades esperado pelo destino — por exemplo, entidades nomeadas para HTML legível, entidades numéricas para templates CMS antigos e codificação completa para canais de transporte restritos a ASCII.
Codificar e-comerciais e colchetes angulares para colar com segurança em CMSPasse um trecho de código ou template pelo modo de codificação para que &, <, > e aspas se tornem entidades &amp; &lt; &gt; antes de colar em um editor de texto rico, template de e-mail ou campo de site estático que reaplica a entrada como HTML. Como a codificação é uma operação local por regex, o trecho original permanece na página até que você copie explicitamente a saída, o que é útil quando o código contém exemplos confidenciais.
Decodificar JSON dentro de atributos HTML durante inspeçãoAltere para decodificação numérica ou completa para converter &#123; &#x7B; &quot; e sequências semelhantes de volta em caracteres literais ao ler JSON codificado, payloads de webhooks ou strings de atributos extraídas de código-fonte salvo. O JSON decodificado permanece na área de saída à direita; nada é enviado a um endpoint de análise, permitindo inspecionar fragmentos de payloads de logs de produção sem sair do navegador.

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 &amp sem o ;). As referências de caracteres numéricas usam pontos de código Unicode em formato decimal (&#60;) ou hexadecimal (&#x3C;) 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 & (&amp;), < (&lt;), > (&gt;), " (&quot;) e ' (&#39;); observe que &apos; faz parte de XML e HTML5, mas NÃO é válido em HTML 4.01, por isso a OWASP recomenda a forma numérica &#39; 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 &amp;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 &#128512; 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 &amp; &lt; &gt; &quot; &apos; (&apos; é 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 &amp; 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: &lt;script&gt;alert(1)&lt;/script&gt;
Uso:    impede que o navegador interprete o texto como uma tag real ao renderizar conteúdo enviado pelo usuário

Codificação de valores de atributo

Entrada:  <div title="Hello & world">
Saída: &lt;div title=&quot;Hello &amp; world&quot;&gt;
Nota:   aspas e o e comercial dentro do atributo são codificados como entidades para que o valor não consiga escapar das aspas

Exibição de URL em página

Entrada:  search?q=hello&lang=en
Saída: search?q=hello&amp;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 malformada

Caracteres não-ASCII (codificação completa)

Entrada:  caracteres CJK como 中文
Saída: forma numérica UTF-8 completa &#20013;&#25991; (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 diretamente

Perguntas frequentes

Quais caracteres a codificação HTML converte?

Os cinco caracteres reservados do SGML: & vira &amp;, < vira &lt;, > vira &gt;, " vira &quot;, ' vira &#39; (ou &apos;). 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 &#39; e &apos;?

Os dois produzem uma aspa simples. &apos; 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 &#39;. A página emite &#39; por padrão para máxima compatibilidade.

Por que minha saída ainda contém &amp;?

Se a entrada já contém uma entidade HTML como &amp;, codificar produz &amp;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.