ToolDeck

Escape / Unescape HTML

Escape e unescape de entidades HTML (& < > " etc.)

Experimente um exemplo

Entrada

Saída

Roda localmente · Seguro para colar segredos
O resultado aparecerá aqui…

O que é escape de HTML?

O escape de HTML é o processo de substituir caracteres com significado especial em HTML pelas suas referências de entidade correspondentes. Os cinco caracteres que devem ser escapados são: e comercial (&), menor que (<), maior que (>), aspas duplas (") e aspas simples ('). Sem o escape, o navegador interpreta esses caracteres como instruções de marcação em vez de texto exibível, o que quebra a renderização da página e abre caminho para ataques de injeção.

A especificação HTML (mantida pelo WHATWG) define duas formas de referências de caracteres: entidades nomeadas como &amp; e entidades numéricas como &#38; ou &#x26;. As entidades nomeadas são mais fáceis de ler no código-fonte. As entidades numéricas (decimais ou hexadecimais) podem representar qualquer ponto de código Unicode, sendo úteis para caracteres que não têm alias nomeado. Ambas as formas produzem saída idêntica no navegador.

O unescape (também chamado de decodificação) é a operação inversa: converter referências de entidade de volta aos seus caracteres literais. Isso é comum ao extrair texto de uma fonte HTML, migrar conteúdo entre sistemas ou depurar templates que fazem duplo encode de entidades. Esta ferramenta trata ambas as direções no navegador, permitindo verificar sua lógica de escape ou recuperar texto simples de uma fonte HTML em segundos.

Por que usar esta ferramenta de escape HTML?

Substituir manualmente colchetes angulares e e comerciais em grandes blocos de texto é tedioso e sujeito a erros. Uma ferramenta dedicada converte sua entrada em um único passo, sem instalação necessária.

Conversão instantânea
Cole texto ou HTML e obtenha a saída escapada ou desescapada imediatamente. Sem aguardar uma requisição ao servidor, pois todo o processamento acontece localmente em JavaScript.
🔒
Processamento com privacidade
Sua entrada nunca sai do navegador. Nada é enviado a um servidor nem armazenado em lugar nenhum, então é seguro fazer escape de marcação que contenha credenciais, chaves de API ou código interno.
📋
Sem conta ou configuração
Abra a página e comece a colar. Não há barreira de login, gate de e-mail nem software para instalar. Funciona em qualquer dispositivo com um navegador moderno.
🌐
Cobertura completa de entidades
Trata os cinco caracteres especiais obrigatórios do HTML além de entidades numéricas (decimais e hexadecimais). Suporta conversão de ida e volta: fazer escape e depois unescape retorna a string original.

Casos de uso do escape HTML

Desenvolvedor frontend: exibindo entrada do usuário
Ao renderizar texto enviado pelo usuário dentro de uma página, faça o escape primeiro para evitar que o navegador o interprete como tags HTML. Essa é a principal defesa contra XSS armazenado em qualquer template que exiba strings brutas.
Engenheiro backend: gerando respostas HTML
Código no servidor que concatena strings em HTML deve fazer o escape de valores dinâmicos antes da inserção. Use esta ferramenta para verificar que sua função de escape produz a saída correta para casos extremos como aspas aninhadas.
DevOps: incorporando configurações em HTML
JSON inline ou comandos shell dentro de uma página HTML (por exemplo, em uma tag script ou em um atributo data) exigem escape. Verifique se colchetes angulares e e comerciais nos seus trechos de configuração estão corretamente codificados.
Engenheiro de QA: testando vetores XSS
Cole payloads XSS comuns na ferramenta para confirmar que a saída da sua aplicação corresponde à versão corretamente escapada. Compare a saída escapada caractere por caractere com o que a sua aplicação produz.
Escritor técnico: exemplos de código em documentação
Publicar trechos de código em documentação baseada em HTML (Jekyll, Hugo, CMSs personalizados) exige o escape de colchetes angulares para sintaxe de tipos genéricos e placeholders de templates. Cole seu trecho de código e cada caractere especial é codificado instantaneamente.
Estudante: aprendendo entidades HTML
Digite ou cole qualquer caractere e veja suas formas de entidade nomeada e numérica. Experimente casos extremos como espaços não separáveis, travessões e símbolos Unicode para entender como funciona a codificação de caracteres HTML.

Tabela de referência de entidades HTML

A tabela abaixo lista as entidades HTML mais usadas. Os cinco caracteres especiais (& < > " ') devem sempre ser escapados em conteúdo HTML e valores de atributos. Outras entidades são opcionais, mas úteis para caracteres difíceis de digitar ou ambíguos no código-fonte.

CaractereDescriçãoEntidade nomeadaEntidade numérica
&Ampersand&amp;&#38;
<Less-than sign&lt;&#60;
>Greater-than sign&gt;&#62;
"Double quote&quot;&#34;
'Single quote / apostrophe&apos;&#39;
 Non-breaking space&nbsp;&#160;
©Copyright sign&copy;&#169;
®Registered sign&reg;&#174;
Em dash&mdash;&#8212;
Right single quote&rsquo;&#8217;
Euro sign&euro;&#8364;

Escape vs. Unescape: quando usar cada um

As duas operações são inversas. Escolher a direção errada produz saída com duplo encode ou desprotegida.

Escape (codificar)
Use ao inserir texto não confiável ou dinâmico em HTML. Converte < literal em &lt; para que o navegador exiba o caractere em vez de iniciar uma tag. Aplique antes de renderizar entrada do usuário, entradas de log ou qualquer string que possa conter marcação.
Unescape (decodificar)
Use ao extrair texto simples de uma fonte HTML. Converte &lt; de volta para <. Aplique ao migrar conteúdo de um CMS, ao processar HTML coletado por scraping ou ao corrigir strings com duplo encode como &amp;amp; que exibem nomes de entidade em vez de caracteres.

Exemplos de código

Abaixo estão exemplos funcionais de escape e unescape de HTML em quatro linguagens. Cada trecho cobre ambas as direções e trata casos extremos como aspas aninhadas e entidades numéricas.

JavaScript (browser / Node.js)
// Escape HTML entities manually
function escapeHtml(str) {
  return str
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;')
}

escapeHtml('<img src="x" onerror="alert(1)">')
// → "&lt;img src=&quot;x&quot; onerror=&quot;alert(1)&quot;&gt;"

// Unescape using DOMParser (browser only)
function unescapeHtml(str) {
  const doc = new DOMParser().parseFromString(str, 'text/html')
  return doc.documentElement.textContent
}

unescapeHtml('&lt;div&gt;Hello&lt;/div&gt;')
// → "<div>Hello</div>"
Python
import html

# Escape special characters
html.escape('<script>alert("XSS")</script>')
# → '&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;'

# Escape including single quotes (quote=True is default in Python 3.8+)
html.escape("It's <b>bold</b>", quote=True)
# → 'It&#x27;s &lt;b&gt;bold&lt;/b&gt;'

# Unescape entities back to characters
html.unescape('&lt;p&gt;Price: &euro;10&lt;/p&gt;')
# → '<p>Price: €10</p>'

# Unescape numeric entities
html.unescape('&#60;div&#62;&#38;amp;&#60;/div&#62;')
# → '<div>&amp;</div>'
Go
package main

import (
    "fmt"
    "html"
)

func main() {
    // Escape HTML special characters
    escaped := html.EscapeString(`<a href="page?id=1&sort=name">Link</a>`)
    fmt.Println(escaped)
    // → &lt;a href=&quot;page?id=1&amp;sort=name&quot;&gt;Link&lt;/a&gt;

    // Unescape back to original
    original := html.UnescapeString("&lt;b&gt;Go &amp; HTML&lt;/b&gt;")
    fmt.Println(original)
    // → <b>Go & HTML</b>
}
PHP
<?php
// Escape HTML entities (ENT_QUOTES escapes both " and ')
echo htmlspecialchars('<p class="info">Tom & Jerry's</p>', ENT_QUOTES, 'UTF-8');
// → &lt;p class=&quot;info&quot;&gt;Tom &amp; Jerry&#039;s&lt;/p&gt;

// Convert all applicable characters to HTML entities
echo htmlentities('Price: 10€ — 50% off', ENT_QUOTES, 'UTF-8');
// → Price: 10&euro; &mdash; 50% off

// Decode entities back
echo html_entity_decode('&lt;div&gt;&amp;copy; 2026&lt;/div&gt;');
// → <div>&copy; 2026</div>

Perguntas frequentes

Qual é a diferença entre escape HTML e codificação de URL?
O escape HTML substitui caracteres especiais em HTML (< > & " ') por referências de entidade como &lt; para que sejam exibidos como texto. A codificação de URL (percent-encoding) substitui caracteres inválidos em URLs por sequências hexadecimais %XX. Eles protegem contextos diferentes: o escape HTML previne injeção de marcação, enquanto a codificação de URL garante query strings e segmentos de caminho válidos.
Quais caracteres devem ser escapados em HTML?
Os cinco caracteres que devem sempre ser escapados são: & (e comercial), < (menor que), > (maior que), " (aspas duplas dentro de atributos) e ' (aspas simples dentro de atributos). Não escapar qualquer um deles pode quebrar a renderização ou criar uma vulnerabilidade de cross-site scripting.
&apos; é válido em HTML5?
Sim. A entidade nomeada &apos; está definida na especificação HTML5 e é suportada por todos os navegadores modernos. Ela não fazia parte do HTML 4, que reconhecia apenas &amp;, &lt;, &gt; e &quot;. Se precisar suportar parsers muito antigos de HTML 4, use a forma numérica &#39;.
Como corrigir entidades HTML com duplo encode como &amp;amp;?
O duplo encode ocorre quando uma string já escapada passa pela função de escape uma segunda vez. A correção é fazer unescape até a saída se estabilizar. Cole a string com duplo encode nesta ferramenta no modo unescape e execute novamente se referências &amp; permanecerem. Para evitar duplo encode, verifique se a entrada já está escapada antes de aplicar a função de escape.
Posso usar entidades HTML dentro de strings JavaScript?
As entidades HTML são interpretadas pelo parser HTML, não pelo motor JavaScript. Dentro de um bloco script, o código é executado após o parser HTML processar a página, portanto &lt; em um bloco script se torna < antes de o JavaScript vê-lo. Para handlers de eventos inline (onclick etc.), o valor do atributo é decodificado pelo HTML primeiro e depois executado como JavaScript. Em arquivos .js externos, as entidades não têm significado especial e são tratadas como texto literal.
Qual é a diferença entre htmlspecialchars e htmlentities no PHP?
htmlspecialchars() escapa apenas os cinco caracteres especiais (& < > " ') que afetam a estrutura HTML. htmlentities() escapa esses cinco mais todo caractere que tenha uma entidade HTML nomeada, como o símbolo de copyright e letras acentuadas. Para fins de segurança, htmlspecialchars() com ENT_QUOTES é suficiente. htmlentities() é útil quando você precisa de saída segura para ASCII em sistemas que não suportam UTF-8.
O escape HTML é suficiente para prevenir XSS?
O escape HTML previne XSS no caso mais comum: inserir texto não confiável no conteúdo de elementos HTML ou em valores de atributos. Ele não protege outros contextos de injeção. Inserir dados do usuário em um bloco script requer escape de string JavaScript. Inserir em um atributo style requer escape CSS. Inserir em um atributo de URL (href, src) requer validação de URL mais codificação. Uma defesa completa contra XSS aplica escape específico ao contexto em cada ponto de inserção.