Codificar y decodificar URL
Esta herramienta para codificar y decodificar URL convierte texto Unicode normal al formato porcentual de RFC 3986 y recupera texto legible a partir de valores válidos.
Ejecutar — gratis
Elija codificar cuando un texto deba viajar de forma segura como componente de una URL, o decodificar para interpretar escapes porcentuales de registros, redirecciones, consultas y enlaces copiados. La operación es determinista, no conserva estado y rechaza secuencias defectuosas en vez de producir resultados engañosos. Puede ejecutarla en el navegador o usar la misma lógica mediante la API por $0.002 por elemento.
Cuándo conviene aplicar codificación porcentual
Las URL reservan varios caracteres para su estructura: las barras separan segmentos, el signo de interrogación inicia la consulta, los ampersands separan parámetros, el signo igual divide nombres y valores, y la almohadilla introduce fragmentos. Si uno de ellos pertenece al dato, debe evitarse que se confunda con esa estructura. La codificación convierte la entrada a UTF-8 y representa cada byte que no sea un carácter no reservado de RFC 3986 mediante un signo de porcentaje y dos dígitos hexadecimales. Letras, cifras, guiones, puntos, guiones bajos y virgulillas permanecen legibles. Los espacios se convierten en <code>%20</code>, no en un signo más, y la puntuación reservada se escapa porque la entrada se trata como un valor, no como una URL completa. Codifique únicamente el componente que inserta; si codifica una URL ya montada, también escapará sus separadores estructurales.
Cómo protege sus datos la decodificación estricta
La decodificación examina toda la entrada antes de devolver un valor. Cada signo de porcentaje debe ir seguido exactamente de dos dígitos hexadecimales; por eso <code>%</code>, <code>%2</code> y <code>%GG</code> generan un error de entrada no válida. Tras esa comprobación, los bytes escapados deben formar UTF-8 válido. Una secuencia puede parecer correcta y aun representar texto dañado; aceptarla con caracteres de sustitución ocultaría corrupción en registros, devoluciones de llamada o conjuntos importados. Por ello se informa del error. Un signo más no se convierte en espacio: esa regla pertenece a los formularios HTML, mientras que aquí se sigue RFC 3986. Además, solo se realiza una pasada. Así, <code>%2520</code> produce <code>%20</code>, no un espacio; una segunda pasada debe solicitarse expresamente para evitar una doble decodificación accidental.
Cómo utilizar el resultado con seguridad
Seleccione el modo de forma consciente y envíe la cadena exacta que represente un único valor lógico. Al codificar, inserte el resultado sin volver a pasarlo por otro codificador, porque la doble codificación transforma cada porcentaje en <code>%25</code>. Al decodificar, considere el texto obtenido como dato, no como marcado fiable, ruta de archivo o instrucción. Recuperar caracteres no valida su significado para el destino posterior. Esta diferencia importa al recibir parámetros de retorno, revisar registros, normalizar enlaces o comparar identificadores. El algoritmo no usa red, azar, reloj ni estado, por lo que una entrada idéntica siempre produce la misma salida. El navegador resulta práctico para investigar un valor aislado; la API permite incorporar una validación repetible en pruebas y procesos. Cada elemento cuesta $0.002 mediante la API.
Qué puede hacer con ella
Preparar un parámetro de consulta
Codifique texto proporcionado por usuarios para mantener espacios, ampersands, Unicode y puntuación reservada dentro de un único valor.
Examinar registros codificados
Decodifique una ruta o un parámetro capturado para leer su contenido original y detectar escapes dañados.
Probar el comportamiento de una integración
Cree datos de prueba estables y compruebe que retornos, redirecciones y procesos decodifican exactamente una capa RFC 3986.
Preguntas frecuentes
¿Cuánto cuesta una solicitud a la API?
Cada elemento cuesta $0.002 mediante la API. La ejecución interactiva está disponible en la página.
¿Se conservan las barras y los signos de interrogación?
No. La entrada se considera un solo valor, por lo que la puntuación reservada también se codifica.
¿Los espacios se codifican como signos más?
No. RFC 3986 representa un espacio como %20; la conversión entre signo más y espacio corresponde a formularios HTML.
¿Qué ocurre con un escape porcentual defectuoso?
El modo de decodificación devuelve un error si el escape está incompleto, no es hexadecimal o no forma UTF-8 válido.
¿La herramienta decodifica varias veces?
No. Cada solicitud realiza una sola pasada para evitar dobles decodificaciones ocultas; repita la operación únicamente de forma intencionada.
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/url-encode-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello world/café?x=1","mode":"encode"}'const res = await fetch("https://api.kit.forhosting.com/web/url-encode-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello world/café?x=1",
"mode": "encode"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/url-encode-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello world/café?x=1",
"mode": "encode"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/url-encode-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello world/café?x=1","mode":"encode"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello world/café?x=1","mode":"encode"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/url-encode-decode", 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
{
"text": "hello world/café?x=1",
"mode": "encode"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.url_encode_decode",
"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
timeout_sec | 30 |
max_crawl_pages | 25 |
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. |