Compruebe la unicidad y el formato de un slug
Compruebe un slug propuesto antes de que llegue a un CMS, una canalización de despliegue o una tabla de rutas.
Ejecutar — gratis
La herramienta valida primero un formato predecible con letras minúsculas, dígitos y guiones simples, y después compara la propuesta válida con los slugs existentes que usted indique. Un formato no válido siempre genera un error, aunque el mismo texto figure en la lista. Los resultados válidos muestran con claridad si el slug es único y si existe una coincidencia exacta.
Valide el slug antes de comprobar su disponibilidad
Un resultado de unicidad solo sirve si el valor propuesto puede formar parte de una URL de manera segura. Introduzca el candidato y facilite los slugs que ya utiliza su sitio, aplicación o repositorio de contenido. Se admiten letras inglesas minúsculas de a a z, dígitos de 0 a 9 y guiones entre grupos no vacíos. Se rechazan mayúsculas, espacios, guiones bajos, signos de puntuación y guiones iniciales, finales o repetidos. El orden es estricto: se valida el formato antes de buscar la coincidencia. Por ello, un candidato incorrecto que también esté en la lista produce un error de entrada no válida, no un resultado ordinario de colisión. Así, los flujos de publicación aplican una regla estable en formularios, importaciones masivas y despliegues. Respete el límite de longitud y envíe la colección actual como una matriz de cadenas; no se aplica ninguna normalización oculta.
Interprete correctamente las coincidencias exactas
Para un candidato bien formado, la respuesta devuelve el slug enviado, confirma que su formato es válido e incluye dos valores complementarios: unicidad y colisión. Hay colisión si la cadena exacta aparece al menos una vez en la lista facilitada. La comparación es deliberadamente exacta: no elimina prefijos, decodifica escapes de URL, recorta elementos ni equipara expresiones parecidas. Por ejemplo, guia-producto y guias-producto siguen siendo rutas válidas distintas. Este criterio mantiene una respuesta determinista y deja en manos de su aplicación las reglas sobre nombres reservados, prefijos regionales, redirecciones o restricciones de la base de datos. Los duplicados de la lista no alteran el resultado. Como esa lista constituye la fuente de verdad de la solicitud, actualícela antes de comprobar cuando varios editores o trabajos puedan reclamar rutas a la vez.
Integre la comprobación en la publicación y el despliegue
Ejecute la comprobación lo más cerca posible del momento en que se reserva una ruta. En un editor, úsela después de generar el slug desde un título y repítala si este cambia. En un sitio estático, reúna primero las rutas de salida y compare cada propuesta con las ya aceptadas. En una API o migración, trate los errores de entrada como problemas de calidad que deben corregirse y las colisiones como decisiones de nombre. La operación es determinista, no usa red y no almacena datos, por lo que resulta adecuada para pruebas y compilaciones repetibles. Sin embargo, comprueba pero no reserva: otro proceso podría reclamar el slug después de leer la lista. Con escrituras simultáneas, aplique además una restricción única o una reserva atómica en el almacenamiento autorizado.
Qué puede hacer con ella
Evitar colisiones de rutas en un CMS
Valide la ruta propuesta por un editor y avise si un artículo ya utiliza exactamente ese slug.
Controlar compilaciones de sitios estáticos
Compare los slugs generados con las rutas aceptadas antes de escribir o desplegar archivos.
Depurar entradas de una migración
Separe los slugs heredados incorrectos de los nombres válidos que solo colisionan durante la migración.
Preguntas frecuentes
¿Qué formato de slug se admite?
Una o más letras minúsculas o dígitos, separados opcionalmente por guiones simples. El guion no puede ir al principio, al final ni repetirse.
¿Qué ocurre si un slug no válido también está en la lista?
La herramienta devuelve un error de entrada no válida porque la comprobación del formato siempre tiene prioridad.
¿La coincidencia ignora mayúsculas y minúsculas?
No. La comparación es exacta. Las mayúsculas ya son inválidas en la propuesta y la lista no se normaliza.
¿Un resultado único reserva el slug?
No. Solo comprueba la lista enviada. Use una escritura atómica o una restricción única para evitar reclamaciones simultáneas.
¿Cuánto cuesta una solicitud de API?
El precio base es $0.002 por solicitud. La misma lógica determinista puede ejecutarse en la experiencia del navegador.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/web/slug-uniqueness-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}'const res = await fetch("https://api.kit.forhosting.com/web/slug-uniqueness-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/slug-uniqueness-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/slug-uniqueness-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"slug":"summer-sale-2026","existing_slugs":["spring-sale-2026","clearance"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/slug-uniqueness-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"slug": "summer-sale-2026",
"existing_slugs": [
"spring-sale-2026",
"clearance"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.slug_uniqueness_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_existing_slugs | 10000 |
max_slug_length | 200 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |