Encodeur et décodeur HTML
Transformez n’importe quel texte en entités HTML sûres — et retransformez les entités en texte lisible — sans quitter votre navigateur.
Échapper uniquement les cinq caractères critiques (& < > " ')
Référence rapide
| Caractère | Entité nommée | Entité numérique |
|---|---|---|
| & | & | & |
| < | < | < |
| > | > | > |
| " | " | " |
| ' | ' | ' |
| © | © | © |
| € | € | € |
| — | — | — |
Tout s’exécute localement dans votre navigateur en JavaScript natif — votre texte n’est jamais téléversé ni stocké.
Comment encoder et décoder des entités HTML
HTML est un langage de balisage : un signe < dans votre texte est ambigu, car le navigateur ne peut pas distinguer une balise d’une simple comparaison. Cet outil convertit les caractères réservés en références de caractères lors de l’encodage, et retransforme ces références en texte lisible lors du décodage — le tout dans votre navigateur.
Choisissez le sens. Sélectionnez Encoder pour rendre un texte brut sûr dans du HTML, ou Décoder pour retrouver le texte d’origine d’un document qui contient déjà des entités. Par exemple, décoder <title> renvoie <title>, prêt à être modifié ou analysé.
Collez le texte. Déposez un fragment, une valeur de gabarit ou une ligne de balisage dans la zone de saisie. Encoder Tom & Jerry produit Tom & Jerry : l’esperluette devient inoffensive pour l’analyseur.
Choisissez le niveau d’échappement (encodage). Laissez « uniquement les cinq caractères critiques » activé pour les pages UTF-8 modernes : Café & Co. devient Café & Co. Désactivez-le pour convertir aussi chaque caractère non ASCII en référence numérique — Café & Co. devient alors Café & Co. — utile pour les canaux anciens ou limités à l’ASCII.
Lancez la conversion et lisez les statistiques. L’outil affiche la longueur d’entrée, la longueur de sortie et le nombre de références créées ou résolues, ce qui permet de repérer immédiatement un fragment dont la taille a changé de façon inattendue.
Copiez le résultat. Le bouton de copie place la sortie dans le presse-papiers ; collez-la ensuite dans un fichier HTML, un champ de CMS, un modèle d’e-mail ou un littéral de gabarit JavaScript.
Vérifiez par décodage. Recollez la sortie encodée en mode Décoder : <a href="/x"> renvoie <a href="/x">, ce qui confirme un aller-retour sans perte.
Qu’est-ce que l’encodage d’entités HTML ?
HTML traite certains caractères comme de la syntaxe. Un < ouvre une balise, un > la ferme, une esperluette & débute une référence de caractère et un guillemet délimite une valeur d’attribut. Lorsque vous insérez un texte ordinaire qui contient ces caractères, l’analyseur peut l’interpréter comme du balisage : un commentaire contenant <b> s’affiche soudain en gras, et une esperluette isolée peut avaler le mot suivant ou casser la page. L’échappement remplace chaque caractère réservé par une référence de caractère — un code court et sans ambiguïté, comme < pour < — afin que le navigateur affiche le caractère d’origine au lieu de l’interpréter. Il existe deux familles de références. Les références nommées utilisent un mot mémorisable, comme &, © ou , tandis que les références numériques donnent le point de code en décimal (&) ou en hexadécimal (&). Les deux écrivent le même caractère, mais la forme numérique fonctionne même pour des caractères que la spécification n’a jamais nommés, comme la plupart des émojis. Les cinq caractères qui doivent toujours être échappés dans du texte sont & , < , > , " et ' . Les deux guillemets comptent surtout à l’intérieur des valeurs d’attribut, mais les échapper partout reste un choix sûr et prévisible. L’échappement est aussi une première ligne de défense contre les scripts intersites (XSS). Si une entrée non fiable telle que <script>alert(1)</script> est écrite dans une page sans échappement, le navigateur l’exécute. Échapper les chevrons transforme cette même entrée en texte visible. L’échappement n’est toutefois pas une stratégie de sécurité complète : assainir du HTML enrichi exige une bibliothèque consciente du contexte, et l’échappement adapté à un contexte (un corps HTML) est incorrect pour un autre (une requête d’URL ou une chaîne JavaScript). Pour du texte brut inséré dans du HTML, l’échappement correct est en revanche nécessaire et suffisant. Toutes les conversions présentées ici s’exécutent en JavaScript natif sur votre appareil. Rien n’est envoyé à un serveur, ce qui compte lorsque le texte contient des identifiants, des données personnelles ou du contenu non publié.
Applications courantes
1. Contenu généré par les utilisateurs : un commentaire qui dit « J’adore <3 ce produit » doit s’afficher tel quel. Échapper le chevron donne « J’adore <3 ce produit », et le navigateur montre le texte au lieu d’ouvrir une balise.
2. Exemples de code et tutoriels : pour afficher <div class="box"> dans une leçon, vous écrivez <div class="box">, et le décodage redonne le fragment propre à copier.
3. Valeurs d’attribut : un titre de produit contenant un guillemet double, comme Widget 12" Deluxe, casse title="Widget 12" Deluxe"; encoder le guillemet en " préserve l’attribut et la validité du balisage.
4. Canaux anciens ou limités à l’ASCII : certains clients de messagerie, passerelles SMS et systèmes de gestion de contenu anciens ne gèrent que l’ASCII ; Café, € et → sont donc convertis en références numériques comme Café, € et → tout en restant lisibles.
5. Nettoyage de contenu collecté ou issu d’un CMS : une description stockée sous la forme Grüße aus München est illisible pour du code ; le décodage redonne Grüße aus München pour l’analyse, la traduction ou un comptage de mots.
Références nommées, décimales et hexadécimales
Chaque caractère peut s’écrire de trois façons. La lettre A s’écrit simplement A, son point de code est U+0041, et ses références sont A (décimal) et A (hexadécimal). Quelques caractères ont en plus un nom mémorisable : & pour &, < pour <, " pour " , ' pour ' et pour une espace insécable. Les références nommées sont lisibles dans le code source ; les références numériques fonctionnent toujours, même pour des caractères que la spécification n’a jamais nommés.
Cet outil émet &, <, >, " et ' lors de l’encodage. L’apostrophe s’écrit ' plutôt que ' car ' n’est pas reconnu dans l’ancienne spécification HTML4 et ' est accepté partout. Au décodage, il reconnaît les entités nommées courantes, les références décimales comme é pour é et les références hexadécimales comme é pour ce même caractère. Une esperluette suivie de quelque chose qui n’est pas une référence valide est laissée intacte : un texte ordinaire n’est donc jamais altéré.
Erreurs fréquentes à éviter
Le premier piège est le double encodage. Si vous encodez Tom & Jerry une seconde fois, vous obtenez Tom &amp; Jerry, qui s’affiche littéralement Tom & Jerry. Encodez toujours du texte brut, jamais du texte déjà échappé. En cas de doute, collez la valeur en mode Décoder pour voir ce que le navigateur afficherait.
Le deuxième piège est le double décodage. Décoder &lt; une fois donne correctement < ; le décoder une seconde fois donne < et détruit une information qui devait rester visible. Cet outil effectue une seule passe de gauche à droite : chaque référence n’est résolue qu’une fois et une entité qu’il vient de produire n’est jamais réinterprétée.
Le troisième piège consiste à confondre échappement et assainissement. L’échappement rend visibles les caractères réservés, mais il ne supprime pas les scripts d’un HTML que vous comptez afficher comme balisage enrichi. Pour cela, il faut un assainisseur dédié avec une liste blanche stricte. Enfin, n’oubliez pas le contexte : l’échappement correct pour un corps HTML est incorrect pour une chaîne de requête d’URL ou une valeur JSON.
Échappement, encodage d’URL et assainissement
Trois transformations sont souvent confondues. L’échappement HTML convertit les caractères spéciaux pour l’analyseur HTML — & , < , > , " et ' — en références de caractères : c’est ce que fait cet outil. L’encodage en pourcentage, appelé aussi encodage d’URL et produit par encodeURIComponent, remplace les caractères interdits ou porteurs de sens structurel dans une URL par des séquences %XX : une espace devient %20 et & devient %26.
L’assainissement poursuit un objectif tout autre. Il analyse du HTML non fiable et supprime les éléments, attributs et protocoles dangereux tout en conservant un sous-ensemble sûr du balisage : un éditeur de texte enrichi peut ainsi accepter le gras et les liens mais retirer les scripts et les gestionnaires d’événements. Utilisez l’échappement HTML pour du texte brut affiché dans une page, l’encodage d’URL pour les URL et les chaînes de requête, et un assainisseur éprouvé lorsque vous devez accepter du HTML enrichi de vos utilisateurs. Choisir la mauvaise transformation est une cause fréquente de pages cassées et de failles de sécurité.
Utilitaires Connexes
Questions Fréquentes - FAQ
Échapper une esperluette deux fois casse-t-il ma page ?
Oui, évitez-le. Une esperluette devient & une fois ; encoder ce résultat une seconde fois donne &amp;, que le navigateur affiche littéralement &. Encodez le texte d’origine, pas du texte déjà échappé. Le décodage ici se fait en une seule passe : il ne réinterprète jamais une référence qu’il vient de produire.
Quels caractères faut-il échapper en HTML ?
Les cinq caractères critiques sont & , < , > , " et '. L’esperluette et les chevrons sont essentiels dans le texte, tandis que le guillemet double et l’apostrophe comptent surtout dans les valeurs d’attribut. Les échapper tous partout est le choix sûr que recommande cet outil.
Quelle est la différence entre ' et ' ?
C’est la même apostrophe. ' correspond au point de code décimal 39, et ' à la même valeur écrite en hexadécimal (0x27). Tous deux sont acceptés par tous les navigateurs ; la forme nommée ' n’est valide qu’en HTML5, c’est pourquoi cet outil préfère '.
Mon texte est-il téléversé quelque part ?
Non. Toute la conversion s’exécute localement dans votre navigateur avec du JavaScript natif. Votre saisie n’est jamais téléversée, journalisée ni stockée sur un serveur : l’outil convient donc aux contenus sensibles.
Cet outil protège-t-il mon site des failles XSS ?
Il y contribue, mais ce n’est pas une solution complète. Pour du texte brut inséré dans un corps HTML, échapper les cinq caractères critiques est le bon traitement. Si vous devez afficher du HTML enrichi fourni par les utilisateurs, utilisez plutôt un assainisseur doté d’une liste blanche, car l’échappement adapté à un contexte est incorrect pour un autre.
Dernière mise à jour: