Titre ou texte

Slug

Qu'est-ce que le générateur de slug URL ?

Vous avez écrit un article intitulé "Comment Analyser une URL en JavaScript — Le Guide d'un Café-Bistrot (Édition 2026)" et il vous faut maintenant un chemin URL pour celui-ci. Vous ne voulez pas de %E2%80%94 dedans, ni d'espaces, ni de majuscules qui cassent sur les serveurs sensibles à la casse. Vous voulez comment-analyser-une-url-en-javascript-le-guide-d-un-cafe-bistrot-edition-2026. C'est ce que fait cet outil. Collez le titre, copiez le slug. Le terme vient du monde de l'édition — voir l'entrée Wikipédia sur les URL propres pour l'étymologie.

L'algorithme est le standard. Mettre en minuscules, puis appliquer String.prototype.normalize('NFD') pour décomposer les caractères Unicode en lettre de base plus signes combinatoires. Retirer les signes (donc é devient e, ç devient c). Gérer quelques ligatures courantes à la main — æ devient ae, œ devient oe, ø devient o, ß devient ss, ł devient l. Remplacer toute suite de caractères non-alphanumériques par un seul tiret. Couper les tirets en début et fin. Limiter à 80 caractères sur une frontière de mot pour ne pas finir avec un slug coupé en plein milieu d'un mot.

Pourquoi le kebab-case ? Parce que les tirets sont la convention. Les recommandations de Google sur la structure des URL préconisent les tirets plutôt que les underscores pour séparer les mots dans les URL — les moteurs de recherche traitent les tirets comme des frontières de mots. La RFC 3986 définit les caractères non réservés dans un chemin URL (lettres, chiffres, tiret, point, underscore, tilde) et la plupart des conventions de slug s'en tiennent à un sous-ensemble. Snake_case (mon_article) et Title-Case-Slug (Mon-Article) sont des alternatives qu'on rencontre, mais le kebab-case minuscules est la valeur par défaut partout, depuis les pratiques d'URL propres jusqu'aux paramètres par défaut de la plupart des CMS.

Comment utiliser le générateur de slug

Trois étapes. Chacune correspond à un bouton sur cette page.

1

Collez un titre ou chargez l'exemple

Mettez un titre, un intitulé, un nom de produit ou n'importe quel texte dans le panneau de gauche. Cliquez sur Exemple pour charger un exemple réaliste avec des tirets cadratins, des accents et des parenthèses — le genre de titre qui casse les codes de slug naïfs. Entrée d'exemple :

Comment Analyser une URL en JavaScript — Le Guide d'un Café-Bistrot (Édition 2026)

Tout passe — emojis, lettres accentuées, guillemets typographiques, tirets cadratins, doubles tirets, espaces multiples. Le slug ressort propre.

2

Lisez le slug

Le panneau de droite affiche le slug au fur et à mesure que vous tapez. Minuscules, avec tirets, ASCII uniquement, plafonné à 80 caractères sur une frontière de mot. Si l'entrée ne contient aucun caractère exploitable (par exemple, uniquement des emojis ou de la ponctuation), vous verrez une note amicale plutôt qu'un résultat vide déroutant.

3

Copiez ou téléchargez

Cliquez sur Copier pour envoyer le slug dans votre presse-papiers, ou sur Télécharger pour l'enregistrer en fichier .txt. Utilisez Effacer sur le panneau d'entrée pour repartir à zéro avec un nouveau titre.

Quand vous l'utiliseriez vraiment

URL d'articles de blog

Votre CMS génère des slugs automatiquement mais ils sont moches — il enlève mal les accents, laisse des underscores, ne gère pas les guillemets typographiques. Vous collez le titre ici, vous obtenez un slug propre, vous le recollez dans le champ URL. Marche pour WordPress, Ghost, des blogs Next.js faits maison, tout ce qui vous laisse remplacer le slug.

URL de produits ou catégories en e-commerce

