Générateur de Slugs

Convertissez n'importe quel texte en slug URL propre et lisible

Essayer un exemple
Séparateur

Texte à convertir

Slug

Fonctionne localement · Sûr pour coller des secrets
Le slug apparaîtra ici…

Qu'est-ce qu'un slug URL ?

Un slug URL est la partie d'une adresse web qui identifie une page spécifique sous une forme lisible par un humain. Dans l'URL https://example.com/blog/mon-premier-article, le slug est mon-premier-article. Un générateur de slugs transforme un titre de page ou une description en une chaîne ne contenant que des lettres minuscules, des chiffres et des tirets (ou un autre séparateur choisi). Ce processus supprime les espaces, retire les accents et les diacritiques, élimine les caractères spéciaux et normalise les espaces en séparateurs uniques.

La génération de slugs est une étape standard dans les systèmes de gestion de contenu, les générateurs de sites statiques, les plateformes de blog et toute application qui dérive des URL depuis une saisie utilisateur. WordPress, Ghost, Hugo, Next.js et Django intègrent tous une logique de génération de slugs, car des URL lisibles améliorent à la fois la facilité d'utilisation et l'optimisation pour les moteurs de recherche. Un slug bien formé indique à l'utilisateur le contenu d'une page avant même de cliquer sur le lien.

Le terme « slug » vient de l'édition de presse, où il désignait une courte étiquette servant à identifier un article pendant la production. En développement web, le slug remplit la même fonction : c'est un identifiant compact, unique et sûr pour les URL, dérivé d'un titre ou d'un nom plus long. Comme les slugs sont générés de manière programmatique, un générateur fiable garantit la cohérence sur toutes les pages et tous les paramètres régionaux.

Pourquoi utiliser ce générateur de slugs ?

Créer des slugs URL manuellement est source d'erreurs. Oublier de supprimer un accent, laisser un double tiret ou manquer un cas particulier avec une saisie Unicode peut produire des URL cassées ou disgracieuses. Cet outil gère ces problèmes automatiquement.

Conversion instantanée
Collez ou saisissez n'importe quel texte et voyez le slug se mettre à jour en temps réel. Aucune soumission de formulaire, aucun rechargement de page. Pratique lorsque vous devez générer des slugs pour un lot de titres d'articles ou de noms de produits.
🔒
Traitement respectueux de la vie privée
Toute la génération de slugs s'exécute dans votre navigateur. Votre texte ne quitte jamais la page, ce qui vous permet de convertir en toute sécurité des titres provisoires, des noms de projets internes ou des noms de produits non encore publiés.
⚙️
Résultat configurable
Choisissez entre un tiret, un underscore ou un point comme séparateur. Activez ou désactivez la mise en minuscules. Cela couvre les conventions de slug les plus courantes dans différents frameworks et CMS.
🌐
Gestion de l'Unicode et des accents
Le générateur applique la normalisation NFD pour supprimer les diacritiques des caractères accentués. Café devient cafe, naïve devient naive. Les caractères non latins qui ne peuvent pas être translittérés sont supprimés proprement.

Cas d'usage du générateur de slugs

Développeur frontend — Planification des routes
Générez des slugs cohérents pour les routes de pages dans React Router, Next.js ou Nuxt avant de câbler les segments de route dynamiques. Vérifiez que les titres contenant des caractères spéciaux produisent des chemins propres.
Ingénieur backend — Identifiants de base de données
Créez des slugs sûrs pour les URL des enregistrements de base de données nécessitant des identifiants lisibles par un humain. Les slugs fonctionnent bien comme clés secondaires aux côtés des ID numériques pour les endpoints REST comme /api/produits/casque-sans-fil.
DevOps — Nommage des fichiers de configuration
Convertissez des noms de services ou des labels d'environnement en chaînes sûres pour le système de fichiers, destinées aux fichiers de configuration, aux tags d'images Docker ou aux noms de ressources Kubernetes où les caractères spéciaux ne sont pas autorisés.
Ingénieur QA — Génération de données de test
Générez rapidement des variantes de slugs à partir de titres de cas de test pour vérifier le routage URL, les règles de redirection et le comportement des balises canoniques dans les environnements de staging.
Ingénieur data — Normalisation des colonnes
Normalisez les en-têtes de colonnes désordonnés provenant d'imports CSV ou Excel en identifiants snake_case ou kebab-case cohérents pour une utilisation dans des schémas de base de données ou des pipelines de données.
Étudiant — Projets CMS et blog
Apprenez comment fonctionne la génération de slugs lors de la création d'un blog avec WordPress, Jekyll ou un CMS personnalisé. Utilisez cet outil pour comparer vos slugs manuels avec une implémentation de référence.

