Generatore di Slug

Converti qualsiasi testo in uno slug URL pulito e compatibile

Prova un esempio
Separatore

Testo di input

Slug

Esegue in locale · Sicuro per incollare segreti
Lo slug apparirà qui…

Che cos'è uno slug URL?

Uno slug URL è la parte di un indirizzo web che identifica una pagina specifica in forma leggibile dall'utente. Nell'URL https://example.com/blog/my-first-post, lo slug è my-first-post. Un generatore di slug trasforma il titolo o la descrizione di una pagina in una stringa che contiene solo lettere minuscole, numeri e trattini (o un altro separatore scelto). Questo processo elimina gli spazi, rimuove accenti e diacritici, scarta i caratteri speciali e normalizza gli spazi bianchi in singoli separatori.

La generazione degli slug è una fase standard nei sistemi di gestione dei contenuti, nei generatori di siti statici, nelle piattaforme blog e in qualsiasi applicazione che ricava gli URL dall'input dell'utente. WordPress, Ghost, Hugo, Next.js e Django includono tutti una logica di generazione degli slug perché gli URL leggibili migliorano sia l'usabilità che l'ottimizzazione per i motori di ricerca. Uno slug ben formato comunica all'utente il contenuto di una pagina ancora prima di fare clic sul collegamento.

Il termine "slug" viene dal giornalismo cartaceo, dove indicava un'etichetta breve usata per identificare un articolo durante la produzione. Nello sviluppo web, lo slug svolge la stessa funzione: è un identificatore compatto, univoco e sicuro per gli URL, derivato da un titolo o nome più lungo. Poiché gli slug vengono generati in modo programmatico, un generatore affidabile garantisce coerenza su ogni pagina e in ogni locale.

Perché usare questo generatore di slug?

Creare slug URL manualmente è soggetto a errori. Dimenticare di rimuovere un accento, lasciare un trattino doppio o non gestire un caso limite con input Unicode può produrre URL non funzionanti o poco leggibili. Questo strumento gestisce automaticamente questi problemi.

Conversione istantanea
Incolla o digita qualsiasi testo e vedi lo slug aggiornarsi in tempo reale. Nessun invio di modulo, nessun ricaricamento della pagina. Utile quando hai bisogno di slug per un insieme di titoli di articoli o nomi di prodotti.
🔒
Elaborazione privacy-first
Tutta la generazione degli slug viene eseguita nel browser. Il testo non lascia mai la pagina, quindi puoi convertire in sicurezza titoli in bozza, nomi di progetto interni o nomi di prodotti non ancora rilasciati.
⚙️
Output configurabile
Scegli tra separatori a trattino, underscore o punto. Attiva o disattiva il minuscolo. Questo copre le convenzioni di slug più comuni tra i diversi framework e CMS.
🌐
Gestione di Unicode e accenti
Il generatore applica la normalizzazione NFD per rimuovere i diacritici dai caratteri accentati. Café diventa cafe, naïve diventa naive. I caratteri non latini che non possono essere traslitterati vengono rimossi in modo pulito.

Casi d'uso del generatore di slug

Frontend Developer — Pianificazione delle route
Genera slug coerenti per le route di pagina in React Router, Next.js o Nuxt prima di collegare i segmenti di route dinamici. Verifica che i titoli con caratteri speciali producano percorsi corretti.
Backend Engineer — Identificatori di database
Crea slug sicuri per URL per i record di database che necessitano di identificatori leggibili. Gli slug funzionano bene come chiavi secondarie affiancate agli ID numerici per gli endpoint REST API come /api/products/cuffie-wireless.
DevOps — Denominazione dei file di configurazione
Converti nomi di servizi o etichette di ambiente in stringhe sicure per il file system da usare nei file di configurazione, nei tag delle immagini Docker o nei nomi delle risorse Kubernetes dove i caratteri speciali non sono ammessi.
QA Engineer — Generazione di dati di test
Genera rapidamente varianti di slug dai titoli dei casi di test per verificare il routing degli URL, le regole di redirect e il comportamento dei tag canonical negli ambienti di staging.
Data Engineer — Normalizzazione delle colonne
Normalizza le intestazioni di colonna disordinate provenienti da importazioni CSV o Excel in identificatori snake_case o kebab-case coerenti da usare negli schemi di database o nelle pipeline di dati.
Studente — Progetti CMS e blog
Impara come funziona la generazione degli slug quando costruisci un blog con WordPress, Jekyll o un CMS personalizzato. Usa questo strumento per confrontare i tuoi slug manuali con un'implementazione di riferimento.

Regole di generazione degli slug e gestione dei caratteri

