KeroTools

Minifier du JavaScript avec Terser

Minifiez votre JavaScript avec Terser pour réduire la taille du fichier et accélérer votre site.

Entrée
0 caractères
Sortie

Votre source reste sur votre appareil

Rien à supprimer ensuite

Conçu pour du code propriétaire

Fonctionne dans tout navigateur moderne

Comment ça marche

  1. 1

    Collez votre JavaScript

    Un module, un script ou un extrait que vous voulez plus léger avant la mise en ligne.

  2. 2

    Vérifiez le résultat

    Comparez les tailles et lisez les avertissements avant de remplacer quoi que ce soit.

  3. 3

    Copiez la sortie

    Emportez-la dans une sortie de build, un gabarit ou une balise de script en ligne.

Pourquoi cet outil

Renommage local sûr

Seuls les liens dont l’outil voit toutes les références sont raccourcis, et c’est ce qui garde la sortie fonctionnelle.

Tailles avant et après

Le gain brut affiché à côté de ce qu’il devient après compression, qui est le chiffre qui compte.

Erreurs de syntaxe signalées

Une entrée invalide indique où elle a échoué au lieu de produire une sortie qui casse au chargement.

Commentaires retirés, directives conservées

Les en-têtes de licence et `"use strict"` survivent, car les supprimer change le comportement ou enfreint une licence.

Rien n’est envoyé

Le code est traité dans votre navigateur : une source propriétaire n’atteint jamais un serveur.

Gratuit et sans compte

Aucune inscription, aucun filigrane et aucune limite sur la quantité minifiée.

Le gain vient du renommage, non de la suppression des espaces

Retirer espaces et commentaires est la partie visible et la plus petite. L’essentiel de la réduction dans un vrai fichier vient du raccourcissement : chaque variable locale, paramètre et nom de fonction est remplacé par un ou deux caractères, si bien que `calculateTotalPrice` devient `t` et qu’une base de code descriptive s’effondre. C’est aussi là que réside tout le risque. Un minificateur ne peut renommer un lien en sécurité que lorsqu’il voit chaque endroit où ce lien est référencé, ce qui est le cas pour tout ce qui est porté par la portée d’une fonction. Il ne voit pas une référence faite depuis une chaîne, et ce sont précisément ces références qui cassent. Comprendre cette seule distinction explique tous les bogues de minification que vous risquez de rencontrer et vous dit où regarder quand le code minifié échoue là où l’original fonctionne.

Ce qu’il ne faut pas renommer, et pourquoi l’outil ne peut pas le savoir

Les cas dangereux partagent une même forme : un nom écrit comme du texte à un endroit que le minificateur ne lit pas comme du code. Accéder à une propriété par `obj["someKey"]` tout en l’écrivant `obj.someKey` ailleurs signifie qu’une forme est renommée et l’autre non. Les clés d’objet qui doivent correspondre à une charge JSON d’une API posent le même problème : renommez la clé et la requête cesse de correspondre au serveur. Les anciens cadres d’injection de dépendances lisent les noms de paramètres pour décider quoi injecter, raison pour laquelle minifier une application AngularJS sans l’étape d’annotation fut une manière célèbre de la casser entièrement. Tout ce qui inspecte `Function.name` ou un nom de classe à l’exécution — dont certaines logiques de sérialisation et de journalisation — présente la même exposition. Règle pratique : les noms qui franchissent une frontière — charge réseau, gabarit, recherche par chaîne — doivent être entre guillemets et laissés tranquilles.

Les cartes de sources rendent la sortie déboguable et peuvent divulguer votre code

Le code minifié produit une trace pointant vers la ligne 1, colonne 48 000, ce qui est inutile. Une carte de sources est le correctif standard : un fichier distinct associant des positions de la sortie à l’original, pour que le navigateur vous montre le code que vous avez écrit. Produisez-les — l’alternative est déboguer la production à l’aveugle. Ce qu’il faut prévoir, c’est où la carte se trouve. Une carte de sources contient votre source d’origine, généralement avec les commentaires que vous avez retirés, et si elle réside à une adresse publiquement accessible référencée par un commentaire en bas de votre bundle, n’importe qui peut la récupérer et lire votre code non minifié. Acceptable en logiciel libre, véritable divulgation autrement. La réponse usuelle : téléverser les cartes vers votre service de suivi d’erreurs et ne pas les servir publiquement, ou les restreindre aux requêtes authentifiées.

La minification n’est pas de l’obscurcissement et ne protège rien

Il faut le dire nettement, car la croyance est répandue : raccourcir des noms ne cache pas la logique. Le code minifié se réindente en une étape avec n’importe quel formateur et, même sans les noms, la structure, les chaînes, les points d’accès d’API et l’algorithme restent intacts et lisibles. Qui veut comprendre votre code côté client y parviendra, et en quelques minutes. Cela compte parce que cela mène à de vraies erreurs — une clé d’API versée dans un bundle en supposant que la minification la dissimule, ou un indicateur de fonctionnalité vérifié côté client et pris pour un contrôle d’accès. Si un code ou une valeur doit rester secret, il ne peut pas parvenir à un navigateur ; la seule frontière fiable est votre serveur. Des obscurcisseurs délibérés existent, augmentent quelque peu l’effort au prix élevé de la taille et de la vitesse, et ne changent pas cette conclusion.

