Ce qui fait un bon slug d'URL : stabilité, lisibilité et le conflit entre les deux
Publié le 26/11/2025 · 15 min de lecture · Outils marketing & SEO
Camille Laurent — Rédactrice Finance chez OneKitly
Fiscalité · Finances personnelles
Vérifié à partir de 5 sources
Un slug est la partie lisible du chemin d'une URL, et on lui demande deux choses incompatibles : rester identique pour toujours, car chaque lien et chaque signal de classement pointe vers la chaîne exacte, et bien se lire, car les humains comme les moteurs la voient. Optimiser la lisibilité, c'est le réécrire quand le titre s'améliore ; optimiser la stabilité, c'est n'y toucher jamais. Google recommande le tiret plutôt que le tiret bas, des mots dans la langue du lecteur, et l'encodage pourcent pour tout ce qui sort de l'ASCII — c'est là que la lisibilité casse, puisqu'un slug allemand de 27 caractères en fait 37 une fois encodé et qu'un slug CJK de quatre caractères en fait 36. Ce site règle le conflit en séparant les deux missions : un identifiant interne qui ne change jamais, et un segment public dérivé du titre propre à chaque langue, plafonné à 70 caractères, les mots vides n'étant retirés que si ce plafond est dépassé. Sur l'exécution du 9 août 2026, cela a produit six slugs publics distincts pour les 1 736 outils et les 631 articles, avec deux collisions arbitrées de façon déterministe. S'il faut changer un slug, redirigez de façon permanente : les robots de Google suivent jusqu'à dix sauts de redirection, donc les chaînes sont survivables mais pas gratuites, et une redirection temporaire ne transmet aucun signal canonique.
Un slug a deux missions qui se contredisent : c'est un identifiant permanent et c'est un texte lisible. Longueur, tirets, mots vides, dates, caractères non ASCII et le motif identifiant + slug qui obtient les deux propriétés — avec les vrais chiffres d'un site qui localise 1 736 slugs d'outils en six langues.
Deux missions, une seule chaîne
Le slug est le dernier segment du chemin d'une URL — la partie qui dit ce qu'est la page. Il est à la fois un identifiant, car les liens, les favoris, les lignes d'analytics et la mémoire de classement d'un moteur sont tous indexés sur la séquence d'octets exacte, et une étiquette, car il apparaît dans la barre d'adresse, dans un message partagé, et souvent dans le résultat lui-même. Les identifiants veulent être immuables. Les étiquettes veulent être améliorées. Voilà toute la tension, et chaque règle sur les slugs est une manière de la gérer.
Le côté identifiant est celui qui coûte cher quand on se trompe. Change un slug et chaque lien externe pointe désormais vers une URL qui n'existe plus. Une redirection permanente répare cela : la documentation de Google indique que le pipeline d'indexation se sert d'une redirection permanente comme signal que la cible doit être canonique, tandis qu'une redirection temporaire n'est explicitement pas utilisée ainsi. Le type de redirection compte donc plus qu'on ne le croit, et l'instinct courant qui pousse à un 302 parce que le changement semble réversible est précisément à l'envers.
Les redirections s'accumulent aussi. La documentation de Google indique que ses robots suivent par défaut jusqu'à dix sauts de redirection. Dix, c'est un budget généreux, mais c'est un budget, et un site qui renomme ses slugs tous les deux ans le dépense en silence : un lien de huit ans peut déjà se trouver à quatre sauts de la page. Chaque saut est aussi un aller-retour de plus pour un humain sur une connexion lente. La règle pratique n'est pas « ne jamais chaîner » mais « aplatir » : quand tu ajoutes le saut numéro deux, réécris le saut numéro un pour qu'il pointe vers la destination finale.
Tirets, tirets bas, et pourquoi la convention existe
Le guide de Google sur la structure des URL est ici inhabituellement direct : il recommande le tiret plutôt que le tiret bas pour séparer les mots, parce que cela aide les utilisateurs comme les moteurs à mieux identifier les concepts dans l'URL. La raison est historique et mécanique, pas esthétique. Un tokeniseur découpe sur les caractères qui ne sont pas des caractères de mot, et le tiret bas a traditionnellement été traité comme un caractère de mot — la convention qui permet à un identifiant comme max_speed de rester un seul token dans du code source. Ainsi chaussures_rouges peut se tokeniser en un terme et chaussures-rouges en deux.
Savoir si un moteur moderne se comporte encore ainsi n'est vérifiable par personne de l'extérieur, et cela importe peu : la convention est désormais si universelle qu'un slug à tirets bas signale surtout un site que personne n'a regardé depuis dix ans. Le seul endroit où la distinction mord encore fort, c'est un tiret à l'intérieur d'un mot composé. En allemand un composé est un seul mot, donc un slug qui le coupe par un tiret sépare un terme qui devrait rester entier. Ce site règle cela en dérivant le slug allemand du titre allemand, qui écrit déjà le composé en un mot, plutôt qu'en traduisant un slug anglais mot à mot.
Longueur, et où un résultat cesse d'afficher le chemin
Personne ne publie de limite de caractères pour les slugs, parce qu'il n'y en a pas. Ce qui existe, c'est un budget d'affichage : un résultat montre le nom du site et un chemin raccourci, et la barre d'adresse d'un navigateur a une largeur finie. Les deux tronquent, les deux tronquent différemment sur un téléphone, et ni l'un ni l'autre n'est documenté. Une règle de longueur se choisit donc, elle ne se consulte pas. Ce site a choisi 70 caractères, et le corpus contient désormais des slugs qui l'atteignent exactement — le plus long est le slug portugais de 70 caractères quantos-montantes-parede-preciso-estrutura-por-espacamento-comprimento.
L'intéressant est ce qui se passe quand un titre dépasse le budget. Tronquer au milieu d'un mot produit un slug qui se lit comme une erreur. Tronquer à une frontière de mot fait perdre les mots arrivés en dernier, qui dans la plupart des langues sont les plus spécifiques. Le générateur fait ici autre chose : il retire d'abord les mots vides — le, la, les, de, des, du, un, une, et, pour, votre, vos en français, et les listes correspondantes dans les cinq autres langues — et seulement ensuite supprime des mots en queue, sans jamais descendre sous trois. Cet ordre compte, car un mot vide est la seule partie d'un slug qui ne porte aucun signal de recherche et coûte de vrais caractères.
Il y a une seconde coupe qui intervient avant tout cela. Un titre de la forme « Titre principal : le qualificatif » ou « Titre principal (une incise) » contient deux choses, et seul le titre principal a sa place dans un chemin — le qualificatif, c'est le rôle de la méta-description. Le générateur supprime donc les parenthèses et coupe au premier deux-points ou tiret avant même de sluguifier. Cette seule règle élimine la plupart des problèmes de longueur avant que la liste de mots vides ne soit consultée.
La question du non-ASCII, tranchée six fois
Le guide de Google recommande d'utiliser des mots dans la langue du lecteur, translittérés le cas échéant, et d'encoder en pourcent tout ce qui sort de la plage ASCII. Ces deux phrases sont en tension pour toute langue accentuée, et cette tension se mesure. Encode la locution allemande grundstücksfläche-berechnen et 27 caractères en deviennent 37 — une expansion de 37,0 %, car ü et ä coûtent chacun six caractères, %C3%BC et %C3%A4. Un slug espagnol avec un seul ñ grossit de 19,2 %. Un slug cyrillique de quinze caractères en fait 85, soit 5,67 fois plus. Un slug CJK de quatre caractères en fait 36, neuf fois plus.
Que cela compte ou non dépend entièrement de l'endroit où l'URL sera vue. Un navigateur moderne redécode le chemin en caractères lisibles dans la barre d'adresse, donc un lecteur sur le site voit les accents. Colle la même URL dans un e-mail en texte brut, un client de messagerie qui ne décode pas, un rapport d'analytics, un tableur, une ligne de log ou une diapositive imprimée, et le lecteur voit les signes pourcent. Une URL est copiée plus souvent qu'elle n'est tapée, et la copie atterrit assez souvent dans le contexte laid pour que ce soit un coût réel, pas théorique.
Ce site tranche par langue plutôt que de prétendre qu'une réponse convient aux six. L'allemand transforme ä, ö, ü et ß en ae, oe, ue et ss, ce qui est la convention allemande ordinaire pour du texte ASCII et donne grundstuecksflaeche-berechnen en 29 caractères — huit de moins que la forme encodée, et lisible partout. Les cinq autres retirent l'accent, donc contraseñas devient contrasenas et régime devient regime. Aucun des deux choix n'est faux ; ce sont des réponses différentes à la question de ce qu'un lecteur de cette langue attend d'un mot dépouillé.
Six langues, six slugs, un seul identifiant
Le motif qui obtient les deux propriétés à la fois est ancien et sans gloire : garder un identifiant stable qui ne change jamais, et laisser la partie lisible être dérivée plutôt qu'écrite. Les forums et les gestionnaires de tickets le font avec un identifiant numérique suivi d'un slug, de sorte que /42/un-vieux-titre et /42/n-importe-quoi résolvent tous les deux, et que le slug peut être réécrit sans casser un lien. Ce site fait la même chose avec un identifiant textuel plutôt qu'un nombre : le nom en registre d'un outil ou d'un article ne bouge jamais, et le segment public est généré à partir du titre propre de cet élément dans chaque langue.
L'exécution du 9 août 2026 a couvert 1 736 outils et 631 articles sur six locales. Rien n'est retombé sur l'identifiant faute de texte exploitable, et exactement deux slugs d'outils et deux slugs d'articles sont entrés en collision à l'intérieur d'une locale, arbitrés en ajoutant la partie distinctive de l'identifiant — de façon déterministe, donc une réexécution produit une sortie identique octet pour octet. Le taux de divergence est le chiffre intéressant : en français, espagnol, portugais et italien, les 1 736 slugs d'outils diffèrent tous de l'identifiant, en allemand 1 705 d'entre eux, et en anglais seulement 397, car les identifiants étaient anglais au départ.
Dériver le slug du titre traduit règle aussi un problème auquel personne ne pense avant de le rencontrer : l'élision. Un outil français nommé Calculateur d'IMC ne doit pas devenir calculateur-dimc, et un outil italien nommé Calcolatrice dell'IVA ne doit pas devenir calcolatrice-delliva. Le générateur transforme l'apostrophe en frontière puis supprime la particule élidée, si bien qu'ils deviennent calculateur-imc et calcolatrice-iva. C'est une règle propre à la langue, sans équivalent anglais, et c'est le genre de chose qu'une table de traduction écrite à la main rate à l'entrée numéro quatre cents.
Les dates, et les autres choses qui périment dans un chemin
Une date dans un slug est une promesse que tu regretteras. Ce n'est pas une question de classement — personne n'a montré qu'une année dans un chemin aide ou nuit — c'est une question de maintenance. Dès que l'article est mis à jour, le chemin dit quelque chose de faux, et les deux issues sont mauvaises : le laisser périmé, ou renommer et rediriger. Les blogs qui mettent /2019/03/ dans le chemin ont le même problème un cran plus haut, et ils le résolvent en général en ne mettant jamais rien à jour.
La même logique vaut pour tout ce qui décrit un état plutôt qu'un sujet : un numéro de version, un prix, une saison, un pays que tu livres actuellement, le mot « nouveau ». Mets l'état dans la page et dans les données structurées, où le changer ne coûte rien, et garde un chemin qui décrit la chose. Si la date fait réellement partie de l'identité — les règles fiscales d'une année précise, le calendrier d'une saison précise — alors elle a sa place, car cette page porte vraiment sur cette année-là et ne sera jamais mise à jour pour porter sur une autre.
| Décision | Si tu optimises la lisibilité | Si tu optimises la stabilité | Ce que fait ce site |
|---|---|---|---|
| Langue du segment | La langue du lecteur | Une seule langue partout | Six, dérivés du titre propre à chaque langue |
| Caractères accentués | Les garder, et accepter les échappements pourcent | Les retirer, et accepter la perte | L'allemand mappe en ae/oe/ue/ss ; les cinq autres retirent l'accent |
| Séparateur de mots | Le tiret — Google le recommande explicitement | Le tiret — même réponse, rien à arbitrer | Le tiret, l'apostrophe étant traitée comme une frontière |
| Longueur | Aussi long que le titre l'exige | Court, pour n'avoir jamais à raccourcir plus tard | Plafonné à 70 caractères ; les mots vides ne sautent qu'au-delà |
| Date dans le chemin | Utile quand la page porte vraiment sur cette année | Jamais — cela garantit un renommage futur | Pas de date ; la date de publication vit dans la page et son schéma |
| Renommer un slug | Chaque fois que le titre s'améliore | Jamais, dès que quelque chose y renvoie | Librement — l'identifiant ne bouge jamais, seul le segment public change |
Questions fréquentes
- Changer un slug d'URL nuit-il au classement ?
- Cela te coûte les liens accumulés si tu ne rediriges pas, et cela coûte un peu même si tu rediriges. La documentation de Google indique qu'une redirection permanente sert au pipeline d'indexation de signal que la cible doit être canonique, donc une redirection permanente correctement posée préserve le signal ; une redirection temporaire non, explicitement. Ce qui est irrécupérable, c'est tout ce qui ne suit pas les redirections — une URL imprimée, une citation codée en dur, une copie collée dans un document. La réponse honnête est que le renommage lui-même est bon marché et que la traîne de références cassées ne l'est pas : renomme quand l'ancien slug est réellement faux, pas quand le nouveau serait un peu plus joli.
- Quelle longueur doit avoir un slug ?
- Il n'y a pas de limite publiée : choisis-en une et applique-la. Ce site utilise 70 caractères, ce qui tient confortablement un titre dans les six langues tout en restant dans ce qu'un résultat et une barre d'adresse affichent sans tronquer sur un téléphone. Ce qui compte plus que le nombre exact, c'est l'ordre des opérations quand tu le dépasses : supprime d'abord le sous-titre après les deux-points, puis les mots vides, puis les mots de fin — et ne coupe jamais au milieu d'un mot, car un slug qui se termine par un fragment se lit comme un bug, pas comme une page.
- Dois-je traduire mes slugs ou les garder en anglais ?
- Traduis-les si tu as de vraies traductions de la page. Le guide de Google sur les URL recommande d'utiliser des mots dans la langue de ton audience, translittérés le cas échéant, et la raison est simple : un lecteur allemand qui atterrit sur une page allemande dont le chemin finit par un mot anglais s'est vu présenter deux noms pour une seule chose. Le mode d'échec à éviter est un chemin traduit à la machine sur une page par ailleurs anglaise — c'est pire que de ne pas y toucher. Dérive le slug du titre traduit que tu as déjà, pas d'une traduction séparée du slug lui-même.
- Puis-je utiliser des caractères accentués ou non latins directement dans un slug ?
- Techniquement oui — le navigateur les encode pour toi et le guide de Google dit simplement que les caractères non ASCII doivent être encodés en pourcent. Pratiquement, décide où l'URL sera lue. Dans une barre d'adresse, elle se redécode en forme accentuée et paraît très bien. En texte brut, non : un slug allemand de 27 caractères devient 37 caractères d'échappements, un slug cyrillique de 15 en devient 85, et un slug CJK de quatre en devient 36. Pour une langue en écriture latine, translittérer ou retirer l'accent achète de la lisibilité partout pour presque rien. Pour une écriture non latine, l'arbitrage est réellement plus dur, car retirer n'est pas une option et tes lecteurs ne verront de toute façon jamais la forme encodée dans leur propre navigateur.
- Le motif identifiant + slug vaut-il le vilain numéro dans l'URL ?
- Il en vaut la peine dès que les titres changent et que les liens comptent, ce qui décrit la plupart des contenus qui vivent plus d'un an. Le numéro achète la capacité de réécrire la partie lisible à volonté, sans redirection ni chaîne, car la résolution n'en a jamais dépendu. Le coût est un chemin qui a l'air généré par une machine. Ce site prend la voie médiane : l'identifiant est une chaîne lisible plutôt qu'un nombre, il n'apparaît pas du tout dans le chemin public, et le slug par langue lui est remappé — un titre renommé change donc six slugs publics et ne casse rien en interne.
Articles qui pourraient t'intéresser
Tous les guides →Outils similaires
Sources
- Google Search Central — Keep a simple URL structure — hyphens over underscores, percent-encoding for non-ASCII, words in the audience's language
- Google Search Central — Redirects and Google Search — a permanent redirect is a canonical signal, a temporary one is not
- Google Search Central — HTTP status codes and network errors — "By default, Google's crawlers follow up to 10 redirect hops"
- IETF — RFC 3986, Uniform Resource Identifier (URI): Generic Syntax — percent-encoding and path segments
- WHATWG — URL Standard — percent-encode sets and how browsers render encoded paths
Tu as repéré une erreur dans cet article ?