ToolActToolAct

Outil de Formatage HTML

HTML en entrée
Résultat
Lignes: 1Caractères: 0Octets: 0
Lignes: 1Caractères: 0

Qu'est-ce que le formatage HTML ?

Le formatage HTML réorganise un balisage désordonné ou compressé en code lisible avec indentation cohérente, retours à la ligne et hiérarchie de balises visible. Il facilite revue, débogage, apprentissage, transmission entre équipes et maintenance, surtout pour repérer balises non fermées, imbrication incorrecte, longues listes d’attributs ou HTML généré difficile à parcourir. En production, l’opération inverse peut être utile: la minification retire espaces, commentaires et sauts inutiles pour réduire le poids transféré. L’outil aide à passer entre lisibilité et compacité, mais ne corrige pas automatiquement la sémantique, l’accessibilité, les liens cassés, le contenu intégré risqué ni les erreurs de template.

Comment utiliser

Comment utiliser

  1. Collez ou saisissez le code HTML dans la zone de gauche
  2. Choisissez la taille d'indentation et la longueur de ligne
  3. Cliquez sur 'Formater' pour embellir le code, ou sur 'Minifier' pour réduire sa taille
  4. Le code formaté s'affiche à droite (avec coloration syntaxique)
  5. Cliquez sur 'Copier' pour copier dans le presse-papiers

Description des options

Taille d'indentationChoisissez 2 espaces, 4 espaces ou une tabulation
Longueur de ligneRetour à la ligne automatique au-delà du nombre de caractères indiqué ; choisissez 'Pas de limite' pour conserver l'original

Raccourcis clavier

  • Ctrl + EnterFormater
  • Ctrl + Shift + CCopier le résultat

Conseils de formatage

  • Le formatage peut révéler une imbrication cassée ou des scripts inline suspects, mais il ne nettoie pas le HTML et ne rend pas sûr un balisage dangereux.
  • Ne minifiez que les copies destinées à la diffusion. Conservez le balisage source lisible pour les revues, les comparaisons et les vérifications d'accessibilité.

Cas d’utilisation

Formater du HTML collé avec blocs de style et de script intégrésCollez du balisage et choisissez 2 espaces, 4 espaces ou des tabulations. Le formateur supprime les commentaires, préserve le contenu des balises pre et met en forme les blocs style et script extraits avant de les réinsérer dans la structure HTML.
Minifier un petit extrait HTML pour l’intégrationBasculez en mode minification pour supprimer les espaces entre les balises et retirer les commentaires avant de copier ou télécharger un fragment HTML compact. Les erreurs de parse incluent un indice de ligne et de colonne quand c’est possible, ce qui permet de corriger une balise fermante manquante issue d’un export CMS sans rouvrir l’éditeur d’origine. Passez le résultat par un linter ou une pipeline html-validate avant de l’intégrer en production, car le formatage ne nettoie pas les attributs, scripts inline ou valeurs href dangereuses.
Utiliser pour des extraits revivables, pas pour une validation complèteL’implémentation est volontairement légère et basée sur des tokens, idéale pour des extraits copiés, des fragments d’e-mail et des exports CMS. Les templates complexes, notamment ceux utilisant Vue, Angular ou des partials rendus côté serveur avec des éléments personnalisés, doivent passer par le formateur ou le parseur du projet, et les vérifications d’accessibilité doivent être effectuées séparément sur le DOM rendu avec axe-core ou Lighthouse plutôt que sur la source formatée.
Formater du HTML généré par un export CMS ou un constructeur d’e-mailCollez du balisage exporté depuis un CMS, un outil de newsletter ou un constructeur d’e-mail et réindentez pour repérer des div non fermées, des tables mal imbriquées ou des balises script errantes avant l’envoi de la campagne. Associez le résultat formaté à une vérification d’accessibilité séparée sur le DOM rendu, car le formateur ne fait que réindenter — il ne corrige pas les alt manquants, les problèmes de contraste ou les rôles ARIA.
Alterner entre formaté et minifié pour une comparaison de diffBasculez le même fragment entre les modes format et minify pour comparer un diff côte à côte lisible avec la version minifiée de production lors de l’investigation d’une régression de mise en page ou d’attribut. Les deux sorties proviennent du même parseur, donc toute différence est imputable aux espaces, commentaires ou à l’ordre des attributs, et non à deux formateurs divergents.