La generazione degli slug segue una sequenza prevedibile di trasformazioni. Capire ogni passaggio ti aiuta a fare il debug di output inattesi o a costruire la tua funzione slugify.

  1. 1. Normalizzazione Unicode (NFD)
    Scomponi i caratteri combinati in carattere base + segno diacritico. Ad esempio, é (U+00E9) diventa e + accento acuto combinante (U+0301). Questo rende i diacritici rimovibili nel passaggio successivo.
  2. 2. Rimozione dei diacritici
    Rimuovi tutti i caratteri nel blocco Unicode Combining Diacritical Marks (U+0300–U+036F). Dopo questo passaggio, café diventa cafe e Ñ diventa N.
  3. 3. Rimozione dei caratteri speciali
    Sostituisci con uno spazio qualsiasi carattere che non sia una lettera, una cifra, uno spazio bianco o un trattino. Questo elimina la punteggiatura, i simboli e i caratteri privi di equivalente ASCII.
  4. 4. Eliminazione e compressione degli spazi bianchi
    Rimuovi gli spazi bianchi iniziali e finali, poi comprimi tutte le sequenze consecutive di spazi, underscore o trattini in un singolo separatore scelto.
  5. 5. Applicazione di maiuscole e separatore
    Converti in minuscolo (facoltativo) e unisci le parole con il carattere separatore scelto: trattino (-), underscore (_) o punto (.).

Riferimento per la trasformazione dei caratteri

La tabella seguente mostra come vengono gestiti i caratteri comuni durante la generazione degli slug:

InputOutputRegola applicata
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

Esempi di codice

Generazione degli slug nei linguaggi e framework più diffusi. Ogni esempio gestisce la normalizzazione Unicode, la rimozione dei diacritici e l'inserimento del separatore.

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"

Domande frequenti

Qual è la differenza tra slug e percorso URL?
Un percorso URL è il segmento completo dopo il dominio, come /blog/2026/my-post. Uno slug è la parte leggibile che identifica una risorsa specifica all'interno di quel percorso, tipicamente l'ultimo segmento: my-post. Gli slug sono spesso ricavati dai titoli, mentre il resto del percorso riflette la struttura di routing del sito.
Come gestisce la generazione degli slug gli script non latini come il cinese o l'arabo?
I generatori di slug standard che usano la normalizzazione NFD e la rimozione dei diacritici non sono in grado di traslitterare gli script non latini. I caratteri come i hanzi cinesi o le lettere arabe non hanno un equivalente ASCII, quindi vengono rimossi nella fase di pulizia dei caratteri speciali. Per preservare contenuti non latini negli slug, hai bisogno di una libreria di traslitterazione come limax (JavaScript), python-slugify con il backend unidecode, o una tabella di mappatura personalizzata.
È meglio usare trattini o underscore negli slug URL?
Google tratta i trattini come separatori di parole ma gli underscore come connettori. Lo slug my-first-post viene letto come tre parole (my, first, post), mentre my_first_post viene letto come un unico token. Per finalità SEO, i trattini sono la scelta standard per gli slug URL. Gli underscore sono comuni nei nomi di file, nelle colonne di database e negli identificatori di programmazione dove fungono da connettori sicuri per le variabili.
Quanto dovrebbe essere lungo uno slug URL?
Google visualizza circa 60 caratteri di un URL nei risultati di ricerca prima di troncarli. Gli slug più brevi sono più facili da leggere, condividere e digitare. Punta a 3-6 parole. Rimuovi le stop word (il, la, un, una, e, o, di) quando non cambiano il significato: come-costruire-app-nextjs è meglio di come-costruire-una-app-next-js-nel-2026.
La generazione degli slug è uguale alla codifica URL?
No. La codifica URL (percent-encoding) sostituisce i caratteri non sicuri con sequenze percent come %20 per uno spazio. La generazione degli slug rimuove o sostituisce completamente i caratteri non sicuri, producendo una stringa pulita senza artefatti di codifica. Uno slug non contiene mai simboli percentuali, spazi o caratteri speciali. La codifica URL preserva il contenuto originale; la generazione degli slug lo trasforma in qualcosa di nuovo.
Due titoli diversi possono produrre lo stesso slug?
Sì. I titoli che differiscono solo per punteggiatura, accenti o maiuscole spesso si riducono allo stesso slug. Ad esempio, Résumé Tips e Resume Tips producono entrambi resume-tips. In contesti CMS o di database, hai bisogno di un controllo di unicità che aggiunge un suffisso numerico (resume-tips-2) quando si verifica una collisione.
Come si generano gli slug in WordPress o Django?
WordPress genera gli slug automaticamente dal titolo del post usando sanitize_title(). Puoi modificare lo slug nell'editor dei post. Django fornisce la funzione slugify() in django.utils.text, che gestisce bene l'input ASCII. Per il supporto Unicode, passa allow_unicode=True. Entrambe le piattaforme memorizzano gli slug nel database insieme al titolo completo.