Marco Rivera ajoute un nouveau produit appelé "Coffret Crème Brûlée — Pack de 4 (Édition Limitée)". L'URL doit être /produits/coffret-creme-brulee-pack-de-4-edition-limitee, pas /produits/Coffret+Crème+Brûlée+%E2%80%94+Pack+de+4+%28Édition+Limitée%29. Sluggez-le et insérez-le.

Noms de fichiers depuis des titres saisis par des humains

Vous enregistrez des documents téléversés sur disque et le client a tapé "Rapport T4 — Final (v3).docx" comme titre. Vous ne voulez pas ça comme nom de fichier. Sluggez le titre, ajoutez .docx, écrivez le fichier. Ça marche pareil pour les clés S3, les noms de branches GitHub depuis des titres d'issues, et les noms de canaux Slack depuis des noms de projets.

Migrer du contenu depuis un autre CMS

Priya Patel migre 800 articles d'un ancien CMS vers un nouveau et les titres source ont un encodage incohérent — certains accentués, d'autres non, certains avec des emojis d'un redesign de 2018. Passez chaque titre dans le slugger, dédupliquez, et vous avez votre nouvelle map d'URL prête pour la table de redirection.

Questions courantes

Pourquoi enlever les accents au lieu de les pourcent-encoder ?

Parce que le slug est censé être lisible par un humain. café dans le slug devient %C3%A9 dans l'URL réelle, ce qui est moche dans la barre du navigateur, casse le copier-coller dans les chats, et perd les lecteurs non techniques. Réduire à l'ASCII garde l'URL lisible et SEO-friendly. La normalisation NFD est la façon standard de faire cette décomposition.

Et les écritures non latines — chinois, arabe, hindi ?

NFD ne décompose pas les idéogrammes ni les écritures qui n'ont pas de structure base+signe-combinatoire. Donc un titre en chinois produira un slug vide ici, et vous verrez le message "aucun caractère exploitable". Pour les écritures non latines vous avez deux options : translittérer d'abord (avec une lib comme ICU ou unidecode), ou utiliser l'écriture originale dans l'URL — les navigateurs modernes et Google gèrent l'Unicode dans les URL sans problème, juste de manière moins jolie.

Pourquoi plafonner à 80 caractères ?

Pas de règle absolue, mais les URL qui dépassent ~80 caractères dans le segment de chemin commencent à mal s'enrouler dans les emails, les aperçus sociaux et les supports imprimés. La recommandation de Google ne fixe pas de chiffre mais préconise des URL "simples et descriptives" — les longues ne sont ni l'un ni l'autre. Le plafond cherche le dernier tiret avant 80 caractères pour éviter de couper en plein milieu d'un mot.

Est-ce que ça gère les emojis ?

Oui. Les emojis sont supprimés en même temps que les autres caractères non-alphanumériques. Donc "🎉 Nouveau Lancement ! 🚀" devient nouveau-lancement. Si votre slug finit vide (entrée d'emojis uniquement), vous récupérez la note amicale de slug vide plutôt qu'une URL cassée.

Quelle différence entre ça et URL-encoder le titre ?

Le URL-encodage garde chaque caractère mais échappe ceux qui ne sont pas sûrs — donc les espaces deviennent %20, les accents deviennent des octets UTF-8 pourcent-échappés. Le résultat est une URL valide mais illisible. Un slug est une chose différente : un segment de chemin convivial qui jette les caractères qui n'ont rien à y faire. Utilisez le URL-encodage pour les paramètres de requête, les slugs pour les segments de chemin. Le standard URL du WHATWG a les définitions précises des deux.

Faut-il utiliser le kebab-case ou le snake_case ?

Kebab-case (mon-article) pour les URL — c'est la convention et c'est ce que les moteurs de recherche traitent comme séparateurs de mots. Snake_case (mon_article) c'est bien pour les noms de variables et les identifiants de base de données, mais dans les URL les underscores sont souvent traités comme partie du mot, ce qui pénalise le SEO. Cet outil est en kebab par défaut. Si vous voulez du snake, faites un rechercher-remplacer des tirets dans la sortie.

Autres outils URL et texte

Un slug est une pièce d'une URL. Voici ce qui s'y associe :