Codificador / Decodificador de entidades HTML/ & < > "

Codifique caracteres especiais HTML em entidades e decodifique entidades nomeadas/numericas — essencial para prevencao de XSS.

Texto simples / HTML
0 caracteres
Entidades HTML
0 caracteres
Entidades HTML comuns
&&
<&lt;
>&gt;
"&quot;
'&#39;
©&copy;
®&reg;
&trade;
&nbsp;
&mdash;
&hellip;
«»&laquo;&raquo;

Esta ferramenta resolveu o seu problema?

O que é uma ferramenta de codificação/descodificação HTML

Uma ferramenta de codificação/descodificação HTML converte entre texto simples e entidades HTML. As entidades HTML são códigos especiais que começam com & e terminam com ; para exibir com segurança caracteres especiais.

Casos de uso comuns

Exibir trechos de código: codificar < e > como &lt; e &gt;. Prevenir ataques XSS: codificar a entrada do usuário antes de exibir. Modelos de email: exibir caracteres especiais com segurança.

Exemplos de codigo

JavaScript (Browser)
// Encode using a temporary DOM element (browser only)
function htmlEncode(str) {
  const div = document.createElement('div');
  div.appendChild(document.createTextNode(str));
  return div.innerHTML;
}

// Decode
function htmlDecode(str) {
  const div = document.createElement('div');
  div.innerHTML = str;
  return div.textContent ?? div.innerText;
}

// Manual encode (works in Node.js too)
const escapeHtml = (s) => s
  .replace(/&/g, '&amp;')
  .replace(/</g, '&lt;')
  .replace(/>/g, '&gt;')
  .replace(/"/g, '&quot;')
  .replace(/'/g, '&#39;');
Python
import html

# Encode (escape)
html.escape('<script>alert("xss")</script>')
# '&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;'

# Encode including single quotes
html.escape("it's", quote=True)
# 'it&#x27;s'

# Decode (unescape)
html.unescape('&lt;b&gt;Hello &amp; World&lt;/b&gt;')
# '<b>Hello & World</b>'
Go
import "html"

// Encode
html.EscapeString("<script>alert('xss')</script>")
// "&lt;script&gt;alert(&#39;xss&#39;)&lt;/script&gt;"

// Decode
html.UnescapeString("&lt;b&gt;Hello &amp; World&lt;/b&gt;")
// "<b>Hello & World</b>"

// In templates (auto-escaped)
import "html/template"
t := template.Must(template.New("").Parse(
    "<p>{{.}}</p>"))
t.Execute(os.Stdout, "<b>Hello</b>")
// <p>&lt;b&gt;Hello&lt;/b&gt;</p>
PHP / Twig
<?php
// Encode
htmlspecialchars('<b>Hello</b> & "World"', ENT_QUOTES, 'UTF-8');
// '&lt;b&gt;Hello&lt;/b&gt; &amp; &quot;World&quot;'

// Decode
htmlspecialchars_decode('&lt;b&gt;Hello&lt;/b&gt;');
// '<b>Hello</b>'

// All HTML entities (including named ones)
htmlentities('© 2025 — Café', ENT_QUOTES, 'UTF-8');
// '&copy; 2025 &mdash; Caf&eacute;'

// Twig (auto-escaped by default)
// {{ user_input }}        ← auto-escaped
// {{ user_input|raw }}    ← raw HTML (unsafe!)

Perguntas frequentes

Por que precisamos de codificacao de entidades HTML?
Certos caracteres tem significado especial em HTML: < e > para tags, & para entidades, " para valores de atributos. Inserir entradas de usuario brutas no HTML permite que o navegador as interprete como estrutura HTML, criando vulnerabilidades XSS (cross-site scripting). Escapar para &lt;, &gt;, &amp;, &quot; faz o navegador exibi-los como texto em vez de executar codigo.
Qual e a diferenca entre entidades HTML nomeadas e numericas?
Entidades nomeadas usam nomes faceis de lembrar: &amp; (&), &copy; (©), &nbsp; (espaco nao separavel). Entidades numericas usam o ponto de codigo Unicode: decimal &#169; ou hexadecimal &#xA9; (ambos significam ©). Entidades nomeadas existem apenas para caracteres definidos na especificacao HTML; entidades numericas podem representar qualquer caractere Unicode.
Quais sao os 5 caracteres mais importantes para codificar em HTML?
Os 5 essenciais: & → &amp; (deve ser o primeiro, senao quebrara outras entidades), < → &lt;, > → &gt;, " → &quot; (dentro de valores de atributos), ' → &#39; ou &apos; (dentro de valores de atributos). Outros caracteres (CJK, ©, € etc.) nao precisam de codificacao — navegadores modernos suportam UTF-8 completamente.
O que e &nbsp; e quando devo usa-lo?
&nbsp; e um espaco nao separavel (U+00A0). Diferente de espacos normais: 1) O navegador nao quebrara a linha em um &nbsp;. 2) Multiplos &nbsp; nao sao colapsados em um (HTML normalmente colapsa espacos consecutivos). Use para espacamento fixo — por exemplo entre um numero e unidade '100&nbsp;km', ou para impedir que uma expressao se quebre entre linhas.
React e Vue codificam automaticamente o conteudo HTML?
Sim. React JSX e templates Vue escapam todos os valores interpolados por padrao. No React, <div>{userInput}</div> codifica automaticamente caracteres especiais — apenas dangerouslySetInnerHTML ignora isso (use com extrema cautela). No Vue, {{ userInput }} e automaticamente escapado; apenas a diretiva v-html insere HTML bruto.
Qual e a diferenca entre codificacao HTML e codificacao URL?
Codificacao de entidades HTML (&amp;, &lt;, etc.) escapa caracteres especiais no contexto de documento HTML para evitar ambiguidade na analise HTML. Codificacao URL (%26, %3C, etc.) escapa caracteres nao ASCII e reservados no contexto URL/URI. Servem a propositos diferentes. Para um atributo href: primeiro codifique a URL do valor, depois codifique tudo em entidades HTML.