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
- Elige Analizar URL para dividir un enlace en sus partes, o Codificar / Decodificar para la codificación por porcentaje.
- Pega una URL o un texto.
- En el modo Analizar, lee el protocolo, el host, la ruta y cada parámetro de consulta ya decodificados.
- 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