Generador de slugs

Convierte cualquier título a un slug URL-friendly (sin tildes, minúsculas, guiones).

toolboox.app/herramientas/slug-generator

Herramienta

como-instalar-docker-en-ubuntu-24-04-lts

Qué problema resuelve

Los caracteres unicode y espacios rompen URLs, rutas y nombres de archivo.

Un slug es la parte de una URL que identifica un recurso de forma legible: minúsculas, sin espacios ni acentos, palabras separadas por guiones. Convertir «Cómo optimizar imágenes en WordPress» en `como-optimizar-imagenes-en-wordpress` no es solo una cuestión estética: los espacios se codifican como `%20`, los acentos generan secuencias UTF-8 codificadas que rompen enlaces copiados a mano, y las mayúsculas obligan a comparar URLs de forma insensible a caso en el servidor. Un generador de slugs automatiza la transliteración de tildes, eñes y símbolos, aplica las reglas de longitud y separadores de cada CMS y evita colisiones entre entradas con títulos parecidos. También conviene revisar la codificación resultante con un decodificador de URL cuando el slug viaja dentro de un enlace completo.

Qué transformaciones aplica un generador de slugs

El proceso típico son cinco pasos: pasar a minúsculas, normalizar Unicode a forma NFD para separar cada letra de su diacrítico, eliminar los diacríticos (á se convierte en a tras quitar el acento combinante), sustituir cualquier carácter que no sea [a-z0-9] por un guion, y colapsar guiones consecutivos en uno solo, recortando los guiones al principio y al final. "¡Guía definitiva de Node.js!" se convierte en guia-definitiva-de-node-js, con el signo de apertura de exclamación y el punto eliminados y el espacio junto al guion normalizado a un único separador.

El caso de la eñe: por qué no es un acento más

La eñe es una letra propia del alfabeto español, no una 'n' con tilde, y normalizarla igual que una vocal acentuada produce resultados discutibles: "año" puede transliterarse a ano (una palabra distinta y con connotación no deseada) en vez de a anio o mantenerse como ano solo si se acepta esa pérdida de significado. La mayoría de generadores de slugs, incluidas librerías como slugify, transliteran ñ → n por convención de compatibilidad con URLs antiguas, pero algunos sitios en español prefieren la variante ñ → ni o ñ → nn para evitar ambigüedades. Conviene decidir esta regla explícitamente y no dejarla al comportamiento por defecto de una librería genérica.

Símbolos, emoji y caracteres no latinos

Los símbolos de puntuación (¿, ¡, «, », %, &) se eliminan directamente porque no tienen transliteración razonable. El símbolo & es la excepción más discutida: muchos generadores lo convierten a y o and en vez de borrarlo, porque "Rock & Roll" pierde sentido como rock-roll. Los emoji y los caracteres de alfabetos no latinos (cirílico, árabe, chino) no tienen transliteración fonética estándar sin una librería específica; sin ella, la opción más segura es eliminarlos y, si el título queda vacío, generar un slug de respaldo a partir de un identificador o una fecha.

Longitud máxima y truncado sin cortar palabras

Google no penaliza slugs largos, pero las URLs muy extensas se recortan en los resultados de búsqueda y son más difíciles de compartir. Una convención habitual es limitar el slug a entre 60 y 75 caracteres, truncando por palabra completa: cortar como-optimizar-imagenes-en-wordpress-para-mejorar-el-core-web-vitals en el límite de 60 caracteres sin partir una palabra a la mitad, retrocediendo hasta el último guion anterior al límite en vez de cortar en wordpress-para-mejo.

Slugs duplicados: cómo cada CMS resuelve la colisión

Si dos artículos generan el mismo slug, cada plataforma añade un sufijo distinto. WordPress añade un número al final (mi-articulo-2), Jekyll y otros generadores estáticos suelen fallar la build si detectan una colisión de ruta, y muchas APIs REST añaden un identificador corto o un hash (mi-articulo-a3f9) para garantizar unicidad sin depender de un contador centralizado. Elegir la estrategia correcta depende de si el slug debe ser estable en el tiempo (evitar renumerarlo) o solo único en el momento de creación.

Slugs y SEO: qué palabras merece la pena mantener

Eliminar stopwords (de, la, el, en, un) del slug es una práctica común para acortarlo, pero no aporta beneficio de posicionamiento demostrable por sí sola; el factor real es que el slug describa el contenido con las palabras clave relevantes. "guia-node-js" funciona igual de bien que "guia-de-node-js" a efectos de relevancia; la diferencia está en la longitud y la legibilidad, no en un supuesto algoritmo que penalice preposiciones.

Codificación final: por qué el guion y no el guion bajo

