Skip to content

Codificador de Entidades HTML — Escapar HTML

Codifique entidades HTML e escape caracteres especiais (< > & " ') online — grátis, sem cadastro, 100% no seu navegador. Saída nomeada, decimal ou hex; nada é enviado.

Sem rastreamento Roda no navegador Grátis

Seu texto é codificado localmente no seu navegador e nunca é enviado, registrado ou armazenado. Ele permanece neste dispositivo.

Opções · Opções de formato e codificação
Formato de entidade
0 caracteres
HTML codificado
0 caracteres
Revisado quanto à correção da especificação de codificação de entidades (nomeada / decimal / hex), ao escape seguro contra XSS dos cinco caracteres especiais em contextos HTML e de atributo, à convenção do apóstrofo ' segura por compatibilidade, à privacidade sem rede/sem armazenamento da entrada e à acessibilidade (controles rotulados, anúncios em região ativa na codificação e na cópia). — Equipe de Codificação da Go Tools · Jun 17, 2026

O Que É a Codificação de Entidades HTML?

A codificação de entidades HTML — também chamada de escape de HTML — é o processo de substituir caracteres que têm significado especial em HTML por uma representação textual segura chamada entidade, para que o navegador os exiba como texto literal em vez de interpretá-los como marcação. Os cinco caracteres que mais importam são os que o HTML usa para estruturar um documento: os sinais de menor e maior < e > que abrem e fecham tags, o E comercial & que inicia uma entidade e as aspas " e ' que delimitam valores de atributo. Quando qualquer um deles aparece em conteúdo que deve ser exibido em vez de executado, precisa ser escapado, ou o navegador lerá a página errado — na melhor das hipóteses seu texto renderiza errado, na pior um atacante insere uma tag <script>.

Vale ser preciso sobre o que esta ferramenta faz. Ela codifica texto em entidades; não monta nem formata um documento. Se você quer ler uma string de código numa página como texto puro, ou está inserindo entrada fornecida pelo usuário no seu HTML e precisa neutralizá-la, esta é a ferramenta certa. Se, em vez disso, você quer indentar e arrumar marcação existente, esse é o trabalho do Formatador HTML; e para transformar entidades de volta em caracteres, use o Decodificador de Entidades HTML.

Há três formas de escrever qualquer entidade, e elas são intercambiáveis. Uma referência nomeada usa um rótulo amigável (< para <, © para ©); uma referência numérica decimal escreve o ponto de código Unicode do caractere na base 10 (< para <); e uma referência hexadecimal escreve o mesmo ponto de código na base 16 (< para <), correspondendo à notação U+XXXX do padrão Unicode. As entidades nomeadas se leem melhor, mas existem apenas para caracteres com um nome definido; as entidades numéricas podem representar qualquer ponto de código, e é por isso que são a alternativa segura. A tabela abaixo lista as entidades que você usará com mais frequência:

| Caractere | Nomeada | Decimal | Hex | |-----------|-------|---------|-----| | < | &lt; | &#60; | &#x3C; | | > | &gt; | &#62; | &#x3E; | | & | &amp; | &#38; | &#x26; | | " | &quot; | &#34; | &#x22; | | ' | &#x27; | &#39; | &#x27; | | (espaço) | &nbsp; | &#160; | &#xA0; | | © | &copy; | &#169; | &#xA9; | | ® | &reg; | &#174; | &#xAE; | | ™ | &trade; | &#8482; | &#x2122; | | € | &euro; | &#8364; | &#x20AC; | | £ | &pound; | &#163; | &#xA3; | | — | &mdash; | &#8212; | &#x2014; | | – | &ndash; | &#8211; | &#x2013; | | … | &hellip; | &#8230; | &#x2026; | | é | &eacute; | &#233; | &#xE9; |

Note que o apóstrofo é escrito ' (ou ') em vez de ': o nomeado ' só foi padronizado no HTML5 e no XML e é inseguro em analisadores HTML4 antigos, então a forma numérica — compreendida em todo lugar — é a escolha compatível. Esta ferramenta segue a mesma convenção da amplamente usada biblioteca he, e é por isso que a saída padrão para ' é '.