Principe technique

Un formateur HTML suit l'algorithme de construction d'arbre du WHATWG HTML Standard. Les octets sont décodés (généralement en UTF-8 selon le meta charset ou le BOM), le tokenizer parcourt les états data, RCDATA, RAWTEXT, script-data et plusieurs états d'attributs définis dans la section 13.2.5, et la phase de construction d'arbre construit un DOM en utilisant la machine à états par mode d'insertion (initial, before html, in head, in body, in table, in select, etc.). Le parseur est tolérant par conception : un <p> non fermé est automatiquement fermé quand un bloc suit, un </tr> isolé est ignoré, et un <table> mal placé est déplacé par foster parenting. Les parseurs de qualité navigateur exposent cela via new DOMParser().parseFromString(src, 'text/html') ; les outils côté Node utilisent parse5 (l'implémentation de référence WHATWG), htmlparser2 ou cheerio. La réimpression parcourt l'arbre résultant et sérialise selon la catégorie de l'élément. Les éléments vides — area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr — ne reçoivent jamais de balise fermante en HTML5 (l'auto-fermeture XHTML /> est autorisée mais optionnelle). Les conteneurs de niveau bloc (div, section, article, header, footer, nav, main, ul, ol, li, table) obtiennent leur propre ligne à profondeur*indent espaces ; le contenu de type phrasé/inline (span, a, strong, em, code) est conservé en ligne car CSS white-space: normal réduit les suites d'espaces en un seul caractère. Deux types d'éléments doivent être préservés tels quels : <pre> et <textarea> portent la sémantique white-space: pre, et leur saut de ligne initial est absorbé par le parseur ; les corps de <script> et <style> sont de type RAWTEXT, donc ré-indenter leur contenu changerait le comportement à l'exécution — ils sont généralement délégués à un sous-formateur JS ou CSS puis ré-intégrés. La sérialisation des attributs normalise les guillemets (simples vs doubles) et ré-encode les délimiteurs intégrés via les références de caractères nommées &amp;, &lt;, &gt;, &quot; et la référence numérique &#39;. L'ordre des attributs n'est pas significatif dans le DOM, donc les formateurs appliquent généralement un ordre stable (id, class, puis alphabétique). Le retour à la ligne se déclenche au-delà d'un printWidth configuré : les attributs sont séparés un par ligne avec le > fermant soit sur sa propre ligne (prettier-plugin-html bracketSameLine: false), soit accolé. La minification inverse le processus — les espaces entre les balises de bloc sont supprimés, les commentaires sont retirés sauf les conditionnels IE <!--[if, et les guillemets sont supprimés des attributs dont la valeur correspond à [A-Za-z0-9._-]+. Les deux opérations sont en O(n) sur la longueur de l'entrée.

  • Parseur : construction d'arbre WHATWG HTML (section 13) via DOMParser('text/html') dans le navigateur, parse5/htmlparser2/cheerio sur Node ; la machine à états par mode d'insertion gère les balises manquantes/mal placées et le foster parenting.
  • Éléments vides (pas de balise fermante) : area, base, br, col, embed, hr, img, input, link, meta, source, track, wbr — 14 éléments selon le HTML Living Standard. L'auto-fermeture XHTML /> est tolérée mais redondante.
  • Éléments préservant les espaces : <pre> et <textarea> portent CSS white-space: pre et absorbent un saut de ligne initial ; leurs octets intérieurs ne sont jamais ré-indentés ou la sortie visible change.
  • Contextes RAWTEXT : les corps de <script> et <style> ne sont pas du HTML — ils sont délégués à des sous-formateurs JS/CSS (ou laissés tels quels). Ré-indenter du texte brut dans une expression régulière ou un littéral de chaîne casserait la sémantique d'exécution.
  • Normalisation des attributs : style de guillemets choisi (simple/double), délimiteurs intégrés ré-encodés avec les cinq références nommées (&amp;, &lt;, &gt;, &quot;, &#39;), ordre stable appliqué (id, class, puis alphabétique) puisque l'ordre DOM n'est pas significatif.
  • Retour à la ligne au-delà de printWidth (généralement 80/100/120) : attributs séparés un par ligne avec le > fermant soit sur sa propre ligne, soit accolé au dernier attribut, reproduisant l'option bracketSameLine de prettier-plugin-html.
  • Minification : réduit les espaces inter-balises, supprime les commentaires (en conservant les conditionnels <!--[if IE]>), retire les balises fermantes optionnelles (</li>, </p> quand suivis d'un frère), et supprime les guillemets des attributs correspondant à [A-Za-z0-9._-]+ ; le round-trip est en O(n).

Exemples

HTML minifié → formaté (indentation à 2 espaces)

Entrée :
<div class="card"><h2>Title</h2><p>Body text</p></div>

Formaté :
<div class="card">
  <h2>Title</h2>
  <p>Body text</p>
</div>

Formaté → minifié (déploiement en production)

Source (412 octets) :
<nav>
  <ul>
    <li><a href="/">Home</a></li>
    <li><a href="/about">About</a></li>
  </ul>
</nav>

Minifié (96 octets, -77%) :
<nav><ul><li><a href="/">Home</a></li><li><a href="/about">About</a></li></ul></nav>

Longue liste d'attributs répartie sur plusieurs lignes

Entrée :
<input type="email" id="user-email" name="email" placeholder="you@example.com" required autocomplete="email">

Formaté (retour à la ligne > 80 caractères) :
<input
  type="email"
  id="user-email"
  name="email"
  placeholder="you@example.com"
  required
  autocomplete="email"
>

Balises auto-fermantes et contenu en ligne préservés

Entrée :
<p>Click <a href="/docs">here</a> for help.<br><img src="icon.png" alt=""></p>

Formaté (les frères et sœurs en ligne restent sur une seule ligne) :
<p>
  Click <a href="/docs">here</a> for help.
  <br>
  <img src="icon.png" alt="">
</p>

FAQ

Que formate-t-il ?

Le balisage HTML : indentation, placement des attributs, gestion des lignes vides et (en option) retour à la ligne à une largeur de colonne choisie. Ne change pas le rendu — votre page a l'air identique, c'est juste la source qui est plus lisible.

Préservera-t-il mes blocs <pre>, <textarea> et <script> ?

Oui. Les espaces à l'intérieur des blocs pre, textarea, code et script sont significatifs (ils apparaissent au rendu) et le formateur n'y touche pas. Les autres éléments voient leurs espaces normalisés.

Pourquoi mes balises auto-fermantes sont-elles réécrites ?

<br/>, <img/>, <hr/> en HTML5 sont équivalents à <br>, <img>, <hr> (HTML5 n'exige pas le slash). Le formateur peut choisir un style de manière cohérente. Pour les modèles XHTML/JSX/Vue, configurez le formateur pour conserver le slash final.

Valide-t-il le HTML ?

Non. Il formate ce que vous collez. Pour valider, utilisez le validateur W3C ou les outils développeur d'un navigateur. Les problèmes courants comme les balises non fermées ou les guillemets dépareillés passent à travers le formatage.

Le HTML est-il téléversé ?

Non. Le formatage s'exécute dans votre navigateur. Le HTML collé ne traverse jamais le réseau.

Peut-il minifier le HTML ?

Oui s'il y a un mode minify. La minification HTML supprime les espaces entre les balises, regroupe les suites d'espaces dans le texte et retire les balises de fermeture optionnelles. Le résultat est plus difficile à lire mais plus petit — utile pour les builds de production.

Qu'en est-il du CSS et du JS embarqués ?

Les contenus de <style> et <script> sont généralement formatés avec leurs propres formateurs (CSS, JS) quand la page le prend en charge. Sinon leur contenu interne est laissé tel quel pour éviter de casser la syntaxe.