Encodeur / Decodeur d'entites HTML/ & < > "

Encodez les caracteres speciaux HTML en entites et decodez les entites nommees/numeriques — essentiel pour la prevention XSS.

Texte brut / HTML
0 caractères
Entités HTML
0 caractères
Entités HTML courantes
&&
<&lt;
>&gt;
"&quot;
'&#39;
©&copy;
®&reg;
&trade;
&nbsp;
&mdash;
&hellip;
«»&laquo;&raquo;

Cet outil a-t-il résolu votre problème ?

Qu'est-ce qu'un outil d'encodage/décodage HTML

Un outil d'encodage/décodage HTML convertit entre le texte brut et les entités HTML. Les entités HTML sont des codes spéciaux commençant par & et finissant par ; pour afficher en toute sécurité les caractères spéciaux.

Cas d'utilisation courants

Afficher des extraits de code : encoder < et > en &lt; et &gt;. Prévenir les attaques XSS : encoder les entrées utilisateur avant l'affichage. Modèles d'email : afficher les caractères spéciaux en toute sécurité.

Exemples de code

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!)

Questions frequemment posees

Pourquoi avons-nous besoin de l'encodage d'entites HTML ?
Certains caracteres ont une signification speciale en HTML : < et > pour les balises, & pour les entites, " pour les valeurs d'attributs. L'insertion d'entrees utilisateur brutes dans le HTML permet au navigateur de les interpreter comme une structure HTML, creant des vulnerabilites XSS (cross-site scripting). Les echapper en &lt;, &gt;, &amp;, &quot; fait que le navigateur les affiche comme du texte au lieu d'executer du code.
Quelle est la difference entre les entites HTML nommees et numeriques ?
Les entites nommees utilisent des noms memorables : &amp; (&), &copy; (©), &nbsp; (espace insecable). Les entites numeriques utilisent le point de code Unicode : decimal &#169; ou hexadecimal &#xA9; (les deux signifient ©). Les entites nommees n'existent que pour les caracteres definis dans la specification HTML ; les entites numeriques peuvent representer n'importe quel caractere Unicode.
Quels sont les 5 caracteres les plus importants a encoder en HTML ?
Les 5 essentiels : & → &amp; (doit etre encode en premier, sinon les autres entites seront corrompues), < → &lt;, > → &gt;, " → &quot; (dans les valeurs d'attributs), ' → &#39; ou &apos; (dans les valeurs d'attributs). Les autres caracteres (CJK, ©, € etc.) n'ont pas besoin d'etre encodes — les navigateurs modernes supportent pleinement UTF-8.
Qu'est-ce que &nbsp; et quand l'utiliser ?
&nbsp; est un espace insecable (U+00A0). Contrairement aux espaces normaux : 1) Le navigateur ne coupera pas la ligne a un &nbsp;. 2) Plusieurs &nbsp; ne sont pas reduits a un seul (le HTML reduit normalement les espaces consecutifs). Utilisez-le pour un espacement fixe — par exemple entre un nombre et une unite '100&nbsp;km', ou pour empecher une expression de se couper entre les lignes.
React et Vue encodent-ils automatiquement le contenu HTML ?
Oui. React JSX et les templates Vue echappent toutes les valeurs interpolees par defaut. Dans React, <div>{userInput}</div> encode automatiquement les caracteres speciaux — seul dangerouslySetInnerHTML contourne cela (a utiliser avec une extreme prudence). Dans Vue, {{ userInput }} est automatiquement echappe ; seule la directive v-html insere du HTML brut.
Quelle est la difference entre l'encodage HTML et l'encodage URL ?
L'encodage d'entites HTML (&amp;, &lt;, etc.) echappe les caracteres speciaux dans le contexte d'un document HTML pour eviter les ambiguites d'analyse HTML. L'encodage URL (%26, %3C, etc.) echappe les caracteres non-ASCII et reserves dans le contexte URL/URI. Ils ont des objectifs differents. Pour un attribut href : d'abord encoder l'URL de la valeur, puis encoder l'ensemble en entites HTML.