Règles de génération de slugs et gestion des caractères

La génération de slugs suit une séquence prévisible de transformations. Comprendre chaque étape vous aide à déboguer un résultat inattendu ou à construire votre propre fonction slugify.

  1. 1. Normalisation Unicode (NFD)
    Décompose les caractères combinés en caractère de base + marque de combinaison. Par exemple, é (U+00E9) devient e + accent aigu combinant (U+0301). Cela rend les diacritiques supprimables à l'étape suivante.
  2. 2. Suppression des diacritiques
    Supprime tous les caractères du bloc Unicode Combining Diacritical Marks (U+0300–U+036F). Après cette étape, café devient cafe et Ñ devient N.
  3. 3. Suppression des caractères spéciaux
    Remplace tout caractère qui n'est pas une lettre, un chiffre, un espace ou un tiret par un espace. Cela élimine la ponctuation, les symboles et les caractères sans équivalent ASCII.
  4. 4. Suppression et réduction des espaces
    Supprime les espaces en début et fin de chaîne, puis réduit toutes les séquences d'espaces, d'underscores ou de tirets consécutifs en un seul séparateur choisi.
  5. 5. Application de la casse et du séparateur
    Convertit en minuscules (optionnel) et joint les mots avec le séparateur choisi : tiret (-), underscore (_) ou point (.).

Référence des transformations de caractères

Le tableau ci-dessous montre comment les caractères courants sont traités lors de la génération de slugs :

EntréeSortieRègle appliquée
Hello Worldhello-worldLowercase + space → hyphen
Café au Laitcafe-au-laitNFD normalization strips é → e
naïve résuménaive-resumeMultiple diacritics removed
Price: $9.99!price-9-99Symbols ($, !, :) removed
too many too-manyWhitespace trimmed and collapsed
one--two___threeone-two-threeMixed separators collapsed
Привет мирprivet-mirCyrillic (if transliteration) or removed
file_name.txtfile-name-txtDots and underscores replaced
React & Vuereact-vueAmpersand removed
2026-03-302026-03-30Digits and hyphens preserved

Exemples de code

Génération de slugs dans les langages et frameworks populaires. Chaque exemple gère la normalisation Unicode, la suppression des diacritiques et l'insertion du séparateur.

JavaScript
function slugify(text, separator = '-') {
  return text
    .normalize('NFD')                   // decompose accented chars
    .replace(/[\u0300-\u036f]/g, '')    // strip diacritics
    .toLowerCase()
    .replace(/[^\w\s-]/g, ' ')          // drop special chars
    .trim()
    .replace(/[\s_-]+/g, separator)     // collapse whitespace → separator

  // slugify('Café au Lait')      → "cafe-au-lait"
  // slugify('Hello World', '_')  → "hello_world"
}

// Node.js alternative using the `slugify` npm package:
// npm install slugify
// const slugify = require('slugify')
// slugify('Hello World', { lower: true, strict: true }) → "hello-world"
Python
import re
import unicodedata

def slugify(text: str, separator: str = '-') -> str:
    """Convert text to a URL-safe slug."""
    text = unicodedata.normalize('NFD', text)
    text = text.encode('ascii', 'ignore').decode('ascii')  # strip non-ASCII
    text = text.lower()
    text = re.sub(r'[^\w\s-]', ' ', text)
    text = text.strip()
    text = re.sub(r'[\s_-]+', separator, text)
    return text

# slugify('Café au Lait')      → "cafe-au-lait"
# slugify('Hello World', '_')  → "hello_world"

# Alternative: python-slugify (pip install python-slugify)
# from slugify import slugify
# slugify('Café au Lait')  → "cafe-au-lait"
Go
package main

import (
	"regexp"
	"strings"
	"unicode"

	"golang.org/x/text/unicode/norm"
	"golang.org/x/text/transform"
	"golang.org/x/text/runes"
)

