Skip to content
Codificar / Decodificar URL
Tools

Codificar / Decodificar URL

Nuevo

Codifica o decodifica texto en porcentaje y analiza cadenas de consulta, todo en tu navegador.

Special characters reference
Character Encoded (%XX) Notes
space %20 Also encoded as + in HTML form query strings
& %26 Query param separator — encode in values
= %3D Key-value separator in query strings
? %3F Marks the start of a query string
# %23 Fragment identifier
/ %2F Path separator
: %3A Protocol / port separator
@ %40 Username delimiter in URLs
+ %2B Literal plus sign (+ in query string = space)
% %25 Percent itself — encode to avoid ambiguity
%E2%82%AC UTF-8 multi-byte (3 bytes)
© %C2%A9 UTF-8 multi-byte (2 bytes)
Per-language code snippets

Copy-ready snippets for JavaScript, Python, C#, PowerShell, Java and Go.

JavaScript / Node.js
// Encode a single query value (recommended)
const encoded = encodeURIComponent('hello world & co.');
// → 'hello%20world%20%26%20co.'

// Decode
const decoded = decodeURIComponent('hello%20world%20%26%20co.');
// → 'hello world & co.'

// Encode a full URL (leaves : / ? & # intact)
const safeUrl = encodeURI('https://example.com/search?q=hello world');
// → 'https://example.com/search?q=hello%20world'
Python
from urllib.parse import quote, unquote, urlencode

# Encode a single value (%20 for spaces)
encoded = quote('hello world & co.')
# → 'hello%20world%20%26%20co.'