La compression sur le réseau fait l’essentiel de ce qu’on attribue à la minification

Présenter la minification comme une économie de bande passante a dix ans de retard, car tout est désormais servi en gzip ou brotli, et ces algorithmes excellent précisément sur ce que la minification retire. Espaces répétés et longs identifiants répétés se compriment jusqu’à presque rien : un fichier minifié et un fichier formaté diffèrent donc souvent bien moins après compression qu’avant — d’où le fait que la taille qui compte est la taille compressée, et que cet outil affiche les deux. La minification garde sa place pour deux autres raisons : moins de source, c’est moins à analyser et compiler avant que quoi que ce soit ne s’exécute, ce qui est mesurable sur mobile ; et les octets sont aussi plus petits avant compression. Mais si vous choisissez où investir sur la taille d’un bundle, retirer le code inutilisé l’emporte largement sur le raccourcissement des noms.

Pourquoi minifier en local compte pour ce type de texte

L’entrée d’un minificateur est du code source, et le code source est ce qu’une entreprise souhaite le moins publier. Il porte les adresses de vos points d’accès, les noms internes de vos fonctions et modules, les commentaires expliquant à quoi sert un contournement, parfois une clé qui ne devrait pas s’y trouver, et la structure d’un système qui a coûté un réel effort de conception. Coller un fichier propriétaire dans un minificateur hébergé envoie tout cela à un tiers en échange d’une réduction de taille que vous pouviez obtenir en local. Cet outil traite le code dans la page et ne transmet rien, ce que vous pouvez vérifier dans l’onglet Réseau des outils de développement — et pour le seul type de texte qui constitue littéralement la propriété intellectuelle de votre employeur, c’est le comportement raisonnable.

Erreurs courantes à éviter

  • Mélanger `obj.someKey` et `obj["someKey"]` pour la même propriété. Une forme est renommée, l’autre non : après minification, les deux ne désignent plus la même chose.
  • Renommer des clés qui doivent correspondre à une charge réseau. Les clés envoyées à une API ou reçues d’elle sont appariées comme des chaînes par le serveur — mettez-les entre guillemets.
  • Dépendre de noms de paramètres ou de fonctions à l’exécution. L’injection par nom de paramètre et la logique lisant `Function.name` cassent, car ces noms sont précisément ce que le raccourcissement remplace.
  • Publier des cartes de sources à une adresse publique. Une carte contient votre code d’origine, commentaires retirés compris — téléversez-la vers votre suivi d’erreurs plutôt que de la servir à côté du bundle.
  • Prendre la minification pour une protection. Le code minifié se réindente en une étape et chaînes, points d’accès et algorithme restent lisibles : rien de secret ne peut partir vers un navigateur.

Comparaison

CritèreCet outilMinificateurs en ligneUne chaîne de build
Source envoyée à un serveurJamaisLe plus souventNon
Taille compressée affichéeOuiRarementAvec un greffon
Installation nécessaireAucuneAucuneConfiguration
Retire le code inutiliséNonNonOui
Compte ou inscriptionPas nécessaireParfois exigéPas nécessaire
PrixGratuitGratuit / offres payantesGratuit

Fonctionnalités

Raccourcissement des identifiants

Noms de variables et de fonctions locales raccourcis — c’est de là que vient l’essentiel de la réduction.

Suppression des espaces et commentaires

Tout ce que l’analyseur ignore est retiré, y compris les retours à la ligne qui rendent le fichier lisible.

Mesure consciente de la compression

Taille minifiée et taille compressée, puisque seule la seconde parvient à l’utilisateur.

Syntaxe moderne prise en charge

Classes, fonctions fléchées, littéraux de gabarit, chaînage optionnel et syntaxe de modules sont compris.

Supporte les gros fichiers

Des bundles entiers se minifient sans envoi ni plafond de taille.

Formatage inverse

Un mode d’embellissement aussi, car lire du code tiers minifié est un besoin fréquent.

Rien à installer

Pas d’outil de build, pas d’environnement d’exécution, pas de dépendances : tout se passe sur la page web.

Compatible arabe et RTL

Interface complète en huit langues, dont l’arabe de droite à gauche.

Sécurisé par défaut

Servi en HTTPS, sans suivi du contenu ni envoi à un tiers.

Qui l’utilise

Développeurs front-end

Alléger un script autonome qui ne passe pas par une étape de build.

Ingénieurs performance web

Comparer tailles minifiée et compressée pour voir où se situe réellement le gain.

Développeurs lisant du code tiers

Employer le sens embellissement pour rendre lisible une bibliothèque minifiée.

Qui intègre un script

Ramener un petit extrait à une taille raisonnable pour l’insérer dans une page.

Questions Fréquentes

Non. Tout s’exécute localement dans votre navigateur — votre texte n’est jamais envoyé, stocké ni partagé.

Oui — entièrement gratuit, sans compte et sans limite.