Generador de Slug/ Nombres compatibles con URL

Convierte titulos en slugs compatibles con URL — maneja acentos, caracteres CJK, separadores personalizados y longitud maxima.

Separador
Longitud máx.
Texto / título
Slug
0 car.
El slug aparecerá aquí…
Probar un ejemplo

¿Esta herramienta resolvió tu problema?

¿Qué es un slug de URL

Un slug de URL es la parte legible de una URL que identifica una página específica,通常 compuesta por letras minúsculas, números y guiones. En `example.com/posts/how-to-seo`, el slug es `how-to-seo`. Los buenos slugs son cortos, legibles y contienen palabras clave — importantes para SEO y experiencia de usuario.

Cómo generar buenos slugs

Convertir a minúsculas, reemplazar espacios y caracteres especiales con guiones, eliminar palabras vacías y保持 palabras clave principales. Las URLs más cortas son mejores,但 mantén la legibilidad. Evita fechas e IDs en los slugs a menos que sea necesario.

Ejemplos de codigo

JavaScript / Node.js
// npm install slugify
import slugify from 'slugify';

slugify('Hello World!', { lower: true })
// 'hello-world'

slugify('Cafe au Lait', { lower: true })
// 'cafe-au-lait'

// npm install limax (CJK support)
import limax from 'limax';
limax('你好世界')       // 'ni-hao-shi-jie' (pinyin)
limax('東京')           // 'dong-jing'

// Manual (no deps)
const slugify = (s) => s
  .toLowerCase()
  .normalize('NFD')
  .replace(/[\u0300-\u036f]/g, '')
  .replace(/[^a-z0-9]+/g, '-')
  .replace(/^-|-$/g, '');
Python
# pip install python-slugify
from slugify import slugify

slugify('Hello World!')
# 'hello-world'

slugify('Cafe au Lait')
# 'cafe-au-lait'

slugify('你好世界', allow_unicode=True)
# '你好世界'

# With max length
slugify('A very long title that should be truncated',
        max_length=30, word_boundary=True)
# 'a-very-long-title-that-should'
Go
// go get github.com/gosimple/slug
import "github.com/gosimple/slug"

slug.Make("Hello World!")
// "hello-world"

slug.Make("Cafe au Lait")
// "cafe-au-lait"

// Custom separator
slug.CustomMake("Hello World", "_")
// "hello_world"

// Truncate
s := slug.Make("A very long title here")
if len(s) > 50 {
    s = s[:50]
}
PHP / WordPress
<?php
// WordPress built-in
$slug = sanitize_title('Hello World! Cafe');
// 'hello-world-cafe'

// PHP custom
function to_slug(string $s): string {
    $s = mb_strtolower($s, 'UTF-8');
    $s = iconv('UTF-8', 'ASCII//TRANSLIT', $s);
    $s = preg_replace('/[^a-z0-9]+/', '-', $s);
    return trim($s, '-');
}

// Laravel
use Illuminate\Support\Str;
Str::slug('Hello World!');    // 'hello-world'
Str::slug('Hello World', '_'); // 'hello_world'

Preguntas frecuentes

Que es un slug de URL?
Un slug es la parte legible de una URL que identifica una pagina especifica, compuesta por letras minusculas, numeros y guiones, como /blog/my-first-post. Los buenos slugs son concisos, legibles y favorables para el SEO. Evitan caracteres especiales, espacios, mayusculas y caracteres no ASCII (a menos que se usen URLs en idioma nativo).
Por que usar guiones en lugar de guiones bajos en los slugs?
Google trata los guiones (-) como separadores de palabras, reconociendo my-blog-post como tres palabras distintas. Los guiones bajos (_) se tratan como conectores, haciendo que my_blog_post parezca una sola palabra. Por lo tanto, los guiones son mejores para el SEO. WordPress, GitHub y Shopify usan guiones por defecto por la misma razon.
Como debo manejar los caracteres CJK en los slugs?
Dos enfoques principales: 1) Transliterar a pinyin/romaji (ej.: 你好世界 → ni-hao-shi-jie) — mejor para SEO en alfabeto latino. 2) Usar los caracteres nativos directamente (ej.: /blog/你好世界) — los navegadores y motores de busqueda modernos lo soportan, pero los enlaces apareceran codificados en porcentaje al compartir. Esta herramienta soporta ambos modos.
Cual es la longitud ideal de un slug?
La mejor practica de SEO recomienda mantener los slugs por debajo de 60-75 caracteres para evitar el truncamiento en los resultados de busqueda. Incluya su palabra clave objetivo, elimine las palabras vacias (a, the, of, etc.). Ejemplo: 'how-to-optimize-nextjs-performance' es un slug efectivo. Los slugs demasiado largos diluyen el peso de las palabras clave.
Que caracteres deben eliminarse al crear un slug?
Eliminar o reemplazar: espacios (→ separador), simbolos especiales (!@#$%^&*()+=[]{}|;:',.<>?/\`~), caracteres acentuados (e→e, u→u) y caracteres de control. Mantener: letras (a-z), digitos (0-9), separadores (-._). Si mantener caracteres CJK depende de su caso de uso.
Como genero slugs en Next.js o Node.js?
En Node.js: npm install slugify o limax (soporte CJK/pinyin). Implementacion manual basica: str.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''). En el enrutamiento basado en archivos de Next.js, el slug generalmente proviene del nombre del archivo o un campo de base de datos. WordPress tiene sanitize_title() integrado.