Générer un slug d'URL
Un slug est ce qui reste d'un titre quand on n'a plus le droit qu'aux lettres, aux chiffres et à un séparateur. Le piège est ailleurs que dans les accents : ce sont les ligatures et les apostrophes qui cassent les implémentations rapides.
Les accents sont retirés par décomposition Unicode (NFD), les ligatures œ et æ sont développées, l'eszett allemand devient ss, et le ø danois un o.
Comment le contrôle fonctionne
- 1
Les accents sont décomposés
La normalisation NFD sépare la lettre de son accent, qui est ensuite retiré : é devient e.
- 2
Les cas que NFD ne couvre pas sont traités
œ devient oe, æ devient ae, ß devient ss, ø devient o, ł devient l.
- 3
Le reste est remplacé par le séparateur
Ponctuation et espaces deviennent des tirets, sans doublon ni tiret en bordure.
Ce qui casse les implémentations rapides
Un simple retrait des accents laisse passer « cœur » en « cur » — la ligature œ n'est pas une lettre accentuée, NFD ne la décompose pas. Même chose pour ß, ø et ł. Une apostrophe typographique (’) diffère de l'apostrophe droite (') et doit être traitée séparément.
Un slug ne se change pas
Il fait partie de l'URL, donc de l'adresse indexée. Le modifier revient à publier une nouvelle page et à perdre l'historique de l'ancienne, sauf à poser une redirection 301. Mieux vaut le figer à la publication plutôt que de le régénérer à chaque changement de titre.
Questions fréquentes
Tiret ou underscore dans une URL ?
Tiret. Google traite le tiret comme un séparateur de mots et l'underscore comme un caractère de mot : « mon_article » est lu comme un seul terme, « mon-article » comme deux. La recommandation est constante depuis quinze ans.
Faut-il garder les accents dans une URL ?
Techniquement, les URL acceptent l'UTF-8 encodé en pourcentage. En pratique, « été » devient « %C3%A9t%C3%A9 » dès qu'on copie l'adresse, ce qui est illisible dans un e-mail ou une citation. Le slug sans accent reste plus sûr.
Quelle longueur pour un slug ?
Assez pour décrire, assez court pour tenir dans un résultat de recherche : trois à six mots suffisent presque toujours. Les mots vides (le, la, de, et) peuvent être retirés sans perte de sens, mais ce n'est pas obligatoire.
Le même contrôle par API
Cet outil tourne dans votre navigateur. Pour le même contrôle dans votre code, en masse ou côté serveur, l'API répond en JSON.
Voir la documentation