Codificar y decodificar URL
Codifique texto para una URL o devuélvalo a su forma legible: hello world/café pasa a ser hello%20world%2Fcaf%C3%A9, con los espacios como %20 y cada signo reservado escapado. La decodificación se hace una sola vez y rechaza escapes rotos como %GG. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- hello world/café?x=1
- Modo de cálculo
- Encode
- Resultado
- hello%20world%2Fcaf%C3%A9%3Fx%3D1
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. 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.
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.
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
¿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.
¿Debo codificar la URL entera o solo una parte?
Solo el valor que va a insertar, como un término de búsqueda, un tramo de la ruta o una dirección de redirección. Si codifica una URL ya montada, también se escapan sus barras, interrogaciones y ampersands, y el enlace deja de funcionar.
Herramientas relacionadas
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. |
Notas técnicas
Puede ejecutarla en el navegador o usar la misma lógica mediante la API por $0.002 por elemento.
Cómo utilizar el resultado con seguridad
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.
Preguntas técnicas
¿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.