func slugify(text string) string {
	// NFD normalize and strip diacritics
	t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
	result, _, _ := transform.String(t, text)

	result = strings.ToLower(result)
	re := regexp.MustCompile(`[^\w\s-]+`)
	result = re.ReplaceAllString(result, " ")
	result = strings.TrimSpace(result)
	re = regexp.MustCompile(`[\s_-]+`)
	result = re.ReplaceAllString(result, "-")
	return result
}

// slugify("Café au Lait") → "cafe-au-lait"
// slugify("Hello World")  → "hello-world"
PHP
function slugify(string $text, string $separator = '-'): string {
    // Transliterate non-ASCII characters
    $text = transliterator_transliterate(
        'Any-Latin; Latin-ASCII; Lower()', $text
    );
    // Remove anything that is not a word char, space, or hyphen
    $text = preg_replace('/[^\w\s-]/', ' ', $text);
    $text = trim($text);
    $text = preg_replace('/[\s_-]+/', $separator, $text);
    return $text;
}

// slugify('Café au Lait')      → "cafe-au-lait"
// slugify('Hello World', '_')  → "hello_world"

Questions fréquentes

Quelle est la différence entre un slug et un chemin URL ?
Un chemin URL est le segment complet après le domaine, comme /blog/2026/mon-article. Un slug est la partie lisible qui identifie une ressource spécifique dans ce chemin, généralement le dernier segment : mon-article. Les slugs sont souvent dérivés de titres, tandis que le reste du chemin reflète la structure de routage du site.
Comment la génération de slugs gère-t-elle les scripts non latins comme le chinois ou l'arabe ?
Les générateurs de slugs standard utilisant la normalisation NFD et la suppression des diacritiques ne peuvent pas translittérer les scripts non latins. Les caractères comme les hanzi chinois ou les lettres arabes n'ont pas d'équivalent ASCII, ils sont donc supprimés lors de l'étape de nettoyage des caractères spéciaux. Pour conserver du contenu non latin dans les slugs, vous avez besoin d'une bibliothèque de translittération comme limax (JavaScript), python-slugify avec le backend unidecode, ou une table de correspondance personnalisée.
Vaut-il mieux utiliser des tirets ou des underscores dans les slugs URL ?
Google traite les tirets comme des séparateurs de mots, mais les underscores comme des connecteurs. Le slug mon-premier-article est lu comme trois mots (mon, premier, article), tandis que mon_premier_article est lu comme un seul token. Pour le SEO, les tirets sont le choix standard pour les slugs URL. Les underscores sont courants dans les noms de fichiers, les colonnes de base de données et les identifiants de programmation où ils servent de connecteurs compatibles avec les variables.
Quelle longueur doit avoir un slug URL ?
Google affiche environ 60 caractères d'une URL dans les résultats de recherche avant de la tronquer. Des slugs plus courts sont plus faciles à lire, partager et saisir. Visez 3 à 6 mots. Supprimez les mots vides (le, la, les, un, une, de, et, ou, en) lorsqu'ils ne changent pas le sens : comment-creer-app-nextjs est meilleur que comment-creer-une-app-next-js-en-2026.
La génération de slugs est-elle la même chose que l'encodage URL ?
Non. L'encodage URL (percent-encoding) remplace les caractères non sûrs par des triplets signe-pourcentage comme %20 pour un espace. La génération de slugs supprime ou remplace entièrement les caractères non sûrs, produisant une chaîne propre sans artefacts d'encodage. Un slug ne contient jamais de signes pourcentage, d'espaces ou de caractères spéciaux. L'encodage URL préserve le contenu original ; la génération de slugs le transforme en quelque chose de nouveau.
Deux titres différents peuvent-ils produire le même slug ?
Oui. Les titres qui diffèrent uniquement par la ponctuation, les accents ou la casse peuvent aboutir au même slug. Par exemple, Résumé Pratique et Resume Pratique produisent tous deux resume-pratique. Dans un contexte CMS ou base de données, vous devez effectuer un contrôle d'unicité qui ajoute un suffixe numérique (resume-pratique-2) en cas de collision.
Comment générer des slugs dans WordPress ou Django ?
WordPress génère automatiquement des slugs à partir du titre de l'article via sanitize_title(). Vous pouvez modifier le slug dans l'éditeur d'article. Django fournit la fonction slugify() dans django.utils.text, qui gère bien les entrées ASCII. Pour la prise en charge de l'Unicode, passez allow_unicode=True. Les deux plateformes stockent les slugs en base de données aux côtés du titre complet.