Text Slugify (URL)

Una herramienta profesional de slugify que normaliza el texto a slugs aptos para URL, con soporte para conversión a minúsculas, separadores personalizados y eliminación de palabras vacías en inglés. Utiliza la normalización Unicode para manejar caracteres de la mayoría de idiomas, asegurando que los slugs generados sigan las mejores prácticas de SEO. Ideal para URLs de entradas de blog, nombres de archivos, identificadores de base de datos y otros escenarios. Procesamiento 100% local para proteger tu privacidad; no se requiere registro. Ofrece guías detalladas de uso y recomendaciones de buenas prácticas para ayudarte a generar slugs de alta calidad.

Parámetros e entrada

Recomendado: usa - o _, longitud de 1 a 3 caracteres

Resultado

¿Por qué usar Slugify?

🔍 Optimización SEO

Las palabras clave en las URLs ayudan a los motores de búsqueda a entender el contenido de la página y mejorar su posicionamiento. Por ejemplo, example.com/blog/how-to-learn-javascript es más efectivo que example.com/blog/123.

👁️ Legibilidad y compartición

Los usuarios pueden comprender instantáneamente el contenido desde la URL. Los slugs son más fáciles de compartir en redes sociales y de recordar o escribir manualmente.

💻 Compatibilidad del sistema

Evita errores causados por caracteres especiales en nombres de archivo o URLs. Garantiza la compatibilidad entre plataformas (Windows/Linux/macOS) y previene problemas de codificación.

🗄️ Amigable con bases de datos

Úsalos como identificadores únicos (p. ej., nombres de usuario, etiquetas) para reducir riesgos de inyección SQL y mejorar el rendimiento de indexación y consultas.

¿Qué es Slugify?

Un slug es una versión abreviada y estandarizada de un texto utilizada como URL, nombre de archivo o identificador. El procesamiento común incluye estandarizar mayúsculas/minúsculas, eliminar puntuación y unir palabras con separadores.

  • Prioridad ASCII: Elimina acentos y símbolos, manteniendo solo caracteres alfanuméricos y espacios
  • Compatible con Unicode: Normaliza caracteres de la mayoría de idiomas usando NFKD antes del procesamiento
  • Seguro para URL: La salida contiene solo letras, números y separadores, lista para usar directamente en rutas

Casos de uso

URLs de entradas de blog

¿Cómo aprender JavaScript?

how-to-learn-javascript

Nomenclatura de archivos

Documento de Requisitos de Producto v2.0.docx

product-requirements-v2-0.docx

Identificador de base de datos

用户-张三

user-zhang-san

Preguntas frecuentes

P: ¿Cómo se manejan los caracteres chinos?

R: Por defecto, se eliminan los diacríticos y se conservan las letras pinyin. El texto puramente chino puede quedar vacío; se recomienda convertirlo manualmente a pinyin antes de generar el slug, o usar una herramienta de conversión de pinyin al chino.

P: ¿Por qué mi resultado está vacío?

R: Tu entrada puede consistir exclusivamente en puntuación, símbolos o espacios, o todas las palabras pueden haber sido eliminadas por el filtro de stopwords. Intenta desactivar la opción de stopwords o ajustar tu entrada.

P: ¿Debo usar - o _ como separador?

R: Para SEO, usa - (guion), ya que Google lo trata como un espacio; _ (guión bajo) se trata como un símbolo de concatenación, lo cual dificulta la separación de palabras. Para nombres de archivo, ambos son aceptables.

P: ¿Hay un límite de longitud para los slugs?

R: No hay un límite técnico, pero se recomienda mantener los slugs por debajo de 50 caracteres para una mejor visualización de la URL y SEO. Los slugs excesivamente largos pueden ser truncados por los motores de búsqueda.

Mejores prácticas

Prácticas recomendadas

  • ✓ Mantenlo breve (recomendado < 50 caracteres)
  • ✓ Evita caracteres especiales; usa solo letras, números y separadores
  • ✓ Usa minúsculas para evitar problemas de sensibilidad a mayúsculas/minúsculas
  • ✓ Elimina palabras vacías para mejorar la densidad semántica

Evita estas prácticas

  • ✗ No incluyas información sensible (p. ej., IDs, correos electrónicos, contraseñas)
  • ✗ No uses caracteres especiales (p. ej., @#$%^&*)
  • ✗ No mantengas espacios ni separadores consecutivos
  • ✗ No repitas la misma palabra

Detalles técnicos

Normalización Unicode:

Utiliza la descomposición NFKD + eliminación de diacríticos combinantes (\p{M}), convirtiendo Café en Cafe. Admite la mayoría de los caracteres basados en el alfabeto latino.

Lista de palabras vacías:

Basada en palabras comunes en inglés (a/an/the/and/or/of/to/in/on/for/at/by/with); personalizable. Las palabras vacías en chino requieren un manejo aparte.

Compatibilidad con navegadores:

Requiere soporte ES6+ y regex Unicode (\p{...}). Admitido en navegadores modernos: Chrome 64+, Firefox 78+, Safari 11.1+.

¿Cómo generar un slug mediante un lenguaje de programación?

JavaScript

function slugify(text) {
  return text
    .toLowerCase()
    .normalize("NFKD")
    .replace(/[\u0300-\u036f]/g, "")
    .replace(/[^\w\s-]/g, "")
    .trim()
    .replace(/[\s_-]+/g, "-")
    .replace(/^-+|-+$/g, "");
}

PHP

function slugify($text) {
  $text = mb_strtolower($text);
  $text = iconv("UTF-8", "ASCII//TRANSLIT", $text);
  $text = preg_replace("/[^\w\s-]/", "", $text);
  $text = preg_replace("/[\s_-]+/", "-", $text);
  return trim($text, "-");
}

Python

import re
import unicodedata

def slugify(text):
    text = text.lower()
    text = unicodedata.normalize("NFKD", text)
    text = text.encode("ascii", "ignore").decode("ascii")
    text = re.sub(r"[^\w\s-]", "", text)
    text = re.sub(r"[\s_-]+", "-", text)
    return text.strip("-")

Go

import (
    "regexp"
    "strings"
    "golang.org/x/text/unicode/norm"
)

func Slugify(text string) string {
    text = strings.ToLower(text)
    text = norm.NFKD.String(text)
    re := regexp.MustCompile(`[^\w\s-]`)
    text = re.ReplaceAllString(text, "")
    re = regexp.MustCompile(`[\s_-]+`)
    text = re.ReplaceAllString(text, "-")
    return strings.Trim(text, "-")
}

Ruby

require "unicode"

def slugify(text)
  text = text.downcase
  text = Unicode.nfkd(text).gsub(/[^\x00-\x7F]/, "")
  text = text.gsub(/[^\w\s-]/, "")
  text = text.gsub(/[\s_-]+/, "-")
  text.strip.gsub(/^-+|-+$/, "")
end

Java

import java.text.Normalizer;

public static String slugify(String text) {
    text = text.toLowerCase();
    text = Normalizer.normalize(text, Normalizer.Form.NFKD);
    text = text.replaceAll("[^\\w\\s-]", "");
    text = text.replaceAll("[\\s_-]+", "-");
    return text.replaceAll("^-+|-+$", "");
}