Sobre la codificación URL
Las URL solo pueden contener un conjunto limitado de caracteres ASCII. Los caracteres especiales como espacios, ampersands y letras no-ASCII deben estar codificados en porcentaje: reemplazados por un signo de porcentaje seguido de dos dígitos hexadecimales. Un espacio se convierte en %20.
Esta herramienta usa encodeURIComponent, que codifica todo excepto letras, dígitos y - _ . ! ~ * ( ). Es la función correcta para codificar un valor de parámetro de cadena de consulta o un segmento de ruta.
¿Cómo se codifica en porcentaje un componente de URL?
Para codificar en porcentaje un texto que se usará en una URL, sustituye cada carácter fuera del conjunto no reservado (letras, dígitos y - _ . ! ~ * ' ( )) por un signo de porcentaje seguido de dos dígitos hexadecimales que representan el valor en bytes UTF-8 de ese carácter. Ejemplo: «hello world» se convierte en «hello%20world» y «café» se convierte en «caf%C3%A9».
Pasos para codificar y decodificar en porcentaje un componente de URL
- Convierte el texto de entrada en bytes UTF-8, ya que los caracteres no ASCII pueden representarse con más de un byte.
- Examina cada byte; si corresponde a un carácter no reservado (A-Z, a-z, 0-9, - _ . ! ~ * ' ( )), déjalo sin cambios.
- Para cualquier otro byte, sustitúyelo por un signo de porcentaje seguido de su valor hexadecimal de dos dígitos en mayúsculas; por ejemplo, un espacio (0x20) se convierte en %20.
- Une los resultados en una sola cadena; esta es la representación codificada en porcentaje y segura para URL del texto original.
- Para decodificar, busca % seguido de dos dígitos hexadecimales, convierte cada uno de vuelta a su valor de byte y reensambla los bytes UTF-8 para recuperar el texto original.
Regla de codificación en porcentaje
Byte reservado/inseguro -> %XX, donde XX es el valor del byte en dos dígitos hexadecimales mayúsculas
- Caracteres no reservados = A-Z, a-z, 0-9, - _ . ! ~ * ' ( ) — nunca se codifican
- %XX = signo de porcentaje más dos dígitos hexadecimales que representan un byte de la codificación UTF-8 del carácter original
Ejemplos de resultados de codificación
| Texto | Codificado |
|---|
| hello world | hello%20world |
| a=b&c=d | a%3Db%26c%3Dd |
| café | caf%C3%A9 |
| 100% off! | 100%25%20off! |
| user@example.com | user%40example.com |
Preguntas frecuentes
¿Por qué encodeURIComponent deja sin codificar ! ~ * ' ( )?
Estos caracteres, junto con las letras, los dígitos y - _ ., se definen como seguros para aparecer directamente en un componente de URI y no tienen un significado especial ahí, así que encodeURIComponent de JavaScript los deja tal cual. Otras funciones como encodeURI reservan un conjunto de caracteres distinto y más amplio porque están pensadas para codificar una URL completa en lugar de un solo componente.
¿Cuál es la diferencia entre codificar un componente de URL y una URL completa?
Codificar un solo componente (como el valor de un parámetro de consulta) debe escapar caracteres como & y = para que no se confundan con la estructura de la URL. Codificar una URL completa debe dejar intactos los caracteres estructurales como :, /, ? y &, para que la URL siga interpretándose correctamente; por eso encodeURIComponent y encodeURI se comportan de forma distinta.
¿Por qué un espacio a veces se convierte en %20 y otras en +?
%20 es la codificación en porcentaje general para un espacio en la ruta de una URL y en la salida de encodeURIComponent. El signo + para un espacio es una convención heredada específica del formato application/x-www-form-urlencoded, usado en el envío de formularios HTML y en las cadenas de consulta, no una regla general de codificación de URL.
¿Por qué falla la decodificación con un error en algunas entradas?
La decodificación falla cuando un % no va seguido de dos dígitos hexadecimales válidos, o cuando los bytes decodificados no forman un UTF-8 válido; por ejemplo, al pegar una secuencia de porcentaje incompleta como %E2%9 sin su byte final. Comprueba que la entrada sea un texto completo y correctamente codificado en porcentaje.
Esta herramienta codifica y decodifica un único valor de texto usando encodeURIComponent/decodeURIComponent de JavaScript, conforme a los caracteres no reservados de la RFC 3986; no analiza ni valida la estructura de una URL completa (esquema, host, ruta, consulta) como componentes independientes.
Sources: RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax
Privacidad y seguridad
- Se calcula en el navegador — Lo que escribe se calcula solo en su dispositivo y nunca se envía a un servidor de utilduck.
- Conexión cifrada — Todas las páginas se sirven por HTTPS, por lo que nadie en la red puede leer su contenido.
- No se comparte con terceros — Sus datos no se transmiten a servicios de analítica ni de publicidad.
- No se almacena — Los resultados no se guardan en ningún servidor y no hace falta crear una cuenta.
Última actualización: 2026-08-17