A distinção entre um conjunto de caracteres e uma entidade vale a pena guardar, porque explica a opção "Codificar tudo não-ASCII". Um charset (como o UTF-8) determina como os caracteres são armazenados como bytes; uma entidade é uma forma de escrever um caractere usando apenas os caracteres ASCII simples & # ; e letras ou dígitos. Numa página UTF-8 moderna, é, — e 😀 são caracteres brutos válidos e não precisam de entidade alguma — e é por isso que o modo padrão os deixa em paz. Você só os força em entidades quando o texto precisa passar por um sistema que não lida com UTF-8 bruto, caso em que todo ponto de código não-ASCII é reescrito como uma referência numérica ou nomeada segura para ASCII. E como tudo isso roda no seu navegador, a marcação que você escapa — mesmo um modelo privado ou um rascunho não publicado — nunca atravessa a rede. Para conversões relacionadas, as ferramentas Escape JSON e Codificar / Decodificar Base64 tratam do escape para strings JavaScript e do transporte seguro para binários, respectivamente.

// Server-side templates auto-escape, but when you build HTML by hand you must escape yourself.
// The five reserved characters and their safe entities:
//   <  →  &lt;     >  →  &gt;     &  →  &amp;     "  →  &quot;     '  →  &#x27;

// Node.js — escape untrusted input before inserting it into HTML element content.
function escapeHtml(str) {
  return str
    .replace(/&/g, '&amp;')   // & first, so later entities are not double-escaped
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#x27;'); // numeric form — safe in HTML4, HTML5 and XML
}

const userInput = `<a href="x">Tom & Jerry's</a>`;
const safe = escapeHtml(userInput);
// → &lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&#x27;s&lt;/a&gt;
document.getElementById('out').innerHTML = `<p>${safe}</p>`; // renders as literal text

// ---------------------------------------------------------------
// In practice, prefer the platform's built-in escaping where it exists:
//   - React / Vue / Angular escape interpolated text by default
//   - Use textContent instead of innerHTML when you only need text:
//       el.textContent = userInput;  // the browser escapes for you
//   - Server frameworks (Jinja, ERB, Blade) auto-escape unless you opt out

Principais Recursos

Escapa Corretamente os Cinco Caracteres Reservados

< > & " ' são convertidos em suas entidades seguras exatamente como uma biblioteca robusta de prevenção de XSS faria — incluindo o ' seguro por compatibilidade para o apóstrofo em vez do ' inseguro no HTML4. Este é o conjunto preciso que neutraliza entrada não confiável em contextos de elemento e atributo HTML.

Saída Nomeada, Decimal e Hex

Obtenha os mesmos caracteres como entidades nomeadas legíveis (<, ©), referências numéricas decimais (<) ou referências hexadecimais (<). Escolha a forma que seu sistema consumidor espera; as três resolvem para caracteres idênticos quando analisadas.

Modo Opcional de Codificar Tudo Não-ASCII

Por padrão, apenas os caracteres reservados são escapados, mantendo acentos e emojis como UTF-8 bruto legível. Marque uma caixa para converter todo ponto de código acima de 0x7F numa entidade segura para ASCII, voltada a charsets legados ou sistemas que corrompem UTF-8.

Codificação Ao Vivo e Instantânea

A saída atualiza conforme você digita — sem botão de envio, sem latência de ida e volta. Cole um grande bloco de marcação e o resultado escapado aparece imediatamente, pronto para copiar.

Referência Rápida de Entidades Integrada

Uma tabela de referência das entidades mais comuns — os cinco reservados mais ©, ®, ™, €, —,   e outros — fica na própria página em forma nomeada, decimal e hex, para você nunca precisar consultar uma entidade em outro lugar.

Troca para o Decodificador com Um Clique

Inverter direção salta direto para o Decodificador de Entidades HTML para reverter a operação. Codificar e decodificar são inversos exatos, então você pode fazer um ciclo de ida e volta do texto sem perda.

