Minifier du JavaScript
Le même type de minifieur que celui des outils de build, exécuté dans cette page. La syntaxe moderne et les modules sont compris, et votre code source n'est jamais conservé.
- Jamais conservé
- Pas de file d'attente, pas d'attente
- Sans inscription, sans filigrane
Le JavaScript minifié s'affiche ici.
Comment ça marche
Collez votre JavaScript
Ou déposez le fichier. Modules, classes et syntaxe moderne sont tous compris.
Choisissez les options
Renommer les variables locales, supprimer les appels console, garder les commentaires de licence — chaque option a son interrupteur.
Copiez ou téléchargez
Avec la taille avant et après.
Renommer, supprimer, et ce qu'il ne faut jamais toucher
Trois choses se produisent, par ordre croissant de ce qu'elles font gagner et de ce qu'elles vous coûtent. Les espaces et les commentaires disparaissent, ce qui est gratuit. Le code mort disparaît — une branche qui ne peut jamais s'exécuter, une variable affectée mais jamais lue. Et les noms locaux sont raccourcis : un calculateMonthlyTotal soigneusement nommé devient une seule lettre. C'est là que se trouve l'essentiel du gain, et c'est aussi ce qui rend le résultat illisible — ce qui convient pour la mise en production et ne sert à rien pour le débogage.
Ce qui ne peut pas être renommé, c'est tout ce que le monde extérieur désigne par son nom, et c'est en se trompant là-dessus que les minifieurs cassent du code. Les fonctions exportées, les propriétés d'objet accédées sous forme de chaînes, tout ce qui passe par window et les noms utilisés dans eval doivent rester intacts, car quelque chose ailleurs les recherche sous le nom que vous avez écrit. Les propriétés en particulier ne sont pas touchées par défaut : renommer user.emailAddress casserait tout dès que cet objet serait sérialisé en JSON ou lu par du code minifié séparément.
Gardez une source map ou l'original. Une fois les noms disparus, la pile d'appels d'une erreur chez un vrai utilisateur indique une erreur dans la fonction t au caractère 48 213, ce qui ne vous apprend strictement rien. Une source map restaure les noms et numéros de ligne d'origine dans le débogueur et dans les rapports d'erreurs, et en générer une ne coûte rien, car elle est livrée dans un fichier séparé qui ne se charge que lorsque quelqu'un ouvre les outils de développement.
Les commentaires de licence sont conservés par défaut, et c'est une position juridique plutôt qu'une préférence. Une grande partie du code open source est publiée sous licence permissive à une seule condition : que sa mention de copyright l'accompagne — les licences MIT et BSD le disent toutes deux explicitement. Retirer ces commentaires d'un bundle contenant du code tiers vous place en infraction avec la licence qui vous permettait de l'utiliser. Ils pèsent quelques centaines d'octets.
Si vous cherchez autre chose
Cette étape a sa place dans un build plutôt que dans un onglet de navigateur, et les bundlers modernes s'en chargent d'office. esbuild --minify ainsi que Rollup ou Vite minifient au build, génèrent automatiquement les source maps et — bien plus important — pratiquent le tree shaking, en éliminant les exports de vos dépendances que vous n'importez jamais. Sur une vraie application, cela fait gagner bien plus que la minification d'un fichier fini ne le pourra jamais.
Avant d'optimiser, mesurez. Un analyseur de bundle révélera généralement qu'une seule grosse dépendance représente l'essentiel du fichier — une bibliothèque de dates, un jeu d'icônes, une bibliothèque de graphiques importée en entier pour un seul graphique. La remplacer ou la charger à la demande vaut mieux que n'importe quelle minification, et le code splitting, pour qu'une page ne charge que ce dont elle a besoin, vaut mieux que les deux.
Questions fréquentes
Mon code est-il conservé quelque part ?
Non, et pour du code source, c'est tout l'intérêt. Rien n'est conservé et aucun serveur ne le voit jamais. Coller du code propriétaire dans un minifieur en ligne qui l'envoie quelque part, c'est le divulguer, quoi que le site affirme sur la conservation des données — et c'est exactement le genre de chose qu'on fait dans l'urgence, sans réfléchir.
Est-ce le même minifieur que celui de mon outil de build ?
Très probablement, oui. C'est le même type de minifieur que celui qu'utilisent webpack, Rollup, Vite et la plupart des autres bundlers. La seule différence est qu'il s'exécute ici, au lieu d'être quelque chose que vous installez.
Va-t-il changer ce que fait mon code ?
Il ne devrait pas, et c'est vérifié plutôt que supposé : nos tests minifient un module, importent la version originale et la version minifiée, les exécutent et comparent les résultats. Ce qui CHANGE en revanche : les noms des variables locales (sauf si vous désactivez cette option), les expressions constantes calculables à l'avance, et le code mort. Tout ce qui dépend du nom d'une fonction à l'exécution, ou de Function.prototype.toString, peut casser avec le renommage — désactivez-le si vous comptez sur l'un ou l'autre.
Que signifie « Analyser comme un module » ?
Cette option indique si votre code est analysé comme un module ES ou comme un script classique. Les modules peuvent utiliser import et export et sont toujours en mode strict. Elle est activée par défaut, car c'est le cas de la plupart du code moderne ; si votre fichier est un script à l'ancienne qui utilise « with » ou dépend du comportement non strict, désactivez-la.
Faut-il supprimer les appels console ?
En production, généralement oui — ce n'est que du bruit, et ils peuvent révéler des détails internes à quiconque ouvre les outils de développement. L'option est désactivée par défaut, car supprimer du code en silence n'est pas quelque chose qu'un outil devrait faire sans qu'on le lui demande.
Les commentaires de licence sont-ils conservés ?
Oui, par défaut. Les commentaires commençant par /*! et ceux qui contiennent @license ou @preserve sont conservés, car les retirer de la bibliothèque sous licence MIT de quelqu'un d'autre constitue une violation de licence. Les commentaires ordinaires sont supprimés.
Peut-il produire une source map ?
Pas sur cette page. Une source map n'est utile qu'à côté du fichier d'origine, à une URL connue, ce qui ne colle pas avec un outil où l'on colle puis copie — votre outil de build est le bon endroit pour cela.
Y a-t-il une limite de taille ?
Pas de limite fixe. Quelques milliers de lignes se minifient en bien moins d'une seconde ; un très gros fichier bundlé prend plus de temps, car il est analysé en entier avant que quoi que ce soit ne soit renommé. Si vous minifiez un bundle de production complet, votre outil de build s'y prête mieux — cette page est faite pour un fichier isolé ou une vérification rapide.
Bon à savoir : Renommer les variables locales allège le fichier et rend le résultat illisible, ce qui convient pour la mise en production et ne sert à rien pour le débogage — gardez une source map ou l'original. Les commentaires de licence sont conservés par défaut, car les supprimer peut enfreindre la licence d'un code que vous avez le droit d'utiliser.
Intégrez cet outil à votre site
Gratuit pour tout blog, page de cours ou article d'aide. Collez un seul extrait de code et vos visiteurs pourront l'utiliser directement sur votre page.
Outils associés
Minifier CSS
Allégez une feuille de style, ou sachez pourquoi c'est impossible
Minifier HTML
Allégez le HTML sans casser la page
Formateur JSON
Rendez lisible un JSON illisible
Encoder en Base64
Transformez un texte ou un fichier en Base64
Supprimer les lignes en double
Retirez les doublons, triez et nettoyez une liste
Convertisseur de casse
MAJUSCULES, minuscules, Titre, camelCase et les autres