Minifieur HTML, gratuit
Compressez le code HTML en supprimant les commentaires, les espaces et en simplifiant les attributs.
Pourquoi la minification HTML compte encore en 2026
Le HTML est la première chose que le navigateur télécharge, parse et rend à chaque chargement de page. Le document HTML est sur le chemin de rendu critique : le navigateur ne peut pas commencer à récupérer le CSS, le JS ou les images tant qu'il n'a pas analysé assez de HTML pour découvrir ce qu'ils sont. Chaque kilo-octet de HTML transféré et parsé retarde le Time to First Byte (TTFB) et le Largest Contentful Paint (LCP), deux des trois Core Web Vitals que Google utilise comme signaux de classement. La minification HTML supprime les octets que les humains ont mis là pour la lisibilité (espaces entre balises, commentaires, syntaxe d'attributs redondante) sans changer ce que le navigateur voit. La compression Gzip et Brotli au bord du CDN gère la majeure partie du poids, les noms de balises répétés se compressent magnifiquement, mais la minification par-dessus économise encore typiquement 5 à 15 % d'octets supplémentaires en supprimant ce que le compresseur ne voit pas (octets sémantiquement morts qui se compressent en sortie similaire mais non identique). Cela paraît peu jusqu'à ce que vous le multipliiez par chaque requête de page sur un site à fort trafic ; la facture de bande passante et l'amélioration LCP comptent toutes deux à grande échelle.
Il y a deux cas complémentaires où les économies sont plus grandes : les pages rendues côté serveur (Next.js, Remix, Hugo, Eleventy) où le HTML est généré frais à chaque requête et où les templates du framework incluent souvent une indentation généreuse et des commentaires utiles ; et les builds de sites statiques où la minification tourne une seule fois au build et porte ses fruits pour toujours. Les générateurs de sites statiques modernes proposent la minification HTML comme option de build : le drapeau --minify de Hugo est arrivé en v0.47 (17 août 2018), Eleventy utilise html-minifier-terser via plugin, Next.js l'applique via SWC, et Astro 3.0 embarque la minification HTML avec l'intégration optionnelle astro-compress par-dessus. Pour du HTML écrit à la main ou des templates sans pipeline de build, ce minifieur dans le navigateur est le chemin de moindre résistance.
Ce qu'un minifieur fait réellement
- Effondrement des espaces inter-éléments. Les espaces et retours à la ligne entre balises sont supprimés,
<p> Hello </p>devient<p>Hello</p>quand c'est sûr. Le qualificatif « quand c'est sûr » importe : l'espace entre éléments inline (<span>,<a>,<em>) est rendu (donc « foo bar » doit conserver l'espace entre les span). L'espace entre éléments bloc (<div>,<p>) ne l'est en général pas. - Suppression des commentaires. Les blocs
<!-- ... -->sont supprimés. Les commentaires conditionnels (<!--[if IE]>...<![endif]-->) sont préservés quand ils sont présents, même si Microsoft a retiré le traitement des commentaires conditionnels à partir d'Internet Explorer 10, on peut les supprimer sans risque sur tout site qui ne supporte pas IE9 ou plus ancien. - Simplification d'attributs. Les guillemets d'attribut sont retirés quand la valeur ne contient ni espace, ni
>, ni=, ni guillemet de quelque sorte :class="btn"devientclass=btn. Les attributs booléens sont simplifiés :disabled="disabled",checked="checked",selected="selected",readonly="readonly"deviennent juste le nom de l'attribut. Les valeurs d'attribut par défaut sont supprimées :type="text"sur un input,type="text/javascript"sur une balise script,method="get"sur un formulaire. - Les éléments vides restent vides.
<br>,<hr>,<img>,<input>,<meta>et<link>n'ont pas de balise de fermeture en HTML5. La barre auto-fermante XHTML (<br />) est supprimée :<br />devient<br>. - Contenu protégé. Le contenu de
<pre>,<textarea>,<script>et<style>est conservé tel quel parce que ses espaces sont significatifs. Le JavaScript et le CSS inline ont besoin de leurs propres passes de minification (outils séparés).
Les cas où l'espace est significatif et qui peuvent vous mordre
Le plus grand risque dans la minification HTML est de réduire les espaces là où ils comptent. Les éléments inline avec des espaces autour d'eux rendent ces espaces sous forme d'espace visible ; foo <em>bar</em> baz a des espaces autour de bar ; si un minifieur les réduit à rien, le texte rendu devient « foobarbaz » sans séparation. Les minifieurs conservateurs préservent toujours un espace simple entre texte et éléments inline ; les minifieurs agressifs (avec conservativeCollapse: true désactivé) le retirent. Les espaces à l'intérieur d'éléments avec CSS white-space: pre sont aussi rendus ; les minifieurs ne voient pas les règles CSS et peuvent les réduire à tort. Les commentaires retirés à l'intérieur de commentaires conditionnels peuvent casser un comportement spécifique à IE sur des sites historiques. Les commentaires utilisés comme marqueurs de build (les placeholders <!---> de Vue, les <!--bindings={...}--> d'Angular) doivent survivre à la passe de minification. Les minifieurs modernes gèrent ces cas ; une approche purement par regex (cet outil) est conservatrice, elle préserve les espaces dans les blocs protégés mais n'a pas de pleine conscience inline-vs-bloc. Pour des sites de production avec beaucoup de prose riche en éléments inline, testez la sortie minifiée avant déploiement.
La syntaxe permissive de HTML5 et pourquoi XHTML a perdu
La permissivité de HTML5 est ce qui rend la minification possible tout court. XHTML (la variante abandonnée à syntaxe XML) exigeait une syntaxe stricte : chaque balise fermée, chaque attribut entre guillemets, chaque attribut en minuscules. XHTML 2.0 fut abandonné quand sa charte W3C a expiré le 2 juillet 2009 ; HTML5 est devenu une Recommandation W3C le 28 octobre 2014. HTML5 autorise délibérément plusieurs syntaxes équivalentes : <br> et <br/> sont tous deux légaux ; type="text" sur un input est la valeur par défaut et peut être omis ; les guillemets autour de class=btn sont optionnels quand la valeur est simple. Cette permissivité est exactement ce que les minifieurs exploitent : chaque élément syntaxique « optionnel » est des octets que le minifieur peut supprimer. Le compromis est que le HTML minifié est plus difficile à lire pour les humains (ce qui n'est pas grave parce que personne ne lit le HTML de production sauf via View Source).
Une brève histoire de l'outillage de minification HTML
HTMLMinifier de Will Peavy (l'outil sur willpeavy.com, milieu des années 2000 à environ 2010) fut le premier minifieur HTML basé navigateur le plus cité, un outil mono-page qui prenait du HTML collé et émettait une version dégraissée. html-minifier de kangax (Juriy « kangax » Zaytsev, annoncé le 9 mars 2010 sur son blog Perfection Kills) fut le premier minifieur HTML Node.js sérieux ; pendant près d'une décennie ce fut l'outil Node canonique, utilisé par webpack-html-plugin, les pipelines Gulp et la plupart des générateurs de sites statiques. La dernière release de kangax fut v4.0.0 le 1er avril 2019 ; le dépôt n'est plus activement maintenu depuis 2021 mais n'a pas été formellement archivé. html-minifier-terser (maintenu par Daniel Ruf avec des contributions de kangax, Alex Lam et d'autres) est le fork activement maintenu qui a repris là où kangax s'est arrêté ; c'est ce que webpack-html-plugin utilise par défaut aujourd'hui et ce que la plupart des pipelines de build font tourner. minify-html de Wilson Lin est un minifieur en Rust avec des performances substantiellement meilleures sur de gros HTML. tdewolff/minify est l'alternative Go utilisée dans Hugo et divers générateurs de sites statiques en Go. swc et Lightning CSS ont du support HTML dans leurs chaînes Rust respectives, utilisées par Next.js (qui est passé de Babel à SWC à partir de Next.js 12) et Parcel respectivement. html-minifier-next (annoncé via l'issue GitHub #1165 le 10 juillet 2025) est le nouveau fork issu de kangax vers lequel certains projets migrent.
HTML email, un autre monde
L'email HTML est son propre champ de mines de minification. Les clients de messagerie ont des parsers notoirement variés : Outlook 2007-2019 utilise le rendu HTML de Microsoft Word (conçu pour des documents traités en traitement de texte, pas pour le web), Gmail supprime les balises <style> au-delà d'un certain seuil de taille, Apple Mail et Yahoo Mail suivent les standards web de plus près. Les règles de minification HTML web ne s'appliquent pas toutes à l'email : retirer l'espace inter-balises peut casser la mise en page Outlook ; retirer les guillemets optionnels peut casser certains parsers webmail ; retirer l'attribut type="text/css" sur les balises <style> inline peut être silencieusement ignoré par Gmail. Le « bon » niveau de minification pour l'email est bien plus conservateur que pour le HTML web, typiquement uniquement la suppression de commentaires et d'espaces, en laissant le reste tranquille. Les outils spécifiques à l'email comme MJML et Foundation for Emails gèrent les bizarreries de l'HTML email à la compilation ; faire tourner un minifieur HTML web générique sur un template Mailchimp le cassera probablement dans Outlook.
AMP HTML et l'approche par validateur
Le projet Accelerated Mobile Pages de Google (lancé le 7 octobre 2015) prend l'approche inverse : au lieu de minifier après coup, AMP définit un sous-ensemble strict du HTML, déjà petit par construction. AMP exige un seul bloc inline <style amp-custom> (75 Ko maximum depuis le 13 mars 2020, relevé depuis 50 Ko), interdit la plupart du JavaScript hormis amp-script, et utilise un validateur strict pour faire respecter toutes les règles. Le projet a été dépriorisé en 2021-2022 quand le bénéfice de classement du carrousel AMP a été réduit, et beaucoup d'éditeurs ont quitté AMP au profit de HTML minifié+optimisé classique ; il reste utilisé par les éditeurs de presse qui dépendent du trafic Google Discover. La pertinence pour un minifieur HTML générique : AMP montre à quoi ressemble un standard HTML agressivement attentif aux octets, opinioné, validé et petit.
Périmètre honnête : ce que cet outil fait et ne fait pas
Cet outil est un minifieur HTML basé sur des regex, environ 30 lignes de JavaScript. Il tokenise les contenus de <pre>, <textarea>, <script> et <style> en placeholders pour que les transformations suivantes ne puissent pas les corrompre ; supprime les commentaires <!-- ... --> (avec un lookahead pour préserver les commentaires conditionnels <!--[if) ; réduit les espaces entre balises ; retire de manière conservatrice les guillemets d'attribut quand les valeurs ne contiennent que des caractères sûrs ([a-zA-Z0-9_-]+) ; et simplifie une liste codée en dur de quinze attributs booléens. Ce que cet outil ne fait pas, et que les minifieurs de production gèrent : il ne supprime pas les balises de fin optionnelles (</li>, </td> dans de nombreux contextes), cela exige de comprendre le modèle de contenu HTML5 ; il ne retire pas les attributs redondants à valeur par défaut (type="text" sur les inputs, type="text/javascript" sur les scripts) au-delà de ceux explicitement listés ; il ne minifie pas les contenus inline <style> ou <script> (utilisez les outils dédiés CSS Minifier et JS Minifier pour cela, puis recollez) ; il ne trie pas les attributs alphabétiquement (ce qui peut améliorer légèrement la compression gzip) ; il ne gère pas les règles de minification spécifiques à SVG. Pour des projets avec un pipeline de build, utilisez html-minifier-terser, minify-html ou swc ; pour du HTML ponctuel, cet outil supprime la friction.
Vie privée : pourquoi navigateur uniquement compte ici
Les minifieurs HTML côté serveur exigent l'envoi de la source. Pour des pages web publiées, c'est sans gravité (le HTML est déjà public). Pour des templates d'outils d'admin internes, des pages produit non publiées, du HTML de variantes A/B ou des templates d'email à contenu personnalisé, la minification côté serveur est une fuite. Cet outil exécute toute la transformation dans votre navigateur via JavaScript, rien ne traverse le réseau. Vérifiez dans l'onglet Network des DevTools pendant que vous cliquez sur Minifier, ou mettez la page hors ligne (mode avion) après chargement et l'outil fonctionne toujours.
Questions fréquentes
De combien mon HTML va-t-il rétrécir ?
Pour du HTML mis en forme à la main avec commentaires et indentation, attendez-vous à 10-30 % de réduction d'octets bruts ; les templates SSR avec des espaces généreux et des commentaires HTML peuvent atteindre 30-50 %. Après compression Brotli au bord du CDN, l'économie supplémentaire de la minification est plus modeste, typiquement 5-15 %, mais elle n'est pas nulle, et à grande échelle ça compte. Les minifieurs de production (html-minifier-terser, minify-html) atteignent des chiffres légèrement meilleurs parce qu'ils comprennent le modèle de contenu HTML5 et peuvent supprimer les balises de fin optionnelles.
La minification cassera-t-elle mon HTML ?
Pour du HTML où l'espace entre balises n'est pas structurellement significatif, non. Les cas à risque : paragraphes en prose avec éléments inline où l'espace est rendu (réduire l'espace entre balises <em> peut coller des mots) ; règles CSS avec white-space: pre sur des éléments autres que <pre> (le minifieur ne voit pas le CSS) ; commentaires conditionnels IE contenant des styles spécifiques à IE critiques ; marqueurs d'hydratation de framework (Vue, Angular, indices SSR de React). Testez la sortie minifiée avant déploiement, pour du HTML moderne ordinaire c'est rarement un problème.
Minifie-t-il le CSS ou le JavaScript inline ?
Non. Les contenus inline <style> et <script> sont préservés tels quels, le minifieur n'essaie pas d'interpréter la syntaxe CSS ou JS. Pour minifier les ressources inline, utilisez les outils dédiés CSS Minifier et JavaScript Minifier sur les contenus de <style> et <script> séparément, puis recollez-les dans le HTML. Pour les pipelines automatisés, html-minifier-terser appelle optionnellement clean-css et Terser sur les blocs inline (réglez les options minifyCSS et minifyJS).
Devrais-je l'utiliser pour du HTML email ?
Probablement pas. Les clients de messagerie ont des parsers notoirement variés, Outlook 2007-2019 utilise le rendu HTML de Microsoft Word, Gmail supprime les balises <style> au-delà d'un seuil de taille, divers webmails suppriment des attributs en silence. Les règles de minification HTML web ne s'appliquent pas toutes à l'email. Pour les templates d'email, utilisez des outils spécifiques à l'email comme MJML ou Foundation for Emails qui gèrent les bizarreries de l'HTML email à la compilation. Faire tourner un minifieur HTML web générique sur un template Mailchimp le cassera probablement dans Outlook.
Devrais-je l'utiliser si j'ai déjà un pipeline de build ?
Probablement pas, votre bundler le fait pour vous. Le drapeau --minify de Hugo (depuis v0.47, août 2018), le plugin html-minifier-terser d'Eleventy, le SWC de Next.js, la minification HTML intégrée à Astro 3.0, ils minifient tous automatiquement. Cet outil sert aux cas que votre pipeline de build ne couvre pas : pages HTML écrites à la main, templates de page WordPress hors thème, snippets ponctuels, ou expériences rapides où monter un pipeline de build prendrait plus de temps que le snippet lui-même.
Mon HTML est-il téléversé ?
Non. Le minifieur est du JavaScript qui tourne dans votre navigateur. Le HTML que vous collez ne traverse jamais le réseau, vérifiez dans l'onglet Network des DevTools pendant que vous cliquez sur Minifier, ou mettez la page hors ligne après chargement et confirmez que l'outil fonctionne toujours. Templates d'outils d'admin internes, pages produit non publiées, variantes A/B et templates d'email à contenu personnalisé restent sur votre appareil.
Outils associés
Minifieur CSS
Minifiez le CSS en supprimant commentaires, espaces et caractères inutiles.
Minifieur JavaScript
Minifiez le JavaScript en supprimant commentaires et espaces pour réduire la taille du fichier.
Optimiseur SVG
Optimisez et minifiez les fichiers SVG en supprimant commentaires, métadonnées et espaces inutiles.