100% Privado, Só no Navegador

Toda a codificação acontece no seu dispositivo com JavaScript — sem requisições de rede, sem registro, sem armazenamento, verificável no DevTools → Network. Marcação privada, modelos de e-mail e rascunhos não publicados nunca saem da aba.

Disponível em 15 Idiomas

A interface completa — rótulos, instruções e orientações — está localizada em 15 idiomas, para que a ferramenta e seu conselho sobre escape sejam claros não importa onde sua equipe trabalhe.

Exemplos Práticos

Escapar um trecho de HTML (o modo padrão "caracteres especiais")

<a href="x">Tom & Jerry's</a>
&lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&#x27;s&lt;/a&gt;

No modo padrão "caracteres especiais", o codificador reescreve apenas os cinco caracteres que têm significado na marcação HTML: < vira <, > vira >, & vira &, " vira " e ' vira '. O apóstrofo é emitido como o numérico ' em vez do nomeado ', porque ' não está definido no HTML4 e analisadores antigos podem engasgar com ele, enquanto a forma hex é universalmente compreendida. Após a codificação, o navegador renderiza a string como texto literal — a tag <a> é exibida, não clicada — que é exatamente como você mostra marcação dentro de uma página com segurança.

Caracteres não-ASCII são preservados no modo padrão

Visit our café — it's 😀
Visit our café — it&#x27;s 😀

O modo "caracteres especiais" toca apenas nos cinco caracteres HTML reservados, então letras acentuadas (café), o travessão (—) e o emoji (😀) passam inalterados. Isso mantém a saída legível e leve em bytes, que é o que você quer para páginas UTF-8 que já declaram <meta charset="utf-8">. Apenas o apóstrofo em "it's" é escapado, para '. Se você precisar converter cada caractere não-ASCII numa entidade para um charset legado, marque "Codificar tudo não-ASCII" — veja o exemplo abaixo.

Entidades numéricas decimais

<>&"'
&#60;&#62;&#38;&#34;&#39;

Mude o formato para Decimal e cada caractere especial é escrito como uma referência numérica de caractere em decimal: < é <, > é >, & é &, " é " e ' é '. As entidades decimais são a forma numérica mais amplamente compatível — todo analisador HTML e XML em conformidade as entende — o que as torna uma escolha segura quando você não tem certeza de que entidades nomeadas como © são suportadas pelo sistema consumidor.

Entidades numéricas hexadecimais

<>&"'
&#x3C;&#x3E;&#x26;&#x22;&#x27;

O formato Hex escreve cada caractere como uma referência numérica hexadecimal: < é <, > é >, & é &, " é " e ' é '. Hex e decimal são intercambiáveis — ambos referenciam o mesmo ponto de código Unicode — mas o hex mapeia um a um na notação U+XXXX que você vê no padrão Unicode, então é a forma que muitos desenvolvedores preferem ao documentar ou raciocinar sobre pontos de código específicos.

Codificar todos os caracteres não-ASCII

café
caf&eacute;  (named)  ·  caf&#233;  (decimal)  ·  caf&#xE9;  (hex)

Marque "Codificar todos os caracteres não-ASCII" e todo ponto de código acima de 0x7F é convertido numa entidade, não só os cinco reservados. O é em café vira o nomeado é, o decimal é ou o hex é, conforme o formato escolhido — os três referenciam o mesmo caractere, U+00E9. Esse modo serve para páginas servidas num charset não-Unicode, ou para sistemas que corrompem UTF-8 bruto, onde forçar tudo em entidades ASCII de 7 bits garante que o texto sobreviva ao transporte intacto.

