Codificar, decodificar y analizar URL

Codifica y decodifica URL, y divídelas en sus partes.

Acerca de esta herramienta

Codifica texto con porcentajes para usarlo en una URL, decodifícalo, o divide una URL completa en protocolo, host, ruta, parámetros de consulta y fragmento, con cada parámetro decodificado.

Cómo se usa

  1. Elige Analizar URL para dividir un enlace en sus partes, o Codificar / Decodificar para la codificación por porcentaje.
  2. Pega una URL o un texto.
  3. En el modo Analizar, lee el protocolo, el host, la ruta y cada parámetro de consulta ya decodificados.
  4. Copia la parte que necesites.

Preguntas

¿Qué diferencia hay entre encodeURI y encodeURIComponent?
encodeURIComponent escapa todo lo que tiene significado en una URL, incluidos / ? & y =, así que úsalo para el valor de un solo parámetro. encodeURI conserva esos caracteres para que una URL completa siga funcionando. La opción Conservar cambia entre los dos.
¿Por qué un espacio a veces es + y a veces %20?
En las cadenas de consulta de los formularios HTML, el espacio se escribe como +; en el resto de una URL es %20. Activa “Tratar + como espacio” al decodificar datos de formularios.
¿Qué significa “escape de porcentaje roto”?
Un % debe ir seguido de dos dígitos hexadecimales, y los caracteres multibyte necesitan todos sus bytes. Un texto cortado en mitad de una secuencia de escape, como %E2%82, no se puede decodificar.
¿La ruta de una URL se codifica de forma distinta que la consulta?
En general se aplican las mismas reglas, con dos diferencias. En la ruta, / separa los segmentos, así que codifica cada segmento por separado y una barra dentro de un nombre se convierte en %2F. Además, + es un signo más literal en la ruta, mientras que las cadenas de consulta codificadas como formulario lo interpretan como un espacio.
¿Cuál es la longitud máxima de una URL?
Los estándares no fijan ningún límite, pero en la práctica sí los hay. Los navegadores admiten URL muy largas, mientras que los servidores, proxies y CDN suelen limitar la línea de la solicitud a unos 8 KB y responder 414 URI Too Long. Mantén las URL por debajo de unos 2000 caracteres y envía los datos grandes en el cuerpo de un POST.
¿Es seguro poner tokens o direcciones de correo en una URL?
Mejor evitarlo. Las URL acaban en los logs del servidor, los logs de los proxies, el historial del navegador y la cabecera Referer que se envía a otros sitios. La codificación porcentual no oculta nada, ya que cualquiera puede decodificarla. Envía los tokens en una cabecera Authorization y los datos personales en el cuerpo de un POST.

¿Qué es la codificación URL (codificación porcentual)?

La codificación URL, o codificación porcentual, sustituye los caracteres que no están permitidos o que tienen un significado especial en una URL por un signo % y dos dígitos hexadecimales. Un espacio se convierte en %20, & en %26 y / en %2F. Las reglas vienen del RFC 3986, que enumera los caracteres no reservados que nunca necesitan codificarse: letras ASCII, dígitos y - . _ ~. Todo lo demás puede necesitar escaparse, según la parte de la URL en la que aparezca.

El texto no ASCII se convierte primero en bytes UTF-8, y cada byte se codifica por separado. Por eso “é” se convierte en %C3%A9 y el emoji del cohete en cuatro secuencias de escape, %F0%9F%9A%80. Al decodificar, deben estar presentes todos los bytes de un carácter. Esta herramienta usa las funciones estándar encodeURIComponent, encodeURI y decodeURIComponent de tu navegador, así que los resultados de codificar y decodificar URL coinciden con lo que produce el código JavaScript.

Cómo analizar una URL y leer sus parámetros de consulta

El modo Analizar URL divide un enlace en las partes que define el estándar URL: protocolo, nombre de usuario, host, puerto, ruta, consulta, fragmento y origen, cada una con su propio botón de copiar. La cadena de consulta se divide en pares de nombre y valor con cada valor decodificado, así que ?q=running%20shoes aparece como running shoes. Si un parámetro aparece más de una vez, como color=black&color=white, cada aparición tiene su propia fila.

El parser necesita una URL completa, con el esquema, así que example.com/path falla mientras que https://example.com/path funciona. Si la URL contiene una contraseña, se oculta en la tabla de partes. En código, el mismo análisis está disponible como new URL(link) con url.searchParams en navegadores y Node.js, o urllib.parse en Python. Cuando el enlace viene de un comando curl, el conversor de curl convierte la solicitud completa en fetch o Python.

¿Por qué se rompe mi URL? Errores de codificación habituales

El fallo clásico es construir una URL concatenando valores sin codificar. Un término de búsqueda como R&D enviado como ?q=R&D se convierte en q=R más un segundo parámetro vacío llamado D. Codifica cada valor por separado con encodeURIComponent, o deja que URLSearchParams construya la cadena de consulta por ti. Nunca pases una URL completa por encodeURIComponent, porque también escapa los dos puntos y las barras que la URL necesita para funcionar.

El fallo contrario es la doble codificación. Un valor codificado dos veces convierte % en %25, así que un espacio se convierte en %2520 y sigue mostrando %20 tras una decodificación. Si ves %25 en una URL, decodifica una vez y comprueba si el resultado aún contiene secuencias de escape. Vigila también el signo más: en una cadena de consulta a menudo se interpreta como un espacio, así que codifica un + literal como %2B.

¿Algo no funciona o un resultado parece incorrecto? Informar de un problema con esta herramienta