# Decode
decoded = unquote('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Encode a query dict (uses + for spaces — form encoding)
qs = urlencode({'q': 'hello world', 'page': '2'})
# → 'q=hello+world&page=2'

# quote_plus encodes spaces as + (match HTML form encoding)
plus = quote_plus('hello world')
# → 'hello+world'
C# / .NET
// Encode a single value (spaces → %20)
string encoded = Uri.EscapeDataString("hello world & co.");
// → "hello%20world%20%26%20co."

// Decode
string decoded = Uri.UnescapeDataString("hello%20world%20%26%20co.");
// → "hello world & co."

// Older System.Web API (spaces → +, form encoding):
// HttpUtility.UrlEncode("hello world") → "hello+world"
PowerShell
# .NET method — works in PS 5+ and PowerShell Core
$encoded = [Uri]::EscapeDataString('hello world & co.')
# → 'hello%20world%20%26%20co.'

$decoded = [Uri]::UnescapeDataString('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Alternate via System.Web (Desktop PS only):
Add-Type -AssemblyName System.Web
$enc2 = [System.Web.HttpUtility]::UrlEncode('hello world')
# → 'hello+world'
Java
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

// Encode (URLEncoder uses + for spaces — form encoding)
String encoded = URLEncoder.encode("hello world & co.", StandardCharsets.UTF_8);
// → "hello+world+%26+co."

// Decode
String decoded = URLDecoder.decode("hello+world+%26+co.", StandardCharsets.UTF_8);
// → "hello world & co."
Go
import "net/url"

// QueryEscape: spaces become +
encoded := url.QueryEscape("hello world & co.")
// → "hello+world+%26+co."

decoded, err := url.QueryUnescape("hello+world+%26+co.")
// → "hello world & co.", nil

// PathEscape: spaces become %20
pathSafe := url.PathEscape("hello world & co.")
// → "hello%20world%20&%20co."

Runs entirely in your browser. Nothing is uploaded.

Codificador y decodificador de URL gratuito online

Este codificador y decodificador de URL convierte texto a formato percent-encoded — o revierte el proceso — directamente en tu navegador. Pega tu texto, elige Codificar o Decodificar, selecciona las reglas Componente o URI Completo, y el resultado se actualiza en tiempo real. Nada se sube; cada operación se ejecuta íntegramente en tu navegador usando las mismas funciones JavaScript integradas que usa tu código.

La codificación de porcentaje es inevitable en el desarrollo web. Los espacios, ampersands, signos de igual y caracteres no ASCII deben escaparse antes de poder vivir de forma segura en una URL. Ya sea que estés construyendo una solicitud de API, depurando un enlace de seguimiento o leyendo un registro del servidor, esta herramienta maneja todos los casos especiales — incluidos caracteres UTF-8 multibyte, secuencias malformadas y la ambigüedad del espacio + vs %20.

encodeURIComponent vs encodeURI — ¿qué regla usar?

encodeURIComponent es la opción correcta para valores de consulta individuales, segmentos de ruta o cualquier cadena que estés insertando en una URL. Codifica casi todos los caracteres especiales — incluyendo ?, &, =, /, # y : — para que el valor no pueda romper la estructura de la URL. Ejemplo: 'hello world & page=2' se convierte en 'hello%20world%20%26%20page%3D2'.

encodeURI está diseñado para codificar una URL completa sin romperla. Deja intactos los caracteres estructurales (: / ? # &) para que la URL siga funcionando mientras codifica espacios y caracteres no ASCII. Si tienes dudas, prefiere las reglas de Componente para cualquier valor que estés insertando — ese es el valor predeterminado seguro en casi todos los frameworks web.

Espacios como %20 vs + — la distinción de codificación de formularios

Hay dos formas válidas de codificar un espacio en una URL. En las rutas de URL (la parte antes del ?), RFC 3986 requiere %20. En las cadenas de consulta de formularios HTML, el formato antiguo application/x-www-form-urlencoded codifica los espacios como + por compacidad histórica — y eso es lo que los navegadores aún envían cuando envías un formulario mediante GET.

Ambos significan 'espacio', pero solo en su propio contexto. Un + en una ruta de URL es un signo más literal; un + en una cadena de consulta es un espacio. Un signo más literal en un valor de consulta debe codificarse como %2B o se malinterpretará. El botón + como espacio del modo de decodificación gestiona la entrada codificada en formularios reemplazando + por un espacio antes de ejecutar decodeURIComponent.

Cómo se compara con CyberChef y otras herramientas de codificación de URL

CyberChef (de GCHQ) es potente pero está diseñado en torno a un concepto de canalización de 'recetas' — encadenas múltiples operaciones. Para la codificación o decodificación pura de URL, aún tienes que buscar la operación, arrastrarla a la receta y luego procesar la entrada. Es excelente para transformaciones complejas; es más lento de lo necesario para una codificación/decodificación rápida.

Otras herramientas en línea como urldecoder.org son simples pero muestran anuncios, requieren recargas completas de página en cada operación y no ofrecen fragmentos de código por lenguaje. Esta herramienta actualiza el resultado instantáneamente en cada pulsación de tecla, maneja reglas de Componente y URI Completo, incluye una tabla de referencia de caracteres codificados comunes y muestra código listo para copiar en JavaScript, Python, C#, PowerShell, Java y Go.

Referencia rápida de caracteres especiales

Los caracteres más comúnmente codificados en el desarrollo web: espacio → %20 (o + en cadenas de consulta), & → %26, = → %3D, ? → %3F, # → %23, / → %2F, : → %3A, @ → %40, + → %2B, % → %25. Los caracteres UTF-8 multibyte se expanden en múltiples secuencias: € → %E2%82%AC, é → %C3%A9.

Los caracteres que nunca se codifican son el conjunto no reservado: letras A–Z y a–z, dígitos 0–9 y los cuatro símbolos - _ . ~. Todo lo demás — incluyendo cada carácter no ASCII — debe estar codificado en porcentaje en una URL conforme a los estándares.

Codificación de URL en JavaScript, Python, C#, PowerShell y Java

Cada lenguaje principal tiene una función integrada para esto. En JavaScript / Node.js: encodeURIComponent(str) y decodeURIComponent(str) — sin importaciones necesarias. En Python: urllib.parse.quote(str) y unquote(str); urlencode(dict) para una cadena de consulta completa. En C#: Uri.EscapeDataString(str) y Uri.UnescapeDataString(str) del espacio de nombres System. En PowerShell: [Uri]::EscapeDataString(str), disponible en PS 5+ y PowerShell Core. En Java: URLEncoder.encode(str, StandardCharsets.UTF_8).

El panel de fragmentos por lenguaje incluye código listo para copiar en JavaScript, Python, C#, PowerShell, Java y Go para que puedas agregar la llamada correcta a tu proyecto de inmediato — con notas sobre el comportamiento de espacio + vs %20 para la biblioteca estándar de cada lenguaje.

100% privado — también funciona sin conexión

Cada operación de codificación y decodificación utiliza solo las funciones integradas de tu navegador: encodeURIComponent, decodeURIComponent, encodeURI y decodeURI. Ningún texto se envía jamás a un servidor, se almacena o se registra — ni siquiera los nombres de dominio en las URLs que pegas. Una vez cargada la página, pon el dispositivo sin conexión y continúa funcionando perfectamente. Guarda un marcador y úsala cuando necesites codificar, decodificar o inspeccionar una URL.

Frequently asked questions

¿Qué es la codificación de URL?

La codificación de URL (también llamada codificación de porcentaje) convierte los caracteres que no son seguros en una URL en un signo % seguido de dos dígitos hexadecimales. Por ejemplo, un espacio se convierte en %20, un ampersand en %26 y una almohadilla en %23. Garantiza que cada URL sea válida en cualquier navegador, encabezado HTTP o servidor independientemente del conjunto de caracteres.

¿Qué significa %20 en la codificación de URL?

%20 es la representación codificada en porcentaje de un carácter espacio. El 20 es el valor hexadecimal de ASCII 32 (el espacio). Así que la URL 'hello%20world' se decodifica de nuevo en 'hello world'. En cadenas de consulta de formularios HTML a veces verás + en lugar de %20 para los espacios — ambos significan lo mismo en cadenas de consulta pero no en rutas de URL.

¿Cuál es la diferencia entre encodeURI y encodeURIComponent?

encodeURIComponent es para valores de consulta individuales o segmentos de ruta — codifica casi todo incluyendo : / ? # & = para que el valor no pueda romper la estructura de la URL. encodeURI es para una URL completa — deja intactos los caracteres estructurales como : / ? & # para que la URL siga funcionando. Como regla, usa siempre encodeURIComponent para los valores individuales que insertas en un enlace.

¿Cómo codifico una URL en JavaScript?

Usa encodeURIComponent() para valores individuales: encodeURIComponent('hello world & co.') devuelve 'hello%20world%20%26%20co.'. Para revertirlo usa decodeURIComponent(). Para una URL completa usa encodeURI() / decodeURI() — omiten los caracteres estructurales. Ambas están integradas en cada navegador y Node.js sin necesidad de importaciones.

¿Por qué un espacio es %20 a veces y + otras veces?

En rutas de URL (antes del ?), los espacios deben ser %20 según RFC 3986. En las cadenas de consulta, el antiguo formato application/x-www-form-urlencoded utilizado por los formularios HTML codifica los espacios como + por brevedad histórica. Ambos significan 'espacio' pero solo en su propio contexto — un + literal en un valor de consulta debe codificarse como %2B o se interpretará erróneamente como espacio.

¿Es seguro codificar y decodificar online?

Sí — esta herramienta es 100% local. Cada operación se ejecuta en tu navegador usando funciones JavaScript integradas. Tu texto nunca se envía a ningún servidor, no se almacena ni se registra. Incluso puedes desconectarte después de cargar la página y sigue funcionando. Esto es especialmente importante al codificar claves de API, credenciales o tokens.

¿Cuáles son los caracteres que siempre se deben codificar en una URL?

Cualquier carácter fuera del conjunto no reservado (A–Z, a–z, 0–9, guion, guion bajo, punto, tilde) debe codificarse en porcentaje. Los más comunes: espacio → %20, & → %26, = → %3D, ? → %3F, # → %23, / → %2F, : → %3A, @ → %40, + → %2B, % → %25. Los caracteres no ASCII como acentos y emojis se codifican como múltiples secuencias %XX mediante UTF-8.