Como Usar o Codificador de Entidades HTML

  1. 1

    Cole seu HTML ou texto

    Coloque a marcação ou o texto puro que você quer escapar na caixa de entrada. A saída codificada atualiza ao vivo conforme você digita — não há botão de envio e nada é mandado a lugar nenhum.

  2. 2

    Escolha o formato de entidade

    Nomeado é o padrão legível (<, &, ©). Mude para Decimal (<) ou Hex (<) quando um sistema consumidor preferir referências numéricas ou você não puder garantir que entidades nomeadas sejam suportadas.

  3. 3

    Opcionalmente, codifique tudo não-ASCII

    Deixe isto desligado para páginas UTF-8 modernas, para que acentos e emojis permaneçam como caracteres brutos legíveis. Marque apenas quando o texto precisar sobreviver a um charset legado de byte único, o que converte todo caractere acima de 0x7F numa entidade segura para ASCII.

  4. 4

    Copie o resultado codificado

    Clique em Copiar para colocar a string escapada na sua área de transferência, pronta para colar num modelo, numa página de documentação ou num campo de banco de dados. Limpar reinicia ambos os painéis para o próximo trecho.

  5. 5

    Precisa do inverso? Inverta a direção

    Use Inverter direção para mudar para o Decodificador de Entidades HTML quando quiser transformar entidades de volta nos caracteres que elas representam.

Erros Comuns de Codificação HTML

Escapou o E comercial por último, causando escape duplo

Se você substituir < e > antes de &, as entidades que acabou de criar têm seu & reescapado, então < vira &lt; e renderiza como texto literal. Sempre escape & primeiro.

✗ Incorreto
replace < and > first, then &  →  &lt;  becomes  &amp;lt;
✓ Correto
escape & first, then the rest  →  &lt;  stays  &lt;

Usou ' para o apóstrofo em contextos legados

' é indefinido no HTML4 e alguns clientes de e-mail o mostram literalmente. Use o numérico ' ou ', que todo analisador entende, ao mirar ambientes mais antigos ou mistos.

✗ Incorreto
It&apos;s here  →  may render as  It&apos;s here
✓ Correto
It&#x27;s here  →  renders as  It's here

Codificou os dados duas vezes

Rodar texto já escapado pelo codificador de novo o codifica em dobro: & vira &amp; e o usuário vê & em vez de &. Escape exatamente uma vez, no momento da saída.

✗ Incorreto
&amp;  encoded again  →  &amp;amp;  shows as  &amp;
✓ Correto
&amp;  left as-is  →  renders as  &

Usou escape HTML para um contexto de URL ou JavaScript

Entidades HTML não tornam um valor seguro dentro de uma URL ou de um script inline. Um espaço numa URL precisa de %20, e uma string em JavaScript precisa de escape JS/JSON. Adeque a codificação ao lugar onde o valor aterrissa.

✗ Incorreto
href="/search?q=a&amp;b c"  →  the space still breaks the URL
✓ Correto
href="/search?q=a%26b%20c"  →  URL-encoded, valid

Codificou não-ASCII desnecessariamente numa página UTF-8

Forçar café em café numa página UTF-8 moderna incha a fonte e prejudica a legibilidade sem benefício. Deixe não-ASCII bruto a menos que um charset legado genuinamente exija entidades.

✗ Incorreto
caf&eacute; on a UTF-8 page  →  needless, harder to read
✓ Correto
café on a UTF-8 page  →  valid and clean

Esqueceu de escapar aspas dentro de um valor de atributo

