Pourquoi obfusquer du JavaScript ?
Tout ce que vous livrez au navigateur : code JS, endpoints d'API, logique de paywall, vérifications de licence peut être ouvert dans DevTools en 3 secondes et lu comme un livre. L'obfuscation n'est pas du chiffrement (impossible par définition : le navigateur doit toujours exécuter le code), mais elle relève la barre technique pour qu'un `Ctrl+F` désinvolte dans l'onglet Sources ne trouve rien d'intéressant.
Les variables sont renommées en choses du type `_0x4857`, les chaînes partent dans une table de lookup chiffrée, le control flow est « aplati » et emmêlé, les nombres deviennent des expressions (`5` devient `0x1 + 0x4`). Tout se comporte identiquement à l'exécution.
Collez votre code, choisissez un preset (Low / Medium / High) ou activez les options individuelles, copiez ou téléchargez le résultat. Tout tourne dans votre navigateur : le code ne quitte jamais votre machine. Important, car vous obfusquez en général exactement le genre de chose que vous ne voulez pas partager.
Mode d'emploi
- Collez le code JavaScript dans le panneau de gauche ou cliquez sur « Upload file » pour charger `.js`, `.ts`, `.mjs` depuis le disque.
- Choisissez un preset : Low (léger maquillage), Medium (défaut raisonnable), High (brouillage maximum, runtime plus lent).
- Dépliez éventuellement les options avancées et activez les flags individuels (par exemple selfDefending, désactivez deadCodeInjection).
- À droite, vous voyez la sortie obfusquée plus une comparaison de taille : plus le preset est élevé, plus le fichier est gros.
- Testez le résultat dans DevTools : il doit se comporter à l'identique de l'original. Si quelque chose casse, redescendez le preset.
- Cliquez sur « Copier » pour coller dans votre bundler ou « Télécharger » pour enregistrer sous `obfuscated.js`.
- Livrez la version obfusquée en production. Gardez le code original privé : le fichier obfusqué est l'artefact, pas la source.
Quand ça aide
Situations concrètes où l'obfuscation est rentable :
- Un algorithme propriétaire côté client. Par exemple un moteur de recommandation custom, un algorithme de tri original, un jeu de règles de jeu navigateur sur mesure.
- Validation de licence dans une app SaaS. Le client a le JS, mais un crack rapide (« supprime ce `if (!valid) return` ») est plus dur quand `valid` n'existe plus comme nom.
- Cacher des endpoints d'API. Les URLs et clés restent visibles (à qui s'acharne), mais ne ressortent pas en un grep d'une seconde.
- Protéger le code de la concurrence. Une petite boîte qui livre une librairie SaaS hébergée par les clients : l'obfuscation augmente le coût de cloner votre logique.
- Anti-tampering pour widgets. Widgets de chat, formulaires de lead-gen, snippets analytics : l'obfuscation rend leur modification live plus difficile.
- Extensions de navigateur et userscripts. Si vous distribuez un userscript, l'obfuscation décourage le « fork et revente sous mon nom ».
Ensuite, optimisez aussi vos assets SVG ou convertissez le HTML en JSX. Pour une vraie sécurité côté client, utilisez plutôt un générateur de mot de passe fort.