Comment formater ou compresser du HTML

Une zone, deux boutons. Formater Html réécrit le balisage avec une balise par ligne et les éléments imbriqués indentés, selon la largeur choisie à côté des boutons : tabulation, 2, 4 (par défaut) ou 8 espaces. Compresser HTML renvoie ce même balisage avec les espaces tassés.

Les deux boutons ne travaillent que sur le texte de la zone : aucun requête n’est partie au moment du clic. Un document de 716 Ko demande environ 2,4 secondes de formatage et 2,1 secondes de compression, et un balisage déjà écrit sans espaces superflus revient à la même taille, car le minificateur ne retire que des espaces.

  1. Collez le balisage dans la zone et réglez la largeur d’indentation si les 4 espaces par défaut ne conviennent pas.
  2. Cliquez sur Formater Html. Chaque balise se retrouve sur sa propre ligne, les éléments enfants sont indentés d’un niveau, et les suites d’espaces, de tabulations et de retours à la ligne du texte se réduisent à un seul espace.
  3. Cliquez sur Compresser HTML pour la version livrable : les suites d’espaces deviennent un espace et l’indentation disparaît, tandis que les balises, les attributs, les commentaires, les entités et le doctype restent tels quels.
  4. Copier reprend le résultat affiché et Effacer vide la zone et la zone de résultat.

Ce que chaque bouton fait des espaces

Lire ou livrer

Le formatage sert à la lecture. Chaque balise passe sur sa ligne, l’indentation suit la profondeur d’imbrication et les espaces du texte sont normalisés. L’indentation ajoutant des espaces là où il n’y en avait pas, une page formatée peut s’afficher autrement que l’original : <div><span>a</span><span>b</span></div> s’affiche « ab », la version formatée « a b ».

La compression sert à la mise en ligne. Une suite d’espaces devient un espace — comme le navigateur la lit —, le retour à la ligne entre deux éléments en ligne survit donc sous forme d’un espace au lieu d’être supprimé. Vérifié dans les six langues, le résultat compressé s’affiche à l’identique de l’entrée sur des suites en ligne, des listes, des tableaux et des blocs imbriqués.

Ce que la compression ne touche pas

Le contenu des balises pre et textarea est recopié octet par octet, car ses espaces font partie du document et non de la mise en page. Il en va de même du contenu de script et style, écrit dans d’autres langages : y supprimer un retour à la ligne transformerait la suite d’un commentaire // en code ou changerait le contenu d’un littéral de gabarit.

Les valeurs entre guillemets sont conservées à l’identique, suites d’espaces comprises, qu’elles soient dans value, title ou un attribut data-*. Le texte des commentaires, les entités telles que &nbsp; et &#169;, les balises auto-fermantes et le doctype passent aussi sans modification. Seuls les espaces entre les éléments disparaissent.

Répéter l’opération et la coupure à 80 caractères

Un second clic ne change plus rien : un document formaté se reformate à l’identique et un document compressé se recompresse à l’identique. Le panneau de résultat est un aperçu coloré : le bouton Copier, et non une sélection manuelle, est le moyen fiable de récupérer le texte.

Dans le résultat formaté, une balise dont les attributs dépasseraient 80 caractères est renvoyée à la ligne suivante, la coupure tombant entre deux attributs et jamais dans une valeur entre guillemets. Le texte n’est pas coupé, et le résultat compressé ne contient aucun retour à la ligne en dehors des blocs protégés.

Où cela s’exécute et ce que cela coûte

Le formatage et la compression s’exécutent dans la page : aucun requête n’a quitté le navigateur au clic, le balisage collé n’est donc jamais envoyé et l’outil continue de fonctionner sans réseau.

Le travail suit la taille de l’entrée. 176 Ko ont demandé environ 0,6 seconde de formatage et 0,5 seconde de compression ; une page de 716 Ko a pris 2,4 et 2,1 secondes. Le minificateur est une passe sur les espaces et non un analyseur HTML complet — il ne réécrit pas les guillemets des attributs et ne supprime pas les balises fermantes facultatives —, et le même moteur alimente le formateur JavaScript : un bloc script présent dans le balisage est donc embelli comme du JavaScript.

Outils récents :