Inserir uma " não escapada num atributo deixa o valor sair e injetar novos atributos — um vetor de XSS. Sempre escape " (e idealmente ') no contexto de atributo, o que esta ferramenta faz por padrão.

✗ Incorreto
title="He said "hi""  →  attribute breaks out
✓ Correto
title="He said &quot;hi&quot;"  →  contained

Quem Usa Esta Ferramenta

Exibir Amostras de Código numa Página Web
Escrevendo um tutorial ou documentação que precisa mostrar HTML literal? Escape o trecho para que <strong>bold</strong> apareça como texto em vez de renderizar. Cole a marcação, copie a saída escapada e coloque-a dentro de um bloco <pre> ou <code>.
Higienizar Entrada de Usuário Contra XSS
Antes de inserir qualquer string fornecida pelo usuário no seu HTML, escape os cinco caracteres reservados para que um payload como <script>…</script> vire texto inerte. Esta é a defesa fundamental contra cross-site scripting quando você constrói marcação à mão.
Armazenar Marcação num Campo de Banco de Dados ou JSON
Precisa salvar um fragmento de HTML como string pura sem que seja interpretado adiante? Codifique-o primeiro para que os sinais de menor/maior e os E comerciais sobrevivam ao armazenamento e à reexibição intactos, depois decodifique na volta.
Criar Modelos de E-mail e Conteúdo de CMS
Clientes de e-mail e sistemas de gerenciamento de conteúdo são implacáveis com caracteres especiais brutos. Escape o conjunto reservado — e opcionalmente tudo não-ASCII — para que seu modelo renderize de forma consistente entre clientes que talvez não compartilhem seu charset.
Converter Texto para um Charset Legado
Mirando um sistema que não lida com UTF-8 bruto? Ative "Codificar tudo não-ASCII" para reescrever toda letra acentuada, símbolo e emoji como uma entidade segura para ASCII, garantindo que o texto sobreviva ao transporte por pipelines limpas de 7 bits.
Escapar Valores de Atributo XML e SVG
XML e SVG inline compartilham os caracteres reservados do HTML. Codifique aspas e sinais de menor/maior para que uma string com marcação embutida se encaixe com segurança num valor de atributo sem quebrar a estrutura do documento.
Consultar uma Entidade Rapidamente
Esqueceu se o sinal de marca registrada é ™ ou ™? Digite o caractere, leia sua entidade nomeada, decimal e hex na saída, ou consulte a tabela de referência rápida integrada sem sair da página.

Como o Codificador Funciona

Modo de Caracteres Especiais (Padrão)
Por padrão, apenas os cinco caracteres reservados do HTML são escapados — & < > " ' — seguindo as regras de serialização HTML da WHATWG para uma saída segura. & é substituído primeiro para que as entidades produzidas para os outros caracteres não sejam duplamente escapadas. Todos os demais caracteres, incluindo não-ASCII, passam inalterados.
O Apóstrofo Usa '
Em vez do nomeado ' — que é indefinido no HTML4 e inseguro em alguns analisadores legados — a aspa simples é emitida como o numérico ' (decimal '), referenciando U+0027. Isso corresponde à convenção de bibliotecas bem testadas como a he e garante que a saída seja segura igualmente em HTML4, HTML5 e XML.
Codificação Nomeada, Decimal e Hex
O seletor de formato controla como cada caractere escapado é escrito: Nomeado usa rótulos definidos onde existem (<, ©), Decimal escreve o ponto de código Unicode na base 10 (<) e Hex o escreve na base 16 (<). As formas numéricas referenciam os mesmos pontos de código que as nomeadas e são intercambiáveis quando analisadas.
Opção de Codificar Tudo Não-ASCII
Quando ativada, todo caractere com ponto de código acima de 0x7F é convertido numa entidade no formato escolhido — café vira café (nomeado), café (decimal) ou café (hex). Caracteres astrais como emojis são codificados com seu ponto de código completo (😀 → 😀). Isso produz uma saída ASCII limpa de 7 bits para transporte legado.
Charset Versus Entidades
Um conjunto de caracteres define como o texto é armazenado como bytes; uma entidade é uma forma de soletrar um caractere usando apenas ASCII. Numa página UTF-8, caracteres não-ASCII não precisam de entidade, e é por isso que o padrão os deixa brutos. Codificar tudo só é necessário quando a saída precisa atravessar um charset não-Unicode ou um sistema hostil ao UTF-8.
Local no Navegador, Rede Zero
A codificação roda de forma síncrona em JavaScript na thread principal; não há chamada de API, nem ida e volta a um servidor via worker, nem persistência. A entrada nunca sai da página, o que você pode confirmar observando um painel Network vazio enquanto digita.

Boas Práticas de Escape de HTML

Escape na Saída, no Contexto Certo
Codifique os dados no momento em que você os insere no HTML, não quando os recebe, e adeque a codificação ao contexto. A codificação de entidades HTML é para conteúdo de elemento e atributo HTML; use codificação de URL dentro de URLs e escape de JavaScript/JSON dentro de blocos de script. Escapar no contexto errado deixa uma brecha.
Sempre Escape Entrada Não Confiável
Qualquer string que se origine de um usuário, de um upload ou de uma API externa deve ser escapada antes de aterrissar na sua marcação. Esta é a defesa central contra XSS: um payload como <script>alert(1)</script> vira texto inerte assim que os sinais de menor/maior viram entidades.
Prefira o Escape Integrado Onde Existir
React, Vue e a maioria dos motores de template no servidor escapam texto interpolado automaticamente; definir element.textContent também escapa por você. Use esta ferramenta para conversões pontuais e para entender a saída — mas no código da aplicação, apoie-se no auto-escape do framework em vez de fazê-lo à mão.
Deixe Não-ASCII Bruto em Páginas UTF-8
Se sua página declara <meta charset="utf-8">, não codifique acentos e emojis em entidades — o UTF-8 bruto é mais curto, mais legível e igualmente correto. Reserve "Codificar tudo não-ASCII" para os casos genuínos de charset legado que realmente exigem isso.
Use o Apóstrofo Numérico em Contextos Mistos
Quando a saída puder ser consumida por analisadores antigos, processadores XML ou clientes de e-mail, prefira o numérico ' ao nomeado ' para a aspa simples. A forma numérica é compreendida universalmente; a nomeada não, e um "'" literal perdido no texto renderizado é um bug comum e evitável.

Perguntas Frequentes

Meu texto é enviado ao seu servidor quando eu o codifico?
Não. Cada caractere é codificado inteiramente no seu navegador com JavaScript — abra o DevTools → Network e você verá zero requisições disparadas ao digitar ou colar. Nada é enviado, nada é registrado, nada é gravado em disco. Essa privacidade importa porque a marcação que as pessoas escapam costuma ser sensível: um trecho de um CMS privado, um modelo de e-mail interno, uma resposta de suporte ao cliente ou um rascunho de post que você ainda não publicou. Num codificador no servidor, cada um deles atravessaria a rede até uma máquina que você não controla; aqui o texto nunca sai da aba. Esta é toda a razão para escapar HTML no lado do cliente em vez de colá-lo num site que poderia, em princípio, guardar uma cópia de tudo o que processa.
O que significa escapar HTML, e por que eu faria isso?
Escapar HTML significa substituir caracteres que o navegador interpretaria como marcação por seus equivalentes em entidade, para que sejam exibidos como texto literal em vez disso. O caso clássico é mostrar código numa página: se você quer que um visitante leia a string <strong>bold</strong> em vez de ver a palavra "bold" renderizada em negrito, você escapa os sinais de maior/menor para <strong>bold</strong>. O outro caso, mais importante, é a segurança: ao inserir entrada de usuário não confiável numa página, escapar os cinco caracteres reservados (< > & " ') impede que essa entrada saia do seu contexto e injete uma tag <script> — a defesa central contra cross-site scripting (XSS). Qualquer texto que se origine de um usuário e termine no seu HTML deve ser escapado primeiro.
Qual é a diferença entre entidades nomeadas, decimais e hex?
As três produzem o mesmo caractere; diferem apenas em como a referência é escrita. Uma entidade nomeada usa um rótulo legível por humanos — < para <, & para &, © para © — fácil de ler, mas que só funciona para caracteres com um nome definido. Uma entidade numérica decimal escreve o ponto de código Unicode na base 10, como < para < ou é para é. Uma entidade hexadecimal escreve o mesmo ponto de código na base 16, como < para < ou é para é, espelhando a notação U+XXXX do padrão Unicode. As entidades nomeadas são as mais legíveis e o padrão certo para os caracteres reservados comuns; as entidades numéricas (decimal ou hex) podem codificar qualquer ponto de código, incluindo os sem nome, o que as torna a escolha segura quando você não pode garantir que o consumidor suporte uma entidade nomeada específica.
Por que o apóstrofo é codificado como ' e não como '?
Porque ' não é seguro em todo lugar. A entidade nomeada ' só foi introduzida no HTML5 e no XML — não está definida no HTML4, então alguns analisadores e clientes de e-mail antigos a renderizam como o texto literal "'" em vez de um apóstrofo. A referência numérica ' (ou sua gêmea decimal ') mapeia exatamente o mesmo caractere, U+0027, e é compreendida por todo analisador em conformidade já escrito. Seguindo o comportamento de bibliotecas bem testadas como a he, esta ferramenta emite o universalmente compatível ' para o apóstrofo, para que a saída possa ser inserida em qualquer contexto HTML, XML ou de atributo sem surpresas.
Preciso codificar caracteres não-ASCII como é, — ou 😀?
Normalmente não. Se sua página declara <meta charset="utf-8"> — o que essencialmente toda página moderna faz — então letras acentuadas, travessões e emojis são perfeitamente válidos como UTF-8 bruto e não precisam de codificação alguma. É por isso que o modo padrão "caracteres especiais" os deixa intactos, mantendo sua saída curta e legível. Você só precisa codificar caracteres não-ASCII quando o texto for servido ou armazenado num charset legado de byte único, ou passado por um sistema que corrompe UTF-8 bruto. Nesses casos, marque "Codificar todos os caracteres não-ASCII" e todo ponto de código acima de 0x7F é convertido numa entidade segura para ASCII. Na dúvida, mantenha o padrão e certifique-se de que sua declaração de charset esteja correta.
Escapar HTML me protege contra ataques XSS?
Escapar é a base da defesa contra XSS, mas depende do contexto, então a resposta honesta é "sim, quando aplicado corretamente". Codificar os cinco caracteres reservados antes de colocar entrada não confiável no conteúdo de um elemento HTML impede de forma confiável que um atacante injete tags ou scripts — um payload como <script>alert(1)</script> vira texto inerte. A ressalva é que o HTML tem vários contextos, cada um com suas próprias regras de escape: dentro do valor de um atributo você deve escapar aspas (o que esta ferramenta faz), dentro de um bloco <script> ou de um manipulador de evento inline você precisa de escape de JavaScript, e dentro de uma URL você precisa de codificação de URL. Use a codificação de entidades HTML para contextos HTML e de atributo; para URLs recorra ao Codificador / Decodificador de URL, e para inserir uma string em JavaScript ou JSON veja a ferramenta Escape JSON. Codifique no momento da saída, no contexto onde os dados aterrissam.
Como faço o inverso — transformar entidades de volta em caracteres?
Use o complementar Decodificador de Entidades HTML. Ele pega uma string cheia de entidades como <div> & © e a converte de volta nos caracteres reais <div> & ©, lidando com entidades nomeadas, referências decimais, referências hexadecimais e até entidades legadas sem terminação como &copy sem ponto e vírgula final. Codificar e decodificar são inversos exatos para os caracteres reservados, então você pode fazer um ciclo de ida e volta do texto pelas duas ferramentas sem perda. Se você está depurando por que uma página mostra &lt; literal em vez de <, o decodificador é a forma mais rápida de ver o que as entidades de fato resolvem.
Codificar vai mudar o texto visível ou quebrar meu layout?
Não — esse é justamente o ponto. Uma entidade é apenas uma grafia alternativa de um caractere: quando um navegador analisa < ele renderiza um único glifo <, idêntico ao caractere bruto. Então uma página corretamente escapada parece exatamente igual a um visitante como pareceria com caracteres brutos; a única diferença é que o navegador trata a versão escapada como texto em vez de marcação. A única coisa que escapar muda é o comprimento e a aparência da string de origem, e é por isso que você escapa apenas o que precisa ser escapado. Se seu objetivo é limpar e indentar marcação bagunçada em vez de escapá-la, isso é outro trabalho — use o Formatador HTML em vez disso.

Ferramentas relacionadas

Ver todas as ferramentas →