Encodeur d'entités HTML gratuit — Échapper le HTML
Encodez les entités HTML et échappez les caractères spéciaux (< > & " ') en ligne — gratuit, sans inscription, 100 % dans votre navigateur. Sortie nommée, décimale ou hexadécimale ; jamais envoyée.
Votre texte est encodé localement dans votre navigateur et n'est jamais envoyé, journalisé ni stocké. Il reste sur cet appareil.
Options · Options de format et d'encodage
Qu'est-ce que l'encodage d'entités HTML ?
L'encodage d'entités HTML — aussi appelé échappement HTML — est le processus consistant à remplacer les caractères ayant une signification spéciale en HTML par une représentation textuelle sûre appelée entité, afin que le navigateur les affiche comme du texte littéral au lieu de les interpréter comme du balisage. Les cinq caractères les plus importants sont ceux que le HTML utilise pour structurer un document : les chevrons < et > qui ouvrent et ferment les balises, l'esperluette & qui commence une entité, et les guillemets " et ' qui délimitent les valeurs d'attribut. Quand l'un d'eux apparaît dans un contenu qui doit être affiché plutôt qu'exécuté, il doit être échappé, sinon le navigateur lira mal la page — au mieux votre texte s'affiche de travers, au pire un attaquant glisse une balise <script>.
Il est utile d'être précis sur ce que fait cet outil. Il encode du texte en entités ; il n'assemble ni ne met en forme un document. Si vous voulez lire une chaîne de code dans une page comme du texte brut, ou que vous insérez une entrée fournie par un utilisateur dans votre HTML et devez la neutraliser, c'est le bon outil. Si au contraire vous voulez indenter et nettoyer du balisage existant, c'est le travail du formateur HTML ; et pour retransformer les entités en caractères, utilisez le décodeur d'entités HTML.
Il y a trois façons d'écrire une entité, et elles sont interchangeables. Une référence nommée utilise un libellé lisible (< pour <, © pour ©) ; une référence numérique décimale écrit le point de code Unicode du caractère en base 10 (< pour <) ; et une référence hexadécimale écrit le même point de code en base 16 (< pour <), correspondant à la notation U+XXXX du standard Unicode. Les entités nommées se lisent le mieux mais n'existent que pour les caractères ayant un nom défini ; les entités numériques peuvent représenter n'importe quel point de code, ce qui en fait le repli sûr. Le tableau ci-dessous liste les entités que vous utiliserez le plus souvent :
| Character | Named | Decimal | Hex | |-----------|-------|---------|-----| | < | < | < | < | | > | > | > | > | | & | & | & | & | | " | " | " | " | | ' | ' | ' | ' | | (space) | |   |   | | © | © | © | © | | ® | ® | ® | ® | | ™ | ™ | ™ | ™ | | € | € | € | € | | £ | £ | £ | £ | | — | — | — | — | | – | – | – | – | | … | … | … | … | | é | é | é | é |
Notez que l'apostrophe s'écrit ' (ou ') plutôt que ' : la nommée ' n'a été normalisée qu'en HTML5 et XML et n'est pas sûre dans les anciens analyseurs HTML4, la forme numérique — comprise partout — est donc le choix compatible. Cet outil suit la même convention que la bibliothèque he largement utilisée, raison pour laquelle la sortie par défaut pour ' est '.
La distinction entre un jeu de caractères et une entité mérite d'être retenue, car elle explique l'option « Encoder tout le non-ASCII ». Un jeu de caractères (comme UTF-8) détermine comment les caractères sont stockés en octets ; une entité est une façon d'écrire un caractère en n'utilisant que les caractères ASCII simples & # ; ainsi que des lettres ou des chiffres. Sur une page UTF-8 moderne, é, — et 😀 sont des caractères bruts valides et n'ont besoin d'aucune entité — c'est pourquoi le mode par défaut les laisse tranquilles. Vous ne les forcez en entités que lorsque le texte doit passer par un système incapable de gérer l'UTF-8 brut, auquel cas chaque point de code non ASCII est réécrit en référence numérique ou nommée ASCII. Et comme tout cela s'exécute dans votre navigateur, le balisage que vous échappez — même un modèle privé ou un brouillon non publié — ne traverse jamais le réseau. Pour des conversions connexes, les outils d'échappement JSON et d'encodage / décodage Base64 gèrent respectivement l'échappement des chaînes JavaScript et le transport binaire sûr.
// Server-side templates auto-escape, but when you build HTML by hand you must escape yourself.
// The five reserved characters and their safe entities:
// < → < > → > & → & " → " ' → '
// Node.js — escape untrusted input before inserting it into HTML element content.
function escapeHtml(str) {
return str
.replace(/&/g, '&') // & first, so later entities are not double-escaped
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, '''); // numeric form — safe in HTML4, HTML5 and XML
}
const userInput = `<a href="x">Tom & Jerry's</a>`;
const safe = escapeHtml(userInput);
// → <a href="x">Tom & Jerry's</a>
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 Fonctionnalités clés
Échappe correctement les cinq caractères réservés
< > & " ' sont convertis en leurs entités sûres exactement comme le ferait une bibliothèque de prévention XSS éprouvée — y compris le ' compatible pour l'apostrophe plutôt que ' non sûr en HTML4. C'est l'ensemble précis qui neutralise une entrée non fiable dans les contextes d'élément et d'attribut HTML.
Sortie nommée, décimale et hexadécimale
Obtenez les mêmes caractères sous forme d'entités nommées lisibles (<, ©), de références numériques décimales (<) ou de références hexadécimales (<). Choisissez la forme attendue par votre système destinataire ; les trois donnent des caractères identiques à l'analyse.
Mode optionnel « encoder tout le non-ASCII »
Par défaut, seuls les caractères réservés sont échappés, gardant les accents et les émojis en UTF-8 brut lisible. Cochez une case pour convertir chaque point de code au-dessus de 0x7F en entité ASCII pour les jeux de caractères hérités ou les systèmes qui altèrent l'UTF-8.
Encodage instantané en direct
La sortie se met à jour au fur et à mesure de la frappe — pas de bouton d'envoi, pas de latence d'aller-retour. Collez un grand bloc de balisage et le résultat échappé apparaît immédiatement, prêt à copier.
Référence rapide d'entités intégrée
Un tableau de référence des entités les plus courantes — les cinq réservées plus ©, ®, ™, €, —, et d'autres — figure directement sur la page sous forme nommée, décimale et hexadécimale, vous n'avez donc jamais à chercher une entité ailleurs.
Bascule en un clic vers le décodeur
Inverser le sens passe directement au décodeur d'entités HTML pour inverser l'opération. Encoder et décoder sont des inverses exacts, vous pouvez donc faire un aller-retour du texte sans perte.
100 % privé, dans le navigateur uniquement
Tout l'encodage se fait sur votre appareil en JavaScript — aucune requête réseau, aucune journalisation, aucun stockage, vérifiable dans les DevTools → Réseau. Le balisage privé, les modèles d'e-mail et les brouillons non publiés ne quittent jamais l'onglet.
Disponible en 15 langues
L'interface complète — libellés, instructions et conseils — est localisée en 15 langues, de sorte que l'outil et ses conseils d'échappement sont clairs où que travaille votre équipe.
Exemples détaillés
Échapper un extrait HTML (le mode « caractères spéciaux » par défaut)
<a href="x">Tom & Jerry's</a>
<a href="x">Tom & Jerry's</a>
Dans le mode « caractères spéciaux » par défaut, l'encodeur ne réécrit que les cinq caractères porteurs de sens dans le balisage HTML : < devient <, > devient >, & devient &, " devient ", et ' devient '. L'apostrophe est émise sous la forme numérique ' plutôt que sous l'entité nommée ', car ' n'est pas définie en HTML4 et certains anciens analyseurs peuvent buter dessus, tandis que la forme hexadécimale est comprise partout. Après l'encodage, le navigateur affiche la chaîne comme du texte littéral — la balise <a> est affichée, pas cliquée — c'est exactement ainsi que l'on montre du balisage en toute sécurité dans une page.
Les caractères non ASCII sont préservés dans le mode par défaut
Visit our café — it's 😀
Visit our café — it's 😀
Le mode « caractères spéciaux » ne touche qu'aux cinq caractères HTML réservés, si bien que les lettres accentuées (café), le tiret cadratin (—) et les émojis (😀) passent inchangés. Cela garde la sortie lisible et légère, ce qui convient aux pages UTF-8 qui déclarent déjà <meta charset="utf-8">. Seule l'apostrophe de « it's » est échappée, en '. Si vous devez convertir chaque caractère non ASCII en entité pour un jeu de caractères hérité, cochez « Encoder tout le non-ASCII » — voir l'exemple ci-dessous.
Entités numériques décimales
<>&"'
<>&"'
Passez le format en Décimal et chaque caractère spécial est écrit comme une référence numérique décimale : < donne <, > donne >, & donne &, " donne ", et ' donne '. Les entités décimales sont la forme numérique la plus largement compatible — tout analyseur HTML ou XML conforme les comprend — ce qui en fait un choix sûr quand vous ne pouvez pas garantir que des entités nommées comme © sont prises en charge par le système destinataire.
Entités numériques hexadécimales
<>&"'
<>&"'
Le format Hex écrit chaque caractère comme une référence numérique hexadécimale : < donne <, > donne >, & donne &, " donne ", et ' donne '. Hex et décimal sont interchangeables — les deux référencent le même point de code Unicode — mais l'hexadécimal correspond directement à la notation U+XXXX du standard Unicode, c'est donc la forme que beaucoup de développeurs préfèrent pour documenter ou raisonner sur des points de code précis.
Encoder tous les caractères non ASCII
café
café (named) · café (decimal) · café (hex)
Cochez « Encoder tous les caractères non ASCII » et chaque point de code au-dessus de 0x7F est converti en entité, pas seulement les cinq réservés. Le é de café devient l'entité nommée é, la décimale é ou l'hexadécimale é selon le format choisi — les trois référencent le même caractère, U+00E9. Ce mode sert aux pages servies dans un jeu de caractères non Unicode, ou aux systèmes qui altèrent l'UTF-8 brut, où forcer tout en entités ASCII sur 7 bits garantit que le texte traverse le transport intact.
Comment utiliser l'encodeur d'entités HTML
- 1
Collez votre HTML ou votre texte
Déposez le balisage ou le texte brut que vous voulez échapper dans la zone de saisie. La sortie encodée se met à jour en direct au fur et à mesure de la frappe — il n'y a pas de bouton d'envoi et rien n'est transmis nulle part.
- 2
Choisissez le format d'entité
Nommé est le format lisible par défaut (<, &, ©). Passez à Décimal (<) ou Hex (<) quand un système destinataire préfère les références numériques ou que vous ne pouvez pas garantir la prise en charge des entités nommées.
- 3
Encodez éventuellement tout le non-ASCII
Laissez cette option désactivée pour les pages UTF-8 modernes afin que les accents et les émojis restent des caractères bruts lisibles. Cochez-la uniquement quand le texte doit survivre à un jeu de caractères hérité à un octet, ce qui convertit chaque caractère au-dessus de 0x7F en entité ASCII.
- 4
Copiez le résultat encodé
Cliquez sur Copier pour placer la chaîne échappée dans votre presse-papiers, prête à être collée dans un modèle, une page de documentation ou un champ de base de données. Effacer réinitialise les deux volets pour l'extrait suivant.
- 5
Besoin de l'inverse ? Inversez le sens
Utilisez Inverser le sens pour basculer vers le décodeur d'entités HTML lorsque vous voulez retransformer les entités en caractères qu'elles représentent.
Erreurs courantes d'encodage HTML
A échappé l'esperluette en dernier, causant un double échappement
Si vous remplacez < et > avant &, les entités que vous venez de créer voient leur & ré-échappé, donc < devient < et s'affiche comme du texte littéral. Échappez toujours & en premier.
replace < and > first, then & → < becomes &lt;
escape & first, then the rest → < stays <
A utilisé ' pour l'apostrophe dans des contextes hérités
' n'est pas définie en HTML4 et certains clients de messagerie l'affichent littéralement. Utilisez la forme numérique ' ou ', comprise par tout analyseur, quand vous ciblez des environnements anciens ou mixtes.
It's here → may render as It's here
It's here → renders as It's here
A encodé la donnée deux fois
Passer un texte déjà échappé une nouvelle fois dans l'encodeur le double-encode : & devient & et l'utilisateur voit & au lieu de &. Échappez exactement une fois, à la sortie.
& encoded again → &amp; shows as &
& left as-is → renders as &
A utilisé l'échappement HTML pour un contexte URL ou JavaScript
Les entités HTML ne rendent pas une valeur sûre dans une URL ou un script en ligne. Un espace dans une URL a besoin de %20, et une chaîne en JavaScript a besoin d'un échappement JS/JSON. Adaptez l'encodage à l'endroit où la valeur atterrit.
href="/search?q=a&b c" → the space still breaks the URL
href="/search?q=a%26b%20c" → URL-encoded, valid
A encodé du non-ASCII inutilement sur une page UTF-8
Forcer café en café sur une page UTF-8 moderne alourdit la source et nuit à la lisibilité sans bénéfice. Laissez le non-ASCII brut sauf si un jeu de caractères hérité exige réellement des entités.
café on a UTF-8 page → needless, harder to read
café on a UTF-8 page → valid and clean
A oublié d'échapper les guillemets dans une valeur d'attribut
Insérer un " non échappé dans un attribut laisse la valeur en sortir et injecter de nouveaux attributs — un vecteur XSS. Échappez toujours " (et idéalement ') en contexte d'attribut, ce que cet outil fait par défaut.
title="He said "hi"" → attribute breaks out
title="He said "hi"" → contained
Qui utilise cet outil
- Afficher des échantillons de code dans une page web
- Vous rédigez un tutoriel ou une documentation qui doit montrer du HTML littéral ? Échappez l'extrait pour que <strong>bold</strong> apparaisse comme du texte plutôt que d'être rendu. Collez le balisage, copiez la sortie échappée et déposez-la dans un bloc <pre> ou <code>.
- Assainir l'entrée utilisateur contre le XSS
- Avant d'insérer une chaîne fournie par un utilisateur dans votre HTML, échappez les cinq caractères réservés pour qu'une charge comme <script>…</script> devienne du texte inerte. C'est la défense fondamentale contre l'injection de script quand vous construisez le balisage à la main.
- Stocker du balisage dans un champ de base de données ou du JSON
- Besoin de sauvegarder un fragment HTML comme une chaîne brute sans qu'il soit interprété en aval ? Encodez-le d'abord pour que les chevrons et les esperluettes survivent au stockage et au réaffichage intacts, puis décodez au retour.
- Rédiger des modèles d'e-mail et du contenu CMS
- Les clients de messagerie et les systèmes de gestion de contenu sont intolérants aux caractères spéciaux bruts. Échappez l'ensemble réservé — et éventuellement tout le non-ASCII — pour que votre modèle s'affiche de manière cohérente entre les clients qui peuvent ne pas partager votre jeu de caractères.
- Convertir du texte pour un jeu de caractères hérité
- Vous ciblez un système incapable de gérer l'UTF-8 brut ? Activez « Encoder tout le non-ASCII » pour réécrire chaque lettre accentuée, symbole et émoji en entité ASCII, garantissant que le texte survit au transport à travers des pipelines propres sur 7 bits.
- Échapper des valeurs d'attribut XML et SVG
- Le XML et le SVG en ligne partagent les caractères réservés du HTML. Encodez les guillemets et les chevrons pour qu'une chaîne contenant du balisage s'insère sans risque dans une valeur d'attribut sans casser la structure du document.
- Rechercher une entité rapidement
- Vous avez oublié si le signe de marque déposée est ™ ou ™ ? Saisissez le caractère, lisez son entité nommée, décimale et hexadécimale dans la sortie, ou consultez le tableau de référence rapide intégré sans quitter la page.
Comment fonctionne l'encodeur
- Mode caractères spéciaux (par défaut)
- Par défaut, seuls les cinq caractères réservés du HTML sont échappés — & < > " ' — en suivant les règles de sérialisation HTML du WHATWG pour une sortie sûre. & est remplacé en premier pour que les entités produites pour les autres caractères ne soient pas doublement échappées. Tous les autres caractères, y compris non ASCII, passent inchangés.
- L'apostrophe utilise '
- Plutôt que la nommée ' — non définie en HTML4 et risquée dans certains analyseurs hérités — le guillemet simple est émis sous la forme numérique ' (décimal '), référençant U+0027. Cela correspond à la convention de bibliothèques éprouvées comme he et garantit que la sortie est sûre en HTML4, HTML5 et XML.
- Encodage nommé, décimal et hexadécimal
- Le sélecteur de format contrôle l'écriture de chaque caractère échappé : Nommé utilise les libellés définis là où ils existent (<, ©), Décimal écrit le point de code Unicode en base 10 (<), et Hex l'écrit en base 16 (<). Les formes numériques référencent les mêmes points de code que les formes nommées et sont interchangeables à l'analyse.
- Option « encoder tout le non-ASCII »
- Quand elle est activée, chaque caractère dont le point de code dépasse 0x7F est converti en entité dans le format choisi — café devient café (nommé), café (décimal) ou café (hex). Les caractères astraux comme les émojis sont encodés avec leur point de code complet (😀 → 😀). Cela produit une sortie ASCII propre sur 7 bits pour le transport hérité.
- Jeu de caractères contre entités
- Un jeu de caractères définit comment le texte est stocké en octets ; une entité est une façon d'écrire un caractère en n'utilisant que de l'ASCII. Sur une page UTF-8, les caractères non ASCII n'ont besoin d'aucune entité, c'est pourquoi le mode par défaut les laisse bruts. Tout encoder n'est nécessaire que lorsque la sortie doit traverser un jeu de caractères non Unicode ou un système hostile à l'UTF-8.
- Local au navigateur, réseau nul
- L'encodage s'exécute de manière synchrone en JavaScript sur le thread principal ; il n'y a aucun appel d'API, aucun aller-retour de worker vers un serveur, et aucune persistance. L'entrée ne quitte jamais la page, ce que vous pouvez confirmer en observant un panneau Réseau vide pendant la frappe.
Bonnes pratiques d'échappement HTML
- Échapper à la sortie, dans le bon contexte
- Encodez la donnée au moment où vous l'insérez dans le HTML, pas à sa réception, et adaptez l'encodage au contexte. L'encodage d'entités HTML est pour le contenu d'élément et d'attribut HTML ; utilisez l'encodage URL dans les URL et l'échappement JavaScript/JSON dans les blocs de script. Échapper dans le mauvais contexte laisse une faille.
- Toujours échapper l'entrée non fiable
- Toute chaîne provenant d'un utilisateur, d'un téléversement ou d'une API externe doit être échappée avant d'atterrir dans votre balisage. C'est la défense XSS centrale : une charge comme <script>alert(1)</script> devient du texte inerte une fois les chevrons transformés en entités.
- Préférer l'échappement intégré là où il existe
- React, Vue et la plupart des moteurs de templates côté serveur échappent automatiquement le texte interpolé ; définir element.textContent échappe aussi pour vous. Utilisez cet outil pour des conversions ponctuelles et pour comprendre la sortie — mais dans le code applicatif, appuyez-vous sur l'auto-échappement du framework plutôt que de le coder à la main.
- Laisser le non-ASCII brut sur les pages UTF-8
- Si votre page déclare <meta charset="utf-8">, n'encodez pas les accents et les émojis en entités — l'UTF-8 brut est plus court, plus lisible et tout aussi correct. Réservez « Encoder tout le non-ASCII » aux véritables cas de jeux de caractères hérités qui l'exigent réellement.
- Utiliser l'apostrophe numérique dans les contextes mixtes
- Quand la sortie peut être consommée par d'anciens analyseurs, des processeurs XML ou des clients de messagerie, préférez la forme numérique ' à la nommée ' pour le guillemet simple. La forme numérique est comprise partout ; la forme nommée non, et un « ' » littéral perdu dans le texte rendu est un bogue courant et évitable.
Questions fréquentes
Mon texte est-il envoyé à votre serveur lorsque je l'encode ?
Que signifie échapper le HTML, et pourquoi le ferais-je ?
Quelle est la différence entre entités nommées, décimales et hexadécimales ?
Pourquoi l'apostrophe est-elle encodée en ' et non en ' ?
Dois-je encoder les caractères non ASCII comme é, — ou 😀 ?
Échapper le HTML me protège-t-il des attaques XSS ?
Comment inverser l'opération — retransformer les entités en caractères ?
L'encodage va-t-il changer le texte visible ou casser ma mise en page ?
Outils connexes
Voir tous les outils →Décodeur et Encodeur Base64
Encodage et formatage
Décodez et encodez en Base64 en ligne gratuitement. Conversion en temps réel, support UTF-8 et émojis. 100 % privé, dans votre navigateur.
Convertisseur Base64 en Image
Encodage et formatage
Décodez une chaîne Base64 ou un URI de données en image dans votre navigateur. Aperçu, dimensions et MIME, puis téléchargement en PNG, JPG, GIF, SVG. Sans envoi.
Convertisseur CSV vers JSON
Encodage et formatage
Convertissez du CSV en JSON dans le navigateur. RFC 4180, inférence de types, ligne d'en-tête, sûr pour grands entiers. 100 % privé, sans envoi.
Convertisseur .env vers JSON
Encodage et formatage
Collez un fichier .env, obtenez du JSON instantanément. Vos mots de passe et clés API ne quittent jamais le navigateur — 100 % privé, sans envoi.
Décodeur d'entités HTML gratuit — Décoder le HTML
Encodage et formatage
Décodez les entités HTML et déséchappez le HTML en ligne — gratuit, sans inscription, 100 % dans votre navigateur. Reconvertit les références nommées, décimales & hex en caractères ; jamais envoyé.
Convertisseur HTML vers Markdown
Encodage et formatage
Convertissez du HTML en Markdown propre dans le navigateur — tables GFM, listes de tâches, liens. Titres ATX/Setext et liens inline ou par référence. Idéal pour migrer du contenu web ou alimenter des LLM. 100 % privé.