El orden correcto: slug primero, codificación de URL después
Es habitual pensar en el generador de slug y en un codificador/decodificador de URL como la misma herramienta con otro nombre, pero resuelven problemas distintos. El generador de slug decide qué texto legible quieres en la URL: convierte «Guía de acampada: los 7 errores más comunes» en algo como guia-de-acampada-los-7-errores-mas-comunes. El codificador de URL, en cambio, no decide nada sobre el contenido — solo escapa con seguridad los caracteres que una URL no puede llevar tal cual, como espacios, símbolos de suma o comillas, convirtiéndolos en secuencias del tipo %20 o %26.
Imagina un escenario habitual: quieres compartir el mismo artículo con una fuente de tráfico distinta y añadir un parámetro de seguimiento, por ejemplo ?ref=boletin-julio. El valor boletin-julio ya es, en sí mismo, un slug simple — pero si en vez de eso quisieras pasar como valor un texto libre con espacios o acentos (por ejemplo, un nombre de campaña como «Boletín de Julio»), ese texto sí necesitaría pasar por el codificador antes de insertarse en la URL, porque un parámetro de consulta no sigue exactamente las mismas reglas que un slug de ruta.
Normalizar mayúsculas antes de generar el slug, no después
El motor de slugify ya pone todo en minúsculas automáticamente, así que en la mayoría de los casos este paso extra no cambia el resultado final letra por letra. Donde sí ayuda es en la fase de revisión: un título pegado de un PDF o de un correo con capitalización inconsistente («Los Mejores LUGARES para Visitar en lisboa») puede ocultar errores de tipeo reales (una «l» minúscula donde debería ir mayúscula, por ejemplo, o al revés) que son más fáciles de detectar visualmente cuando el texto ya está uniforme, antes de convertirlo en un slug donde todo se ve igual de plano.
Un flujo de trabajo razonable para títulos que vienen de fuentes externas (notas de prensa, hojas de cálculo de un cliente, contenido migrado) sería: 1) pasar el texto por un conversor de mayúsculas/minúsculas para elegir un estilo consistente como Tipo Título u oración normal, 2) revisar visualmente que no haya quedado ninguna palabra mal escrita, y 3) pegar ese texto ya revisado en el generador de slug para obtener la versión final de la URL.
Del slug al nombre de variable: los formatos de código
camelCase, PascalCase, snake_case y CONSTANT_CASE — útiles para nombrar variables, funciones o constantes en código, no solo segmentos de URL.Un caso de uso concreto: estás construyendo una página a partir de una lista de títulos de artículo, y necesitas tanto el slug para la URL (guia-de-acampada) como un identificador para usarlo como clave en un objeto de configuración o en el nombre de una función que renderiza esa página (por ejemplo guiaDeAcampada en camelCase, o GUIA_DE_ACAMPADA como constante). En vez de derivar cada formato a mano a partir del mismo título repetidamente, tiene sentido generarlos todos desde el mismo texto de origen una sola vez.
| Formato | Ejemplo a partir de «Guía de acampada 2026» | Uso típico |
|---|---|---|
| Slug (kebab-case) | guia-de-acampada-2026 | Segmento de una URL |
| camelCase | guiaDeAcampada2026 | Variables y funciones en JavaScript |
| PascalCase | GuiaDeAcampada2026 | Nombres de clase o de componente |
| snake_case | guia_de_acampada_2026 | Nombres de archivo o columnas de base de datos |
| CONSTANT_CASE | GUIA_DE_ACAMPADA_2026 | Constantes de configuración |
Nombres de usuario y nombres de archivo: el mismo motor, otro objetivo
Piensa en un formulario de registro hipotético donde un usuario introduce su nombre completo, «María González», y el sistema necesita sugerir un alias disponible. Generar el slug completo daría maria-gonzalez — perfectamente válido como identificador legible, pero poco práctico como nombre de usuario corto si muchas personas comparten apellido. Un generador de nombre de usuario, en cambio, parte del mismo texto pero aplica otra lógica: combina inicial y apellido, o añade una variación numérica, para producir varias alternativas más cortas entre las que elegir.
Lo mismo ocurre con nombres de archivo: subir «Fotos de vacaciones (2026) FINAL.JPG» a un servidor puede fallar o generar un nombre codificado si el sistema no admite espacios ni paréntesis. Limpiar el nombre conservando la extensión — a diferencia de un slug de URL, donde no hay extensión que preservar — es una tarea relacionada pero con su propia regla: la extensión del archivo debe mantenerse intacta mientras el resto del nombre se normaliza igual que un slug.
La utilidad práctica de tener estas variantes juntas en la misma página es evitar cambiar de herramienta a mitad de una tarea: si estás preparando el lanzamiento de un artículo, es habitual necesitar el slug para la URL, quizá un nombre de archivo limpio para la imagen destacada, y ocasionalmente un identificador de código para la plantilla que renderiza esa página — todo derivado, en última instancia, del mismo título de partida.