Base64 vs hexadecimal
Ambas son codificaciones de texto RFC 4648 de los mismos bytes —la diferencia es aritmética y de hábitat. Hex duplica el tamaño pero se mantiene alineada al nibble y sin relleno, así que domina las sumas de verificación, las direcciones MAC y la depuración. Base64, en cambio, agranda los datos un tercio, así que domina el transporte a granel: MIME, JWT, data URIs y cookies.
Base64 vs hexadecimal: explicación
Las dos codificaciones parecen intercambiables: ambas convierten bytes arbitrarios en texto imprimible, ambas descodifican sin pérdidas y ambas están definidas una al lado de la otra en RFC 4648. No son tanto competidoras como dos grafías con aritmética distinta —el hexadecimal da a cada byte dos caracteres; base64 mete tres bytes en cuatro caracteres—. Todo lo demás de esta página, del relleno al hábitat, se deriva de esa aritmética.
Las cifras, con precisión: el hexadecimal es base16 —dieciséis caracteres, 4 bits cada uno—, así que un byte de 8 bits se convierte exactamente en dos caracteres y las cargas crecen un 100 %. Base64 usa sesenta y cuatro caracteres, 6 bits cada uno, y como el mínimo común múltiplo de 8 y 6 es 24, tres bytes se convierten en cuatro caracteres: un sobrecoste del 33 %, rematado con relleno = siempre que la entrada no sea múltiplo de tres bytes.
Esta página convierte esa aritmética en decisiones: una tabla comparativa, las cuentas de tamaño con un ejemplo resuelto, dónde se ha vuelto convención cada codificación y las trampas —el relleno, las variantes de alfabeto, las mayúsculas— que los descodificadores estrictos rechazan. Los convertidores de abajo alternan entre ambas localmente, sin subir nada.
Para ver la diferencia de tamaño con tus propios datos, el el convertidor de Base64 a Hex los recodifica localmente y muestra cómo se duplica el número de caracteres.
Adelgazar una cadena Hex para transportarla funciona igual —el el convertidor de Hex a Base64 empaqueta cada tres bytes en cuatro caracteres, todo dentro de tu navegador.
Los mismos bytes, dos alfabetos
Las dos codificaciones resuelven un mismo problema: los bytes son valores de 8 bits, pero los transportes de texto —URLs, cabeceras, XML, JSON, correo— van mucho mejor con ASCII imprimible. Hex recurre a los dieciséis caracteres 0-9 y a-f; base64 recurre a A-Z, a-z, 0-9, + y /. Ninguna cifra ni comprime nada: ambas están especificadas públicamente, no usan claves y son reversibles al instante, y una cadena base64 es protección para el transporte, no seguridad.
| Aspecto | Base64 | Hexadecimal |
|---|---|---|
| Alfabeto | 64 caracteres: A-Z, a-z, 0-9, +, / | 16 caracteres: 0-9, a-f |
| Bits por carácter | 6 | 4 |
| Sobrecoste de tamaño | +33% — 4 caracteres por 3 bytes | +100% — 2 caracteres por byte |
| Relleno | = rellena la salida hasta un múltiplo de 4 | Ninguno — un byte son siempre exactamente 2 caracteres |
| Variantes | La forma URL-safe cambia + y / por - y _ | Mayúsculas o minúsculas indistintas por convención |
| Territorio natural | MIME, JWT, data: URIs, cookies | Sumas de verificación, UUID, direcciones MAC, volcados hexadecimales |
| Estándar | RFC 4648, secciones 4 y 5 | RFC 4648, sección 8 |
La aritmética: un tercio frente al doble
Hex está alineada al nibble: un byte se parte en dos mitades de 4 bits, cada una renderizada como un carácter, así que las longitudes son previsibles —un valor de n bytes son siempre 2n caracteres, sin relleno ni casos borde—. Base64 reagrupa los bits en bloques de 6 bits, y 24 bits es el primer punto donde el mundo de los bytes y el de base64 coinciden, así que tres bytes se convierten en cuatro caracteres. Un byte sobrante se rellena con ==, dos con un solo =.
Un par resuelto hace concreta la proporción: los bytes de Hi son 48 69 en Hex —cuatro caracteres— y SGk= en base64 —también cuatro caracteres, relleno incluido—. A tamaños reales la diferencia manda: un megabyte de datos se convierte en unos 1.33 MB como base64 con relleno, pero exactamente 2 MB como Hex, y por eso los transportes a granel se estandarizaron en base64 mientras los valores cortos se quedaron en Hex.
Dónde vive cada codificación
Base64 domina lo voluminoso y el transporte. MIME la usa para los adjuntos de correo, la autenticación HTTP Basic codifica credenciales con ella, los JWT llevan su cabecera, su payload y su firma en base64url, las data: URIs incrustan imágenes y fuentes directamente en páginas y hojas de estilo, y las cookies llevan valores base64url porque + y / se portan mal en URLs y cabeceras. Donde los datos binarios deban sobrevivir a un conducto de solo texto con el coste mínimo, la respuesta es base64.
Hex domina lo pequeño y lo que revisa una persona. Los hashes criptográficos se imprimen en Hex por convención —la salida de SHA-256, los identificadores de commit de git—, porque los pares de ancho fijo, sin relleno y alineados por byte se comparan a simple vista o en voz alta sin esfuerzo. Las direcciones MAC, la forma textual de los UUID y los colores CSS como #RRGGBB son Hex, y los editores Hex, los volcados de memoria y los depuradores de protocolos la usan porque cada byte se lee como una unidad autosuficiente.
Trampas y cuándo elegir cuál
Las trampas de Base64 están todas en el alfabeto. Las variantes estándar y URL-safe se diferencian en dos caracteres y nunca deben mezclarse; el relleno lo exigen los descodificadores estrictos pero la convención JWT lo quita; la salida distingue mayúsculas de minúsculas; y MIME parte las líneas a 76 caracteres. Hex tiene exactamente una: las mayúsculas. Las minúsculas son la convención y las mayúsculas aparecen en algunas herramientas, pero mezclarlas es cosmético —todo descodificador estricto acepta cualquiera—.
Así las cosas: elige base64 cuando importa el volumen o un protocolo lo exige —adjuntos, tokens, binario incrustado—. Elige Hex para valores cortos que una persona va a comparar, copiar o depurar: hashes, identificadores, colores. La elección se invierte constantemente en sistemas reales —un JWT llega en base64url y su huella SHA-256 está en Hex—, y los convertidores de abajo gestionan el cruce en tu navegador.
Preguntas frecuentes
¿Cuál es más compacto, base64 o Hex?
Base64, siempre y con exactitud. Hex escribe 2 caracteres por byte; base64 escribe 4 caracteres por 3 bytes, así que con la misma entrada la salida base64 mide dos tercios de la longitud de la Hex. En concreto, un megabyte de datos se convierte en unos 1.33 MB como base64 con relleno frente a exactamente 2 MB como Hex.
¿Base64 es cifrado, o esconde algo?
No —ninguna de las dos codificaciones aporta confidencialidad. Ambas son transformaciones sin clave y especificadas públicamente que cualquiera puede revertir al instante: una cadena base64 de una contraseña se descodifica en esa contraseña en todas partes. Resuelven el transporte, no la confidencialidad —que los datos binarios sobrevivan a un canal de solo texto—. Para la confidencialidad necesitas cifrado, tras el cual el texto cifrado puede a su vez codificarse en base64 para transportarlo.
¿Los convertidores de base64 y Hex suben mis datos?
No. Codificar, descodificar y convertir se ejecutan dentro de tu pestaña del navegador; no hay ningún endpoint de subida, y la Content-Security-Policy del sitio solo permite peticiones de red a sí misma. Mira el panel Network de DevTools mientras conviertes y no verás ninguna petición saliente —las cargas, incluidos los secretos pegados por error, nunca salen de la pestaña—.
¿Por qué los hashes y las sumas de verificación se muestran en Hex?
Una convención reforzada por la mecánica. La salida Hex es de ancho fijo, no necesita relleno y los dos caracteres de cada byte se alinean, así que las comparaciones y los diffs casan visualmente; un alfabeto puramente alfanumérico sobrevive al copiar y pegar, a los logs y a los CSV. Todas las herramientas, de openssl a git, imprimen los hashes en Hex, así que Hex es lo que las personas aprendieron a leer.
¿Qué es base64url y cuándo hace falta?
La variante URL-safe de la sección 5 de RFC 4648: el guion y el guion bajo sustituyen al más y a la barra, porque + se lee como un espacio en la codificación de formularios y / rompe los segmentos de ruta. Los JWT, las cookies y los parámetros de query la usan para que los tokens sobrevivan intactos a las URLs. Los descodificadores deberían aceptar ambos alfabetos; los estrictos rechazan uno mezclado.
¿Por qué base64 a veces acaba en = o ==?
Relleno. La salida de Base64 debe ser múltiplo de cuatro caracteres, y cuando la entrada no es múltiplo de tres bytes, uno o dos caracteres = rellenan el grupo final: un byte sobrante añade ==, dos añaden un solo =. Hex nunca necesita relleno, porque dos caracteres por byte siempre dividen exacto.
¿Dónde puedo leer las normas citadas aquí?
- RFC 4648 — Las codificaciones de datos Base16, Base32 y Base64
¿Qué herramientas relacionadas debería usar después?
- Base64 a hexadecimalConvertidor que funciona en tu navegadorAbrir
- Hexadecimal a Base64Convertidor que funciona en tu navegadorAbrir
- Codificar y decodificar Base64Decodifica y codifica Base64 estándar y URL-safe, con descarga binariaAbrir
- Cómo funciona Base64Guía en lenguaje sencilloAbrir
- UUID vs NanoIDComparativa directaAbrir
- Herramientas de codificaciónBase64, codificación de URL, hashes e inspección de tokens.Abrir