Slug per URL
Uno slug è la parte finale e leggibile di un indirizzo web, derivata dal titolo di una pagina o di un prodotto: minuscolo, senza accenti né spazi, con i trattini al posto giusto. Questo strumento del KIT genera lo slug corretto da qualunque titolo italiano, pronto da incollare nel CMS.
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
Perché lo slug conta per la SEO, non solo per l'estetica
Un indirizzo come /articolo?id=4821 non dice nulla a chi lo legge né a Google; /guida-fattura-elettronica-xml sì. Lo slug finisce nell'URL che l'utente vede nei risultati di ricerca e nella barra degli indirizzi, quindi conviene che contenga la parola chiave del contenuto, sia breve e resti leggibile anche staccato dal resto della pagina. Cambiarlo dopo la pubblicazione, poi, rompe i link già condivisi: meglio deciderlo bene la prima volta.
Accenti, apostrofi e maiuscole: dove si sbaglia di più
L'italiano è pieno di à, è, ò e apostrofi — 'perché', 'un'ora', 'città' — che in un URL non possono restare così: uno slug ammette solo lettere minuscole senza accenti, numeri e trattini. Questo strumento converte à in a, rimuove l'apostrofo invece di lasciarlo codificato in modo illeggibile, e sostituisce ogni spazio con un trattino singolo, anche quando il titolo ne ha diversi di fila.
Uno slug alla volta o un intero catalogo
Per un articolo basta incollare il titolo e copiare il risultato. Per un catalogo di centinaia di prodotti — nomi con marchio, taglia, colore — farlo a mano non è sostenibile: via API generi lo slug per ogni riga di un file, mantenendo la stessa logica di conversione usata qui, così il sito resta coerente dal primo al millesimo prodotto.
Nel browser, senza inviare nulla online
La conversione avviene interamente sul tuo dispositivo: il titolo di un articolo non ancora pubblicato, o il nome di un prodotto riservato, non lascia il browser. Per generarne in blocco dentro un import automatico — quando è un sistema, non una persona, a dover produrre centinaia di slug in un colpo solo — l'API costa $0.002 a richiesta; per un titolo alla volta mentre scrivi un articolo, la pagina resta gratis e senza limiti.
Casi d'uso
Pubblicare un articolo con un titolo lungo
Francesca Colombo scrive una guida intitolata 'Come aprire un file P7M senza installare niente': lo strumento genera lo slug come-aprire-un-file-p7m-senza-installare-niente, pronto per il CMS.
Catalogo prodotti con centinaia di varianti
Tecnoedil Verona S.n.c. importa un listino di attrezzi con nomi tipo 'Trapano a percussione 850W': genera lo slug per ogni riga via API prima di caricare il catalogo sull'e-commerce.
Nome file coerente per un download
Uno studio prepara una serie di PDF scaricabili e vuole nomi file puliti invece dei titoli originali con spazi e accenti: usa lo stesso slug generato per la pagina anche come nome del file.
Domande frequenti
Gestisce bene accenti e apostrofi italiani?
Sì: à, è, ì, ò, ù diventano la lettera senza accento, e l'apostrofo viene rimosso invece di restare come carattere illeggibile nell'URL.
C'è una lunghezza consigliata?
Meglio restare sotto le 60-70 battute: uno slug troppo lungo si legge peggio nei risultati di ricerca e diventa scomodo da condividere.
Se cambio il titolo dopo, lo slug cambia da solo?
No, va rigenerato apposta. Ed è meglio non farlo su una pagina già pubblicata e indicizzata: cambiare lo slug rompe i link esistenti se non imposti un redirect.
Posso generare tanti slug in automatico?
Sì, via API a $0.002 a richiesta: pensata per cataloghi o import dove serve uno slug per ogni riga di un file.
Due titoli simili possono generare lo stesso slug?
Sì, è possibile se i titoli si somigliano molto: conviene un controllo di unicità nel proprio CMS o database prima di pubblicare.
È gratis nel browser?
Sì, senza limiti né registrazione: incolli il titolo e copi lo slug.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/slug \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/slug", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/slug",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/slug", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/slug", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"items": [
"valor-1",
"valor-2"
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.slug",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |