Codificador de porcentaje URL
hello world & café pasa a hello%20world%20%26%20caf%C3%A9, listo para un enlace. Elija entre codificar un valor suelto, donde también se escapan & = ? /, o una dirección entera que conserva sus dos puntos, barras e interrogación. Al decodificar se invierte. 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é
- Modo de cálculo
- Encode
- Resultado
- hello%20world%20%26%20caf%C3%A9
- Longitud
- 31
- Perfil
- component
- Estándar
- encodeURIComponent / decodeURIComponent
Sin ella, un término de búsqueda con espacios rompe una consulta, un asunto de correo con acentos corrompe un enlace mailto y un nombre de producto con una barra parece una ruta nueva. Elija el modo component cuando codifique un único valor de parámetro, o el modo de URI completa cuando necesite que los separadores estructurales, como dos puntos, barra e interrogante, permanezcan intactos.
Cómo funcionan la codificación de porcentaje y los dos perfiles de URL
La codificación de porcentaje, definida para la web en los estándares de URI que siguen los navegadores y el RFC 3986, sustituye cada byte no permitido en un contexto dado por un signo de porcentaje y dos dígitos hexadecimales. Para texto UTF-8, los caracteres multibyte se convierten en varios grupos %HH consecutivos, de modo que café se convierte en caf%C3%A9 y un espacio simple en %20. Dos perfiles comunes importan en el trabajo diario.
El perfil component coincide con encodeURIComponent: escapa casi todo lo que no es un carácter no reservado, incluidos los delimitadores reservados como ampersand, signo igual, interrogante, barra y dos puntos. Eso es lo que conviene cuando la cadena es un único valor de parámetro de consulta o un único segmento de ruta que no debe confundirse con la estructura. El perfil de URI completa coincide con encodeURI: sigue escapando espacios y caracteres no ASCII, pero deja intacta la puntuación estructural, de modo que una dirección completa como https://example.com/path?
La decodificación invierte el mapa. Antes de que se ejecute la decodificación del anfitrión, esta capacidad examina la entrada en busca de escapes bien formados: cada signo de porcentaje debe ir seguido de exactamente dos dígitos hexadecimales. Esa comprobación estricta es intencionada; la aceptación silenciosa ocultaría errores de pegado y produciría resultados distintos entre lenguajes que discrepan sobre cómo tratar los escapes rotos.
Qué se envía y qué se recibe de vuelta
Envíe un campo de cadena obligatorio llamado text y los campos opcionales mode y component. Cuando se omite mode, el valor predeterminado es encode, de modo que una sola carga sigue haciendo trabajo útil. El modo encode escapa con porcentaje el texto según el perfil seleccionado y devuelve la cadena transformada en result.
El modo decode valida cada secuencia de porcentaje, invierte la codificación y devuelve texto UTF-8 plano en result. El valor predeterminado de component es true, para el perfil estricto de componente; ajústelo a false para el perfil de URI completa que conserva los delimitadores estructurales.
La respuesta reproduce mode, component, el text original, result, la longitud de result, una breve etiqueta de perfil con valor component o uri, y una etiqueta standard que nombra las funciones incorporadas de JavaScript correspondientes, de modo que los clientes puedan comprobar a qué contrato llamaron.
Las comprobaciones clásicas incluyen codificar hello world con un espacio y un ampersand en modo component, decodificar caf%C3%A9 de vuelta a café, codificar una URL completa con component false para que sobrevivan los separadores de esquema y consulta, y rechazar una cadena que termina con un porcentaje suelto.
Dónde aparece la codificación de porcentaje de URL en el trabajo real
Los servicios de backend que ensamblan destinos de redirección, URL de retorno de OAuth y rutas de vuelta firmadas deben codificar cada valor de parámetro de forma independiente, de modo que un ampersand dentro del título de un producto no pueda inventar un segundo campo de consulta. Las aplicaciones de frontend que construyen enlaces de búsqueda y filtrado desde cuadros de texto libre necesitan la codificación de componente en cada valor, dejando intacta la plantilla de la ruta.
Las plantillas de correo y SMS que incrustan enlaces profundos con nombres de usuario, etiquetas de campaña o asuntos Unicode dependen de la codificación de porcentaje para que los operadores y los clientes no reorganicen ni corrompan el href. Los equipos de soporte pegan cadenas semicodificadas de los tickets y necesitan una ruta de decodificación que falle con claridad ante escapes % truncados en lugar de inventar caracteres. Los ingenieros de localización verifican que los idiomas multibyte hacen el recorrido de ida y vuelta entre codificación y decodificación sin mojibake.
Los autores de cursos que enseñan fundamentos web quieren una página dedicada a la codificación de porcentaje con los perfiles component y de URI completa, en lugar de enterrar el tema bajo una herramienta genérica de Base64 o de slugs, porque la intención de búsqueda y las reglas de caracteres reservados difieren. Si necesita Base64, Base32, generación de slugs, montaje de UTM o validación completa de la estructura de URL, trátelos como intenciones de búsqueda y páginas separadas en lugar de sobrecargar esta página del codificador de porcentaje.
Qué puede hacer con ella
Valores seguros de parámetros de consulta
Codifique con porcentaje cada filtro, término de búsqueda o nombre de producto en modo component, de modo que los caracteres reservados nunca dividan ni reescriban la cadena de consulta.
Decodificación de URL pegadas o registradas
Decodifique fragmentos con porcentaje procedentes de registros y tickets de vuelta a texto legible, con fallos estrictos ante secuencias de porcentaje incompletas o no hexadecimales.
Normalización ligera de URL completas
Codifique una dirección completa con component false, de modo que los espacios y los caracteres no ASCII se escapen mientras los delimitadores de esquema, ruta y consulta permanecen intactos.
Preguntas frecuentes
¿Cuál es la diferencia entre component true y false?
True usa la semántica de encodeURIComponent y escapa los separadores reservados como & = ? / :, de modo que un único valor es seguro dentro de un parámetro o segmento de ruta. False usa la semántica de encodeURI y conserva la puntuación estructural de la URL mientras sigue escapando espacios y caracteres no ASCII.
¿Puedo codificar y decodificar?
Sí. Ajuste mode a encode (valor predeterminado) para escapar con porcentaje el texto plano, o mode a decode para recuperar el texto de una cadena codificada con porcentaje.
¿Qué ocurre si una secuencia de porcentaje está mal formada?
No se cobra nada por los fallos de validación.
¿Esto sustituye a la construcción de un objeto URL completo?
No. Solo transforma texto con las reglas de codificación de porcentaje. Ensamble usted mismo el esquema, el anfitrión, la ruta y la consulta, codificando cada valor con el perfil component cuando sea necesario.
¿Cuánto cuesta?
La herramienta del navegador es gratuita y se ejecuta localmente.
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/enc/url \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello world & café"}'const res = await fetch("https://api.kit.forhosting.com/enc/url", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello world & café"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/url",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello world & café"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/url", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello world & café"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello world & café"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/url", 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é"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.url",
"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.
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
La codificación de porcentaje de URL convierte espacios, ampersands, letras no ASCII y otros caracteres reservados o inseguros en una forma portable %HH, de modo que las cadenas de consulta, los segmentos de ruta y los parámetros de retorno sobrevivan al tránsito por navegadores, proxies y API. Esta capacidad aplica las mismas reglas que JavaScript expone como encodeURIComponent y encodeURI: el modo encode escapa los caracteres que exige su perfil, el modo decode restaura el texto plano y cualquier secuencia de porcentaje mal formada falla de inmediato con invalid_input en lugar de devolver basura semidecodificada.
Cómo funcionan la codificación de porcentaje y los dos perfiles de URL
x=1 puede normalizarse ligeramente sin destruir el esqueleto de esquema, ruta y consulta. Un porcentaje suelto al final, o secuencias como %G1 o %2, provocan invalid_input con una posición y una breve explicación. La ruta es trabajo puro de cadenas, sin red, sin semillas aleatorias y sin marcas de reloj, de modo que entradas idénticas producen siempre un JSON idéntico. El precio de las llamadas correctas a la API es la base publicada de $0.002 por elemento, y los fallos de validación no consumen saldo prepagado.
Qué se envía y qué se recibe de vuelta
Un text ausente, objetos que no sean cadenas, valores de mode no admitidos, valores que no puedan interpretarse como booleano para component, cadenas más largas que el máximo documentado, escapes de porcentaje incompletos, dígitos no hexadecimales tras un signo de porcentaje y errores de URI a nivel de anfitrión por UTF-8 decodificado no válido fallan con invalid_input y un mensaje claro en inglés. Los fallos de validación no consumen saldo prepagado. El precio de las llamadas correctas a la API es la base publicada de $0.002 por elemento.
Dónde aparece la codificación de porcentaje de URL en el trabajo real
Como esta capacidad es un motor de parse puro, el precio de la API es la base publicada de $0.002 por elemento correcto y la validación fallida no consume saldo.