¿Qué significan « encoder » y « decoder » en Base64?
Codificar en Base64 (« encode base64 ») transforma bytes — normalmente los bytes de un texto codificado en UTF-8 — en una cadena de 64 caracteres permitidos: las 26 letras mayúsculas, las 26 letras minúsculas, los 10 dígitos y luego + y /. Decodificar Base64 (« decode base64 ») realiza exactamente la operación inversa: la cadena se lee en grupos de 4 caracteres, cada carácter codifica 6 bits y 24 bits dan 3 bytes. Ese vaivén es lo que busca la mayoría cuando escribe « encode and decode base64 ».
Base64 no es ni compresión ni cifrado: el texto crece aproximadamente un tercio y cualquiera puede leerlo en un segundo. Su interés está en transportar bytes por canales que solo aceptan caracteres ASCII seguros — URL, cabeceras HTTP, archivos de configuración, JSON, SVG en línea, correos y bases de datos de texto.
Cómo codificar texto en Base64
Paso 1: el texto se codifica primero en bytes según el juego de caracteres elegido — UTF-8 por defecto, aunque Latin-1, Windows-1252, ASCII o UTF-16 siguen siendo útiles para sistemas heredados. Paso 2: los bytes se leen de tres en tres, es decir, 24 bits. Paso 3: esos 24 bits se dividen en cuatro bloques de 6 bits, y cada bloque se sustituye por el carácter de su posición en el alfabeto. Paso 4: si el último grupo está incompleto, se completa con bits a cero y la cadena se cierra con uno o dos = (el padding).
Ejemplo paso a paso: « AB » vale 65 y luego 66 en decimal, es decir 01000001 01000010. En tres bytes con relleno: 01000001 01000010 00000000. Los cuatro grupos de 6 bits son 010000 010100 001000 000000 → posiciones 16, 20, 8, 0 → QUI=. Basta con escribir « AB » en el codificador: el resultado aparece antes incluso de soltar la tecla.
Cómo decodificar Base64 a texto
La decodificación lee la cadena en grupos de 4 caracteres tras retirar los saltos de línea y los espacios opcionales. Cada carácter se sustituye por su valor de 6 bits, los cuatro valores se concatenan en 24 bits y luego los 24 bits se dividen en 3 bytes. Los = finales indican cuántos bytes realmente útiles contiene el último grupo: un = significa 2 bytes, dos = significan 1 byte.
Si la cadena contiene - o _, se trata de la variante URL-safe: la herramienta los convierte automáticamente en + y / antes de decodificar. Si falta el padding, el botón « Corregir el padding » lo restaura. Si hay un carácter fuera del alfabeto, una pestaña mal colocada o una longitud que no es múltiplo de 4, el error se muestra con el motivo exacto en lugar de un simple « no válido ».
Variante URL-safe (RFC 4648 §5)
El Base64 estándar usa + y /, dos caracteres que plantean problemas en una URL: el + se interpreta como un espacio por la mayoría de los servidores, y el / puede confundirse con un separador de ruta. La variante URL-safe los sustituye por - y _, que no requieren ningún escape. Es obligatoria en los JWT (los tres segmentos de un token se codifican sin padding), las cookies, los identificadores y los parámetros de URL.
Padding « = »: para qué sirve
El Base64 trabaja en grupos de 4 caracteres, pero el tamaño de un archivo casi nunca es múltiplo de 3 bytes. El padding restablece la longitud esperada: si queda 1 byte, se añade ==, si quedan 2 bytes, se añade =. Algunos sistemas lo eliminan (ciertas API, Base64URL); otros lo exigen (PHP, decodificadores antiguos). La opción « Sin padding » del codificador y el botón « Corregir el padding » del decodificador cubren ambos casos.
Codificación de caracteres: UTF-8, Latin-1, UTF-16
Base64 no conoce los caracteres, solo bytes. La pregunta clave es: ¿con qué se codifica el texto antes del Base64? En UTF-8, « é » ocupa 2 bytes y « 日 » 3; en Latin-1, « é » cabe en 1 byte pero « 日 » resulta imposible. Una decodificación UTF-8 de una cadena codificada en Latin-1 produce caracteres aberrantes (« mojibake »). Si consultas una herramienta en línea y el resultado es incomprensible, casi siempre es la codificación inicial la que difiere — de ahí las seis opciones que aquí se ofrecen.
Archivo, data URI e imágenes en Base64
Una data URI tiene la forma data:<tipo MIME>;base64,<datos>. Permite incrustar directamente una imagen en CSS, HTML o JSON: background-image:url(data:image/png;base64,iVBOR…). Para decodificar, pega la cadena entera en la pestaña « Archivo ⇄ Base64 »: se extrae el tipo MIME, se propone el nombre y el archivo se regenera listo para descargar. Cuidado con el tamaño: Base64 añade cerca de un 33 % y una data URI nunca se cachea por separado.
Base64, URL-encoding y por qué no confundirlos
El percent-encoding (%20, %C3%A9) sustituye cada byte no permitido por un porcentaje: es de dos a tres veces más largo que Base64, pero conserva a la vista el texto original. Base64 produce una cadena compacta y regular, perfecta para blobs, pero ilegible. La pestaña « URL & data URI » ofrece las dos conversiones lado a lado para evitar el error clásico de codificar una URL en Base64 cuando había que escaparla — o al revés.
Base64 en los formatos de cada día
Base64 está en todas partes: los tres segmentos de un JWT, el atributo src de una imagen SVG en línea, el campo cert de un PDF, los attachments MIME de los correos (RFC 2045), las Authorization: Basic de las API (usuario:contraseña), los archivos .pem y las claves SSH, el contenido de .docx y .xlsx (ZIP), los avatares en el almacenamiento del cliente y los data- attributes de las pruebas automatizadas. Saber codificar y decodificar rápido evita abrir un terminal por una sola cadena.
Lo que Base64 no es
Base64 no cifra nada: una cadena codificada se descifra en una línea de código. Nunca lo uses como protección de contraseñas, claves API o datos personales. Tampoco es compresión: prevé siempre un 33 % de volumen extra. Por último, Base64 no es adecuado para binario ya comprimido y denso (PNG, ZIP) más allá de unos cuantos megabytes, donde el coste de memoria se vuelve penalizador.
Rendimiento y buenas prácticas
En el navegador, TextEncoder y TextDecoder tratan varios megabytes por segundo; el propio algoritmo Base64 es lineal, sin recursión ni asignación por carácter. Los archivos de más de 5 MB pueden ralentizar la interfaz: para lotes mayores, prefiere un procesamiento en Web Worker o en el servidor. Documenta siempre la codificación original junto a la cadena y comprueba el round-trip (codificar y luego decodificar) antes de guardar un resultado en base de datos.
Recomendado para
Desarrolladores back-end y front-end (tokens, data URI, cabeceras HTTP), integradores y redactores técnicos (SVG en línea, imágenes de fondo), administradores de sistemas y DevOps (certificados, claves, volcados), testers y pentesters (Authorization Basic, fuzzing de parámetros), estudiantes (entender los bytes, el ASCII y el UTF-8), y cualquiera que necesite un codificador y decodificador Base64 en línea rápido, completo y confidencial.