Cómo codificar y decodificar datos con Base64 y hexadecimal
Cuándo y por qué usar Base64, Base64-URL, Base32 y hex; qué hacer cuando los datos binarios no caben en ASCII; y cómo decodificar sin perder ceros finales.

Más utilidades que combinan bien con esta guía:
Por qué importa
Los datos binarios deben moverse por sistemas que solo aceptan texto. El ejemplo clásico: un PNG adjunto en una petición JSON API. Base64 infla 3 bytes en 4 caracteres ASCII — es el coste del transporte seguro. Equivocar la variante (+/ vs -_, con o sin relleno) y tu decodificador devuelve basura. Saber qué códec usar y sus rarezas convierte una molestia de una línea en algo trivial.
Tres escenarios reales
Codifica el archivo en Base64, colócalo en JSON; el servidor decodifica a bytes.
Una sola ida y vuelta
Separa por puntos, decodifica Base64-URL del encabezado y payload, verifica la firma contra el secreto.
Verificar la firma
Pega pares hex; el códec emite los bytes crudos para más análisis.
Reconstruir el frame binario
Guía paso a paso
Abre la herramienta Codificar/Decodificar.
Elige la codificación
Base64 (RFC 4648 estándar), Base64-URL (segura para URL), Base32 o Hex. Cada una tiene alfabetos y reglas de relleno distintas.
Coloca tu entrada
El texto o archivo va en el panel izquierdo. Cambia el modo de entrada si tienes binario en lugar de texto ASCII.
Activa Codificar vs Decodificar
La codificación es simétrica: codificar → decodificar devuelve el original. Si decodificar produce basura, probablemente era otra variante.
Elige UTF-8 vs bytes crudos para la salida
Para payloads de texto, decodifica como UTF-8. Para binario (imágenes, archivos), descarga el resultado como archivo.
Copia o descarga
Texto plano al portapapeles; resultados binarios se descargan con el MIME inferido.
Bytes
Hello, GitHub?Codificaciones
Standard: SGVsbG8sIEdpdEh1Yj8=
URL-safe: SGVsbG8sIEdpdEh1Yj8
(no padding, '+'/'/' replaced with '-'/'_')Bytes
\x00\x0F\xA5\xFFHex
00 0F A5 FF
Consejos útiles
- Los componentes JWT son Base64-URL sin relleno. Los decodificadores Base64 estándar pueden quejarse — usa el perfil seguro para URL.
- Elimina espacios en blanco antes de decodificar. Base64 pegado desde PDF suele traer saltos de línea blandos que decodificadores antiguos rechazan.
- En capturas de red, hex es legible; para transporte, prefiere Base64. Hex es 2× más grande que los bytes fuente; Base64 ~1,33×.
- Verifica integridad de archivo. Tras decodificar, hashea el resultado con el generador de hash y compáralo con el hash fuente.
Trampas comunes
Error frecuente
El texto decodificado tiene caracteres raros o «?»
Los bytes son binario válido pero no UTF-8 válido. Cambia el modo de salida de «texto UTF-8» a «bytes crudos» / descarga archivo.
Error frecuente
Base64 con '=' final pegado desde correo es rechazado
Algunos codificadores usan = de relleno, otros lo omiten. Re-codifica la entrada con relleno explícito (o elimínalos) para igualar el destino.
Error frecuente
Hex con separadores (00:0F:A5) falla al decodificar
Elimina dos puntos, espacios y saltos primero — el decodificador espera dígitos hex puros.
Cuándo no es la herramienta adecuada
- Hashing (unidireccional, verificación o almacenamiento de contraseñas) — usa el generador de hash. Base64 es reversible y no es un hash.
- Cifrado (confidencialidad) — Base64 no es cifrado. Usa un cifrado real y protege la clave.
- Compresión — Base64 expande datos. Si importa el tamaño, gzip primero, luego Base64.
Preguntas frecuentes
¿Por qué Base64 añade ~33 % de overhead?
Cada entrada de 3 bytes se mapea a 4 caracteres de un alfabeto de 64. 4/3 ≈ 1,33×. El relleno añade un poco más cuando la longitud no es múltiplo de 3.
¿Base64 es una función hash?
No. Base64 es una codificación reversible. Cualquiera con la cadena codificada recupera el original.
¿La herramienta envía mis datos?
No. Codificar/decodificar corre en tu navegador; los archivos no se suben.
Próximos pasos
- Hashea salidas binarias con el generador de hash para comprobaciones de integridad.
- Firma payloads API con el generador HMAC.
- Incrusta imágenes directamente en HTML/CSS vía Imagen a Base64 cuando no quieras CDN.