Desarrollo web · Gratis · Sin registro
Codificar y decodificar URL online
Convierte texto y valores de parámetros con percent-encoding UTF-8 mediante encodeURIComponent y decodeURIComponent.
Pega un valor que vaya dentro de una ruta, consulta o fragmento y conviértelo a percent-encoding con `encodeURIComponent()`. También puedes recuperar texto desde secuencias `%HH` válidas con `decodeURIComponent()`. La herramienta trabaja sobre un componente, no analiza ni monta una URL completa: codifica caracteres estructurales como `?`, `&`, `=`, `/` y `#`, deja los espacios como `%20` y no interpreta `+` como espacio.
🔒 El tratamiento se realiza en este navegador; tus datos no se envían a FunnyTools.
Usar la herramienta
Qué puedes hacer aquí
- Codificar texto Unicode como un componente URI con secuencias porcentuales UTF-8.
- Decodificar secuencias `%HH` válidas para recuperar texto legible.
- Convertir tildes, ñ, emoji, espacios y delimitadores de consulta.
- Copiar el resultado o limpiar ambos cuadros para empezar otra prueba.
- Rechazar entradas mal formadas en vez de mostrar una salida parcial.
Respuesta rápida: cómo codificar una URL
Si necesitas colocar `café con leche & té` como valor de un parámetro, pega solo ese valor y pulsa «Codificar componente». El resultado será `caf%C3%A9%20con%20leche%20%26%20t%C3%A9`. Después puedes construir la consulta como `?q=` más la salida. Para volver al texto, pega la cadena codificada y pulsa «Decodificar componente». El cuadro original no se sustituye, por lo que puedes comparar entrada y resultado antes de copiar.
La palabra «URL» de la búsqueda puede resultar ambigua. Este widget usa `encodeURIComponent()`, que está pensado para una parte de la dirección y codifica también caracteres con función estructural. Si pegas `https://ejemplo.com/buscar?q=café`, los dos puntos, barras, signo de interrogación e igual se convertirán. Eso puede ser correcto si toda la dirección será el valor de otro parámetro, pero no si querías conservarla como URL navegable.
Qué significa percent-encoding en UTF-8
El percent-encoding representa determinados bytes con `%` seguido de dos dígitos hexadecimales. `encodeURIComponent()` convierte primero el texto Unicode a su representación UTF-8 y después escapa los bytes necesarios. Una `ñ` ocupa dos bytes UTF-8 y aparece como `%C3%B1`; un espacio aparece como `%20`; un emoji necesita cuatro bytes y produce cuatro grupos porcentuales. La cantidad de grupos no equivale al número visible de letras.
Las letras latinas sin acento, los dígitos y algunos signos permanecen legibles. En concreto, el comportamiento nativo también deja sin escapar `- _ . ! ~ * ' ( )`. Eso no significa que cada protocolo, firma o servidor acepte exactamente la misma forma. Algunos perfiles basados en RFC 3986 aplican reglas más estrictas y codifican además determinados signos. La herramienta muestra la salida real de JavaScript; no afirma cumplir automáticamente todos los perfiles de canonicalización.
- `á` se codifica por sus bytes UTF-8, no por una tabla Latin-1.
- `%20` representa un espacio en esta salida.
- Los dígitos hexadecimales de la salida suelen aparecer en mayúscula.
- Decodificar exige grupos porcentuales completos y bytes UTF-8 válidos.
Componente URI frente a URL completa
Una dirección puede contener esquema, autoridad, ruta, consulta y fragmento. Dentro de la consulta, `&` separa pares y `=` separa nombre y valor; `#` inicia un fragmento y `/` separa segmentos de ruta. Al codificar un valor individual conviene escapar esos delimitadores para que pasen a ser datos. Por eso `tema=a&b` no debe construirse concatenando el valor bruto `a&b`: el ampersand podría interpretarse como un segundo parámetro.
No uses el resultado como verificador de seguridad. La codificación no comprueba `http` frente a `https`, dominio, puerto, ruta autorizada, redirecciones, homógrafos ni esquemas peligrosos. Tampoco evita inyección cuando el destino es HTML, JavaScript, SQL o una cabecera. Cada contexto tiene su propia codificación y validación. Primero valida qué dato está permitido; después codifica el componente en el punto donde se inserta.
Espacio como %20 y signo más
`encodeURIComponent()` transforma el espacio en `%20`. Los formularios con tipo `application/x-www-form-urlencoded` suelen representar el espacio con `+`, pero esa es otra convención. `decodeURIComponent()` no cambia automáticamente `+` por espacio: `café+molido` seguirá siendo `café+molido`. Si analizas datos de formulario, necesitas un parser de formularios o reemplazar el signo según el formato documentado antes de decodificar.
El signo más literal puede ser un dato válido, por ejemplo en una zona horaria, un teléfono o una expresión. Sustituir todos los `+` sin conocer el formato puede corromperlo. Pregunta si la fuente es un componente URI codificado con porcentajes, una cadena de consulta serializada como formulario o simplemente texto. Esta página resuelve el primer caso; no divide parámetros ni decide si un `+` significa suma, espacio o carácter literal.
Errores al decodificar y Unicode mal formado
Una secuencia como `%E0%A4%A` está incompleta y `decodeURIComponent()` lanza `URIError`; la herramienta vacía la salida y muestra un mensaje en español. También falla si los bytes porcentuales no forman UTF-8 válido. No intenta adivinar Windows-1252, Latin-1 u otra codificación, ni conserva silenciosamente una parte correcta. Si la cadena proviene de un sistema antiguo, identifica primero el charset declarado por esa fuente.
Al codificar, JavaScript también puede rechazar un sustituto Unicode aislado, una mitad interna de un carácter suplementario. Normalmente no aparece al escribir texto, pero puede surgir al cortar datos dañados o manipular unidades UTF-16. El componente ahora captura ese error y no deja una excepción de página. Reparar o sustituir ese carácter requiere una decisión sobre la fuente; el widget no altera datos defectuosos sin avisar.
Privacidad, secretos y comprobación
La conversión se realiza en la memoria de esta pestaña. FunnyTools no recibe la cadena para codificarla ni conserva un historial. Aun así, una URL puede incluir tokens, correos, identificadores, rutas internas o consultas personales. El percent-encoding es reversible y no oculta el dato frente al servidor, historial, registro, analítica, captura o persona que reciba el enlace. Usa valores ficticios para probar.
Comprueba el resultado dentro de la aplicación real. Verifica que el nombre del parámetro aparezca una sola vez, que `&` o `#` pertenecientes al valor ya no corten la estructura y que el servidor recupere el texto esperado una sola vez. La doble codificación convierte `%` en `%25`; por ejemplo, `%C3%B1` puede acabar como `%25C3%25B1`. Conserva la entrada y evita encadenar codificadores sin saber qué capa falta.
Cómo utilizarla paso a paso
- Identifica si trabajarás con un valor individual o si toda la URL será el dato de otro campo.
- Pega una copia sin contraseñas, tokens ni información personal.
- Pulsa codificar o decodificar y revisa espacios, delimitadores, tildes, ñ y emoji.
- Construye o prueba la URL en el sistema de destino sin volver a codificar la salida por error.
- Confirma que el receptor recupera exactamente el valor original y conserva la fuente.
Situaciones en las que resulta útil
- Codificar una búsqueda con espacios, tildes y ampersand antes de añadirla a `?q=`.
- Preparar un nombre de archivo Unicode como segmento de una ruta.
- Leer una cadena recibida con grupos `%HH` y comprobar si contiene texto UTF-8.
- Detectar una consulta de formulario donde `+` y `%20` no deben tratarse igual sin contexto.
- Comprobar si un valor ya estaba codificado antes de aplicar otra capa.
Ejemplos completos
Búsqueda con ampersand
El valor `café & té` se codifica antes de añadirlo a `q`. `%26` mantiene el ampersand dentro del valor, en vez de crear por accidente otro parámetro.
URL dentro de otra URL
Una dirección de retorno completa se utiliza como valor de `redirect`. En ese caso sí se codifica el conjunto completo porque sus `?`, `&` y `#` deben viajar como datos.
Doble codificación
Un equipo recibe `%2520` y descubre que `%20` fue codificado otra vez. Revisa cada capa y evita decodificar repetidamente datos no confiables.
Revisión editorial y de funcionamiento:
Cómo comprobar un componente URL
Una salida con signos de porcentaje puede ser válida y aun así estar aplicada a la parte equivocada o tener una capa de más.
Define la pieza
Separa esquema, dominio, ruta, nombre de parámetro, valor y fragmento antes de codificar.
Revisa la convención
Distingue percent-encoding de componente y serialización de formulario con signo más.
Prueba una vuelta
Decodifica una vez y confirma que recuperas exactamente el texto esperado.
Lista de comprobación
- La entrada no contiene tokens, contraseñas ni datos personales.
- Los delimitadores que son datos están codificados y los estructurales permanecen fuera del valor.
- No se aplicó una segunda capa de codificación por accidente.
- El servidor o aplicación de destino interpreta el valor como esperabas.
Límites y comprobaciones importantes
- La herramienta usa `encodeURIComponent()` y `decodeURIComponent()`, no `encodeURI()`.
- Codifica componentes; no valida ni reconstruye una URL completa.
- El espacio sale como `%20`; el decodificador no transforma `+` en espacio.
- El percent-encoding es reversible y no protege secretos.
- Una secuencia porcentual o Unicode mal formada produce un error, no una salida parcial.
Preguntas frecuentes
¿Debo pegar una URL completa?
Solo si toda esa URL será el valor de otro componente. Para conservar una dirección navegable, codifica únicamente cada valor que lo necesite.
¿Por qué el espacio aparece como %20 y no como +?
Porque se usa encodeURIComponent. El signo más para espacios pertenece a la serialización de formularios y requiere tratar ese formato por separado.
¿Decodifica dos veces automáticamente?
No. Aplica una sola operación para evitar alterar datos que contienen un porcentaje literal o una capa que aún debe conservarse.
¿La codificación hace segura una URL?
No. Solo representa caracteres. Debes validar esquema, dominio, ruta, permisos y el contexto donde se inserta el valor.
¿Qué ocurre con una secuencia % inválida?
Se muestra un error y la salida queda vacía. No se intenta adivinar ni devolver una cadena parcial.
¿La cadena se envía a FunnyTools?
No. La operación ocurre localmente en el navegador, pero evita introducir secretos porque la codificación es reversible.
Privacidad y tratamiento local
El texto se codifica y decodifica en esta pestaña. FunnyTools no recibe ni guarda el valor introducido.
Uso responsable del resultado
El percent-encoding no valida una URL, no evita inyecciones en otros contextos y no cifra información. Comprueba la estructura y el valor recuperado en el destino.
Última revisión editorial: