# Codificador y decodificador Base64 y URL

*Texto* · [Utilteca](https://utilteca.com/)

> Pega tu texto, elige operación y obtén el resultado al instante. Todo se procesa en tu navegador: el texto no se envía a ningún servidor.

Herramienta online gratuita, sin registro. Versión interactiva: https://utilteca.com/codificador-base64-url/

**Ejemplos de codificación**

| Texto | Base64 | URL (porcentaje) | Base64URL |
| --- | --- | --- | --- |
| Hola | SG9sYQ== | Hola | SG9sYQ |
| Año 2025 | QcOxbyAyMDI1 | A%C3%B1o%202025 | QcOxbyAyMDI1 |
| ¿Qué tal? | wr9RdcOpIHRhbD8= | %C2%BFQu%C3%A9%20tal%3F | wr9RdcOpIHRhbD8 |
| a+b=c | YStiPWM= | a%2Bb%3Dc | YStiPWM |
| https://utilteca.com/?q=café | aHR0cHM6Ly91dGlsdGVjYS5jb20vP3E9Y2Fmw6k= | https%3A%2F%2Futilteca.com%2F%3Fq%3Dcaf%C3%A9 | aHR0cHM6Ly91dGlsdGVjYS5jb20vP3E9Y2Fmw6k |

## ¿Para qué sirve Base64?

Base64 permite representar datos binarios usando solo 64 caracteres ASCII imprimibles (A-Z, a-z, 0-9, +, /). Casos típicos: incrustar imágenes en HTML/CSS (data URIs), enviar binarios en JSON, codificar tokens de autenticación.

Cada 3 bytes de entrada se convierten en 4 caracteres, así que el resultado ocupa aproximadamente un **33 % más** que el original. Cuando el número de bytes no es múltiplo de 3, se completa con uno o dos signos `=` de relleno (padding).

## Base64 vs Base64URL

El estándar Base64 usa `+` y `/`, que son problemáticos en URLs. Base64URL los sustituye por `-` y `_` y omite el padding `=`. Es lo que se usa en JWT, JWE y otros tokens web.

## URL encoding

El URL encoding (porcentaje) convierte caracteres especiales en su representación hexadecimal precedida de %. Por ejemplo, espacio → `%20`, ñ → `%C3%B1` (UTF-8). Es obligatorio para incluir caracteres no ASCII en URLs.

Solo quedan sin codificar las letras sin tilde, los dígitos y los signos `-`, `_`, `.` y `~` (los caracteres «no reservados» del estándar RFC 3986). Todo lo demás, incluidos `&`, `=`, `?` y `/`, se codifica, por lo que el resultado se puede usar con seguridad como valor de un parámetro.

## Cómo usar la herramienta

- Pega el texto o la cadena en el cuadro.
- Elige la operación: codificar o decodificar en Base64, Base64URL o URL.
- Pulsa «Procesar» y copia el resultado con el botón.

El texto se trata como **UTF-8**, igual que en la mayoría de lenguajes y APIs web: las tildes, la ñ y los emojis ocupan varios bytes y se codifican correctamente. Si al decodificar aparece el error de cadena no válida, revisa que no falten caracteres al final o que no se haya colado un espacio raro o un salto de línea en medio de un token. Para decodificar un JWT, copia solo una de sus tres partes (separadas por puntos) y usa «Base64URL → decodificar».

## Preguntas frecuentes

### ¿Base64 es cifrado?

No, es solo codificación. Cualquiera puede decodificarlo. No metas contraseñas en Base64 pensando que están protegidas.

### ¿Cuál es la diferencia entre urlencode y rawurlencode?

rawurlencode codifica el espacio como %20 (RFC 3986). urlencode lo codifica como + (forma antigua de formularios). Aquí usamos rawurlencode, que es lo más correcto para URLs modernas.

### ¿Por qué una cadena Base64 termina en = o ==?

Es el relleno (padding): indica que el último bloque tenía 1 o 2 bytes en lugar de 3. Base64URL suele omitirlo, y esta herramienta lo añade automáticamente al decodificar.

### ¿Cómo leo el contenido de un token JWT?

Un JWT tiene tres partes separadas por puntos. Copia la primera (cabecera) o la segunda (datos) y decodifícala con «Base64URL → decodificar». La tercera es la firma, que es binaria y no se lee como texto.