Google trata el guion (-) como separador de palabras y el guion bajo (_) como parte de la misma palabra, una distinción documentada desde hace años en sus directrices para webmasters. mi-articulo se interpreta como las palabras «mi» y «articulo»; mi_articulo se interpreta como el token único «mi_articulo». Por eso todos los generadores de slugs usan el guion como separador por defecto, y cambiarlo a guion bajo solo tiene sentido si el sistema de rutas del framework lo exige explícitamente.

Salidas reales de ejemplo

Título con tildes, eñe y signos de puntuación
"¿Cómo diseñar una API en Node.js?"
  -> "como-disenar-una-api-en-node-js"

Cada símbolo se resuelve según su categoría: acento eliminado, eñe transliterada, signos retirados.

Colapsado de espacios y guiones repetidos
"  Guía -- rápida  de   YAML  "
  -> "guia-rapida-de-yaml"

Los espacios múltiples y los guiones consecutivos se reducen a un único separador, sin guion inicial ni final.

Título con el símbolo & y una barra
"Backend & Frontend / Guía 2024"
  -> "backend-y-frontend-guia-2024"

El & se transcribe como "y" para conservar el sentido; la barra se trata como separador de palabras.

Truncado a 40 caracteres sin partir palabras
Slug completo (52): "mejora-el-rendimiento-y-los-core-web-vitals"
Truncado a 40:        "mejora-el-rendimiento-y-los-core-web"

El corte retrocede hasta el guion anterior al límite en vez de partir "vitals" por la mitad.

Reglas de slug según el CMS o framework

PlataformaSeparador por defectoEstrategia ante duplicadoLímite de longitud habitual
WordPressGuion (-)Sufijo numérico incremental (-2, -3)Sin límite estricto, recomendado < 75
Jekyll / Hugo (sitios estáticos)Guion (-)Fallo de compilación si colisiona la rutaDefinido por el usuario
ShopifyGuion (-)Sufijo numérico o error de validación255 caracteres máximo
API REST genéricaGuion (-)Hash o ID corto añadido al slugVariable, a menudo 100-150

El separador y la estrategia ante duplicados cambian según la plataforma de destino.

Casos de uso comunes

  • Generar la URL de una entrada de blog a partir de un titular en español con tildes y signos de interrogación.
  • Normalizar nombres de producto para un catálogo de e-commerce antes de importarlos por lote.
  • Crear nombres de archivo seguros para subir a un CDN a partir del nombre original con espacios y mayúsculas.
  • Migrar contenido entre CMS distintos que usan convenciones de slug diferentes (guion bajo vs guion medio).
  • Evitar colisiones al generar rutas dinámicas en un framework como TanStack Start o Next.js.

Buenas prácticas

  • Decide de forma explícita la regla de transliteración de la eñe (`ñ → n` o `ñ → ni`) y aplícala de forma consistente en todo el sitio.
  • Usa siempre guion medio como separador; el guion bajo se interpreta como un único token en la mayoría de buscadores.
  • Limita la longitud truncando por palabra completa, nunca a mitad de una palabra.
  • No dependas solo de eliminar stopwords para el SEO: prioriza que el slug describa el contenido con precisión.
  • Genera un slug de respaldo (fecha o identificador) cuando el título no contenga ningún carácter alfanumérico transliterable.
  • Verifica el slug final con un validador de URL o un decodificador antes de publicarlo, sobre todo si se generó de forma automática desde datos externos.

Preguntas frecuentes

¿Por qué mi slug generado tiene un guion al principio?

Suele pasar cuando el título empieza por un signo de puntuación que se sustituye por un guion antes de aplicar el recorte final. Un generador correcto debe recortar (trim) los guiones sobrantes al principio y al final después de colapsar los separadores.

¿Debo cambiar el slug de un artículo ya publicado?

Solo si es imprescindible, y siempre añadiendo una redirección 301 desde el slug antiguo al nuevo. Cambiar slugs sin redirigir rompe enlaces externos ya indexados y hace perder el posicionamiento acumulado en esa URL.

¿Los números se mantienen igual en un slug?

Sí, los dígitos del 0 al 9 son caracteres válidos en una URL y no requieren transliteración; solo se eliminan si van pegados a un símbolo que sí se retira, como en "año 2024" al quitar la eñe.

¿Qué diferencia hay entre un slug y un ID de recurso?

El slug es legible y describe el contenido (`guia-de-node-js`); el ID es un identificador técnico, a menudo numérico o un hash, que garantiza unicidad sin depender del texto. Muchos sistemas combinan ambos en la misma ruta (`/123-guia-de-node-js`) para tener legibilidad y unicidad a la vez.

¿Cómo se comportan los slugs con mayúsculas mezcladas?

Se convierten siempre a minúsculas antes de cualquier otra transformación, porque los servidores web tratan las URLs con distinción de mayúsculas por defecto y dos rutas que solo difieren en el caso se consideran recursos distintos, generando duplicados no deseados para los buscadores.