Qué hace esta herramienta
Codifica y decodifica Base64 en tu navegador. Soporta dos variantes:
- Estándar (RFC 4648 §4): alfabeto
A-Z a-z 0-9 + /con padding=. La que verás en cabeceras MIME, datos PEM y URLsdata:. - URL-safe (RFC 4648 §5): igual pero
+se sustituye por-y/por_, y normalmente sin padding. La que usan JWT, JWS y muchas URLs cortas.
La decodificación es UTF-8 consciente: si los bytes decodificados forman un texto UTF-8 válido, se muestra como texto; si no, se ofrece una vista hex y se avisa explícitamente.
Cuándo la usarías
- Inspeccionar un segmento de un JWT a mano.
- Decodificar un
Authorization: Basicpara ver el usuario:contraseña. - Convertir una imagen pequeña a una URL
data:para incrustarla en HTML/CSS. - Pegar la salida de
base64desde la línea de comandos y verificar que es lo que esperas.
Cómo funciona
La codificación usa btoa y atob del navegador con un wrapper UTF-8 (TextEncoder/TextDecoder) para que los caracteres no ASCII funcionen correctamente. Para URL-safe se hace una sustitución posterior trivial.
Los errores son explícitos: caracteres fuera del alfabeto se marcan, padding incorrecto se marca, bytes que no decodifican como UTF-8 válido se muestran como hex con una nota.
Nada se sube. La conversión es local y casi instantánea incluso con entradas de varios MB.
Notas
¿Por qué btoa no funciona con caracteres no ASCII directamente? Porque btoa espera una cadena de "bytes" pero JavaScript tiene cadenas UTF-16. La envoltura UTF-8 traduce primero la cadena a bytes UTF-8 y luego a Base64, que es lo que casi todo el mundo quiere decir.
¿Padding o no? El estándar lo permite ambos. Para Base64 estándar lo añadimos por defecto al codificar; para URL-safe no, porque casi ninguna spec que use URL-safe lo incluye (JWT/JWS lo prohíben). Al decodificar aceptamos cualquiera.
¿Y base64url con = final? Lo aceptamos al decodificar. Al codificar como URL-safe se omite el padding.
Herramientas relacionadas
- Codificador URL — para escapar texto en URLs (no es lo mismo que Base64)
- Decodificador JWT — un JWT son tres trozos base64url
- Generador de hashes — los digest binarios suelen mostrarse en Base64