Codificador / Decodificador de URL/ Codificar · Decodificar · Formulario

Codifica y decodifica URLs con encodeURIComponent, encodeURI o codificacion de formularios en tiempo real.

Codificar todos los caracteres especiales (recomendado, para valores de parámetros)

Texto plano
0 caracteres
Codificado
Ratio de tamaño: —%0 caracteres
Codificaciones comunes
%20 / +
!%21
"%22
#%23
%%25
&%26
'%27
+%2B
/%2F
=%3D
?%3F
@%40

¿Esta herramienta resolvió tu problema?

¿Qué es la codificación URL

La codificación URL (codificación porcentual) convierte caracteres especiales en `%` seguido de dos dígitos hexadecimales. Las URLs solo允许 letras, números y少数 símbolos (`-_.~`). Otros caracteres como espacios (%20) o caracteres no ASCII deben ser codificados. Los navegadores codifican automáticamente las URL en la barra de direcciones,但 al construir URLs programáticamente, debes处理 la codificación手动mente.

Escenarios comunes de codificación URL

Pasar caracteres especiales en parámetros de consulta (ej: términos de búsqueda con `&` o `=`), envío de datos de formulario (POST usa codificación URL por defecto), solicitudes API con JSON o parámetros no ASCII, y URLs de callback OAuth. Usa `encodeURIComponent()` en JavaScript o `urllib.parse.quote()` en Python.

Ejemplos de codigo

JavaScript
// Encode a query parameter value
encodeURIComponent("Hello World! 中文")
// "Hello%20World!%20%E4%B8%AD%E6%96%87"

// Build a full query string (recommended)
const params = new URLSearchParams({
  q: "hello world",
  lang: "zh-CN",
  page: "1",
});
params.toString()
// "q=hello+world&lang=zh-CN&page=1"

// Decode
decodeURIComponent("Hello%20World%21")
// "Hello World!"
Python
from urllib.parse import (
    quote, unquote,
    urlencode, quote_plus
)

# Encode single value
quote("Hello World! 中文")
# 'Hello%20World%21%20%E4%B8%AD%E6%96%87'

# Form encoding (spaces → +)
quote_plus("hello world")
# 'hello+world'

# Build query string
urlencode({"q": "hello world", "page": 1})
# 'q=hello+world&page=1'

# Decode
unquote("Hello%20World%21")  # 'Hello World!'
Go
import "net/url"

// Encode a path segment
url.PathEscape("hello world/中文")
// "hello%20world%2F%E4%B8%AD%E6%96%87"

// Encode a query value
url.QueryEscape("hello world")
// "hello+world"

// Build query string
params := url.Values{}
params.Set("q", "hello world")
params.Set("lang", "zh-CN")
params.Encode()
// "lang=zh-CN&q=hello+world"

// Parse a URL
u, _ := url.Parse("https://example.com/search?q=hello+world")
u.Query().Get("q")  // "hello world"
Shell (curl)
# curl handles encoding automatically with --data-urlencode
curl -G https://api.example.com/search \
  --data-urlencode "q=hello world 中文" \
  --data-urlencode "page=1"

# Manual percent-encoding with Python
python3 -c "
import sys
from urllib.parse import quote
print(quote(sys.stdin.read().strip()))
" <<< "hello world 中文"

# Using jq to build encoded JSON body
curl -X POST https://api.example.com \
  -H 'Content-Type: application/json' \
  -d "$(jq -n --arg q 'hello world' '{query: $q}')"

Preguntas frecuentes

Cual es la diferencia entre encodeURIComponent y encodeURI?
encodeURIComponent codifica casi todos los caracteres especiales (incluyendo :/?#[]@!$&'()*+,;=) y se usa para valores individuales de parametros de consulta. encodeURI preserva los caracteres estructurales de la URL, siendo adecuado para codificar una URL completa. Use encodeURIComponent en la mayoria de los casos.
Que es la codificacion de formularios (application/x-www-form-urlencoded)?
La codificacion de formularios es el formato predeterminado para envios de formularios HTML. La unica diferencia con encodeURIComponent es que los espacios se convierten en + en lugar de %20. Los navegadores lo usan automaticamente para envios de <form>, y muchas API tambien aceptan cuerpos de solicitud en este formato.
Por que las URL no pueden contener caracteres no ASCII?
La especificacion de URL (RFC 3986) solo permite caracteres ASCII. Los caracteres no ASCII como CJK deben codificarse primero en UTF-8 como secuencia de bytes, luego cada byte se escribe como %XX. Por ejemplo, el caracter chino 中 se codifica como %E4%B8%AD en una URL.
Que caracteres no necesitan codificacion URL?
Los 'caracteres no reservados' del RFC 3986 nunca necesitan codificacion: letras (A-Z, a-z), digitos (0-9) y los cuatro simbolos - _ . ~. Dentro de componentes especificos de URL, algunos caracteres reservados tambien estan permitidos, pero generalmente es mas seguro codificar todos los caracteres no alfanumericos.
Tanto %20 como + representan un espacio. Cual es la diferencia?
%20 es la codificacion URL universal para un espacio, valida en cualquier parte de una URL. El signo + solo significa 'espacio' en cadenas de consulta bajo la convencion application/x-www-form-urlencoded — en rutas de URL, + significa un signo mas literal. Usar %20 universalmente evita ambiguedades.
Como construir correctamente cadenas de consulta URL en JavaScript?
Use la API URLSearchParams: new URLSearchParams({ key: value }).toString() maneja la codificacion automaticamente. Alternativamente, codifique manualmente cada valor con encodeURIComponent(value) al concatenar. Nunca concatene cadenas sin codificar — esto lleva a vulnerabilidades de inyeccion y errores de analisis.