Générateur de slug (URL)
Un outil professionnel de génération de slugs qui normalise le texte en slugs compatibles avec les URL, prenant en charge la conversion en minuscules, les séparateurs personnalisés et la suppression des mots vides anglais. Utilise la normalisation Unicode pour gérer la plupart des caractères linguistiques, garantissant que les slugs générés respectent les bonnes pratiques SEO. Idéal pour les URL d'articles de blog, le nommage de fichiers, les identifiants de base de données et autres cas d'usage. Traitement entièrement local pour protéger votre confidentialité — aucune inscription requise. Fournit des directives d'utilisation détaillées et des recommandations de bonnes pratiques pour vous aider à générer des slugs de haute qualité.
Pourquoi utiliser Slugify ?
🔍 Optimisation SEO
Les mots-clés dans les URL aident les moteurs de recherche à comprendre le contenu des pages et à améliorer leur classement. Par exemple, example.com/blog/how-to-learn-javascript est plus efficace que example.com/blog/123.
👁️ Lisibilité et partage
Les utilisateurs comprennent instantanément le contenu grâce à l'URL. Les slugs sont plus faciles à partager sur les réseaux sociaux, à mémoriser ou à saisir manuellement.
💻 Compatibilité système
Évitez les erreurs causées par les caractères spéciaux dans les noms de fichiers ou les URL. Garantit la compatibilité multiplateforme (Windows/Linux/macOS) et prévient les problèmes d'encodage.
🗄️ Adapté aux bases de données
Utilisez-les comme identifiants uniques (ex. : noms d'utilisateur, tags) pour réduire les risques d'injection SQL et améliorer l'indexation ainsi que les performances des requêtes.
Qu'est-ce qu'un slug ?
Un slug est une version raccourcie et standardisée d'un texte, utilisée comme URL, nom de fichier ou identifiant. Les traitements courants incluent la normalisation de la casse, la suppression de la ponctuation et la liaison des mots par des séparateurs.
- Priorité ASCII : Supprimez les accents et les symboles, ne conservez que les caractères alphanumériques et les espaces
- Compatibilité Unicode : Normalisez la plupart des caractères linguistiques via NFKD avant traitement
- Compatible URL : La sortie contient uniquement des lettres, des chiffres et des séparateurs — prête pour une utilisation directe dans les chemins
Questions fréquentes
Q : Comment les caractères chinois sont-ils traités ?
R : Par défaut, les diacritiques sont supprimés et les lettres en pinyin sont conservées. Le texte purement chinois peut devenir vide ; il est recommandé de convertir manuellement en pinyin avant la création du slug, ou d'utiliser un outil de conversion en pinyin.
Q : Pourquoi mon résultat est-il vide ?
R : Votre saisie peut être composée entièrement de ponctuation, de symboles ou d'espaces, ou tous les mots peuvent avoir été supprimés par le filtrage des stopwords. Essayez de désactiver l'option des stopwords ou d'ajuster votre saisie.
Q : Dois-je utiliser - ou _ comme séparateur ?
R : Pour le SEO, utilisez - (trait d'union), car Google le traite comme un espace ; _ (souligné) est traité comme un symbole de concaténation, ce qui entrave la séparation des mots. Pour les noms de fichiers, les deux sont acceptables.
Q : Y a-t-il une limite de longueur pour les slugs ?
R : Il n'y a pas de limite technique, mais il est recommandé de garder les slugs sous 50 caractères pour une meilleure affichage de l'URL et un meilleur SEO. Les slugs excessivement longs peuvent être tronqués par les moteurs de recherche.
Bonnes pratiques
Pratiques recommandées
- ✓ Restez court (moins de 50 caractères recommandé)
- ✓ Évitez les caractères spéciaux ; utilisez uniquement des lettres, des chiffres et des séparateurs
- ✓ Utilisez des minuscules pour éviter les problèmes liés à la casse
- ✓ Supprimez les mots vides pour améliorer la densité sémantique
À éviter
- ✗ N’incluez pas d’informations sensibles (ex. : identifiants, e-mails, mots de passe)
- ✗ N’utilisez pas de caractères spéciaux (ex. : @#$%^&*)
- ✗ Ne conservez pas d’espaces ni de séparateurs consécutifs
- ✗ Ne répétez pas le même mot
Détails techniques
Utilise la décomposition NFKD + suppression des diacritiques combinés (\p{M}), convertissant Café en Cafe. Prend en charge la plupart des caractères latins.
Basée sur des mots anglais courants (a/an/the/and/or/of/to/in/on/for/at/by/with) ; personnalisable. Les mots vides chinois nécessitent un traitement distinct.
Requiert ES6+ et la prise en charge des expressions régulières Unicode (\p{...}). Pris en charge par les navigateurs modernes : Chrome 64+, Firefox 78+, Safari 11.1+.
Comment générer un slug avec un langage de programmation ?
JavaScript
function slugify(text) {
return text
.toLowerCase()
.normalize("NFKD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/[^\w\s-]/g, "")
.trim()
.replace(/[\s_-]+/g, "-")
.replace(/^-+|-+$/g, "");
}
PHP
function slugify($text) {
$text = mb_strtolower($text);
$text = iconv("UTF-8", "ASCII//TRANSLIT", $text);
$text = preg_replace("/[^\w\s-]/", "", $text);
$text = preg_replace("/[\s_-]+/", "-", $text);
return trim($text, "-");
}
Python
import re
import unicodedata
def slugify(text):
text = text.lower()
text = unicodedata.normalize("NFKD", text)
text = text.encode("ascii", "ignore").decode("ascii")
text = re.sub(r"[^\w\s-]", "", text)
text = re.sub(r"[\s_-]+", "-", text)
return text.strip("-")
Go
import (
"regexp"
"strings"
"golang.org/x/text/unicode/norm"
)
func Slugify(text string) string {
text = strings.ToLower(text)
text = norm.NFKD.String(text)
re := regexp.MustCompile(`[^\w\s-]`)
text = re.ReplaceAllString(text, "")
re = regexp.MustCompile(`[\s_-]+`)
text = re.ReplaceAllString(text, "-")
return strings.Trim(text, "-")
}
Ruby
require "unicode"
def slugify(text)
text = text.downcase
text = Unicode.nfkd(text).gsub(/[^\x00-\x7F]/, "")
text = text.gsub(/[^\w\s-]/, "")
text = text.gsub(/[\s_-]+/, "-")
text.strip.gsub(/^-+|-+$/, "")
end
Java
import java.text.Normalizer;
public static String slugify(String text) {
text = text.toLowerCase();
text = Normalizer.normalize(text, Normalizer.Form.NFKD);
text = text.replaceAll("[^\\w\\s-]", "");
text = text.replaceAll("[\\s_-]+", "-");
return text.replaceAll("^-+|-+$", "");
}