Ir al codificador Base64

RFC 4648 · Codificador y decodificador

Codifica en Base64 lo que quieras, sin subir nada.

Un codificador y decodificador Base64 online y gratuito para texto, archivos e imágenes, que se ejecuta con JavaScript en tu propia pestaña del navegador. No se sube nada, así que sigue funcionando sin conexión y no tiene límite de tamaño.

  • Codifica mientras escribes
  • Texto, archivos e imágenes
  • Modos URL-safe y MIME
  • Sin anuncios ni registro
0 caracteres · 0 B
0 caracteres · 0 B
Opciones
Variantes de codificación

Ctrl+Enter codificar Ctrl+Shift+C copiar resultado Ctrl+Shift+X invertir dirección

Codificar Base64 online: gratis, instantáneo y privado

Esta herramienta para codificar Base64 online trabaja en tu navegador, no en un servidor. Escribe en el cuadro de arriba y el Base64 aparece a medida que tecleas: sin botón, sin recargar la página y sin subir nada. Cambia a Decodificar para hacer la operación inversa, o abre la pestaña Archivo e imagen para codificar una imagen en Base64 y obtener un data URI que puedes pegar directamente en HTML o CSS.

Incluye todo lo que define el estándar: el alfabeto estándar, Base64 URL-safe (RFC 4648 §5), líneas MIME de 76 caracteres, separadores LF y CRLF, codificación línea a línea y seis juegos de caracteres, de UTF-8 a ISO-8859-1 y UTF-16. Si prefieres codificar en Base64 desde tu código, los ejemplos de más abajo cubren Python, JavaScript, Linux y macOS, PowerShell, PHP, Java, Go, C# y Ruby.

Última actualización:

Por qué esta

La diferencia está en dónde se codifica.

La mayoría de las herramientas Base64 envían tu archivo a un servidor, lo codifican allí y te devuelven un enlace de descarga. Es decir, tus datos salen de tu equipo para una transformación que tu navegador hace en microsegundos. Esta herramienta nunca hace esa petición.

Comparación entre este codificador Base64 y las herramientas Base64 online típicas basadas en servidor
Característica freebase64encode.com Codificador online típico
Dónde se procesan tus datos Siempre en tu pestaña del navegador Se suben a un servidor
Límite de tamaño de archivo Solo la memoria de tu dispositivo Normalmente 100 MB como máximo
Archivos guardados en un servidor Nunca: no hay ningún endpoint Se guardan temporalmente y luego se borran
Sigue funcionando sin conexión Sí, una vez cargada la página No
Codificación en vivo mientras escribes Activada por defecto Opcional o con un botón
Codificar y decodificar Una página, un clic para cambiar Dos páginas distintas
Imagen → data URI + HTML/CSS/Markdown Integrado, con vista previa No disponible
Ejemplos de código en 9 lenguajes En la misma página No disponible
Aumento de tamaño visible Bytes y % en tiempo real No se muestra
Anuncios y avisos de cookies Ninguno, y sin cookies de seguimiento Habitualmente sí

Hazlo en código

Codificar Base64 en Python, JavaScript, Bash, PowerShell y cinco más.

Código listo para copiar y pegar para codificar y decodificar en los lenguajes que más se buscan, con el error típico que a todos nos cuesta una tarde señalado en cada uno.

Codificar Base64 en Python

Python incluye Base64 en la biblioteca estándar. Lo que más confunde: b64encode recibe bytes, no str, así que primero hay que codificar el texto a UTF-8.

import base64

# Encode a string ─ note the .encode("utf-8"): b64encode takes bytes, not str
text = "Man is distinguished"
encoded = base64.b64encode(text.encode("utf-8")).decode("ascii")
print(encoded)                       # TWFuIGlzIGRpc3Rpbmd1aXNoZWQ=

# Decode it back
decoded = base64.b64decode(encoded).decode("utf-8")

# URL-safe, unpadded (RFC 4648 §5) ─ the JWT flavour
base64.urlsafe_b64encode(b"data").rstrip(b"=")

# Encode a file, wrapped at 76 characters for MIME
with open("photo.png", "rb") as f:
    mime = base64.encodebytes(f.read()).decode("ascii")

# Build a data URI for an image
uri = "data:image/png;base64," + base64.b64encode(open("photo.png", "rb").read()).decode()

El mecanismo

Cómo funciona realmente la codificación Base64.

Base64 reescribe bytes arbitrarios con 64 caracteres que cualquier sistema entiende. Toma tres bytes (24 bits) y los vuelve a cortar en cuatro grupos de 6 bits. Cada grupo es un índice del alfabeto A–Z a–z 0–9 + /. Como 3 bytes siempre se convierten en 4 caracteres, la salida es exactamente un tercio más grande.

Ejemplo paso a paso: Man → TWFu

Texto Man
ASCII 7797110
Bits 01001101 01100001 01101110
Grupos de 6 bits 010011 010110 000101 101110
Índice 19 · 22 · 5 · 46
Base64 TWFu

Cuando la longitud de la entrada no es múltiplo de tres, el último grupo se rellena con = para que la salida siga siendo múltiplo de cuatro. Un byte sobrante da ==; dos bytes sobrantes dan =.

Ejemplos de codificación Base64

Así quedan algunas cadenas habituales codificadas en Base64 como UTF-8. Pega cualquiera en la herramienta de arriba para comprobarlo.

Cadenas de ejemplo y su codificación Base64
Entrada Base64 Nota
Hello, World! SGVsbG8sIFdvcmxkIQ== Dos = porque 13 bytes dejan uno suelto
Hello World SGVsbG8gV29ybGQ= 11 bytes, así que un =
hello aGVsbG8=
base64 YmFzZTY0 6 bytes son divisibles entre 3: sin relleno
user:password dXNlcjpwYXNzd29yZA== Valor de una cabecera HTTP Basic auth
héllo 🎉 aMOpbGxvIPCfjok= UTF-8: la é ocupa 2 bytes y el emoji 4
{"alg":"HS256","typ":"JWT"} eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 Cabecera de un JWT, URL-safe y sin relleno

El alfabeto Base64 (tabla de índices)

Cada valor de 6 bits, de 0 a 63, corresponde a un carácter. El alfabeto URL-safe es idéntico salvo que el 62 es - y el 63 es _. El = es relleno y no forma parte del alfabeto.

Tabla de índices Base64: valores de 0 a 63 y sus caracteres
Valor Carácter Valor Carácter Valor Carácter Valor Carácter
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Comparativa de variantes de Base64

«Base64» es una familia. Todas comparten las mismas 62 letras y cifras y se diferencian en los dos últimos caracteres, el relleno y los saltos de línea. La herramienta de arriba genera las tres primeras.

Comparativa de variantes de Base64: estándar, URL-safe, MIME y PEM
VarianteEspecificaciónCaracteres 62 / 63RellenoSaltos de líneaUso
Estándar RFC 4648 §4 + / Obligatorio Ninguno Uso general, JSON, data URI
URL-safe (base64url) RFC 4648 §5 - _ Normalmente se omite Ninguno JWT, URL, nombres de archivo
MIME RFC 2045 + / Obligatorio CRLF cada 76 Adjuntos de correo
PEM RFC 7468 + / Obligatorio Cada 64, con BEGIN/END Certificados TLS, claves

Dónde se usa Base64

Adjuntos de correo

SMTP se diseñó para texto de 7 bits. MIME (RFC 2045) codifica los adjuntos en Base64 y corta la salida cada 76 caracteres para que los servidores de correo la transmitan sin alterarla.

Data URI

data:image/png;base64,… incrusta una imagen pequeña, una fuente o un SVG directamente en HTML o CSS y ahorra una petición. Compensa por debajo de unos pocos kilobytes; por encima, el 33 % extra y la pérdida de caché cuestan más que la petición.

Datos en JSON y XML

Ninguno de los dos formatos admite bytes arbitrarios. Base64 convierte un archivo en una cadena de texto que cualquier parser JSON acepta, y así viajan los datos binarios por las API REST.

JWT y URL

Los JSON Web Tokens usan base64url (la variante RFC 4648 §5 con - y _ en lugar de + y /, sin relleno) para que el token quepa sin problemas en una URL, una cookie o una cabecera.

HTTP Basic auth

Authorization: Basic es literalmente base64(usuario:contraseña). Es codificación, no cifrado, y precisamente por eso Basic auth solo es aceptable sobre HTTPS.

Configuración y secretos

Los Secrets de Kubernetes, los certificados TLS en formato PEM y las claves SSH guardan los datos binarios en Base64 para que el archivo siga siendo texto legible, comparable y fácil de copiar.

Seis errores que cuestan una tarde

Base64 no es cifrado

Cualquiera puede decodificarlo con un solo comando. Nunca lo uses para ocultar una contraseña, una clave de API o datos personales: para eso existe el cifrado de verdad.

Juegos de caracteres distintos corrompen el texto

Base64 codifica bytes, y el texto solo se convierte en bytes al elegir un juego de caracteres. Si codificas en UTF-8 y decodificas en Latin-1, obtienes caracteres extraños. Usa UTF-8 en ambos lados.

echo añade un salto de línea

echo "hi" | base64 codifica tres bytes, no dos, porque echo añade \n. Usa printf %s para codificar exactamente lo que escribiste.

Los saltos de línea cambian la cadena

La salida MIME lleva un CRLF cada 76 caracteres. La mayoría de los decodificadores ignoran los espacios, pero una comparación estricta o un hash de dos cadenas «idénticas» fallará si una está cortada.

+ y / se rompen en las URL

El + se convierte en espacio al decodificar un formulario y la / divide rutas. Usa la variante URL-safe siempre que el valor vaya en una URL o en un nombre de archivo.

Aumenta los datos un tercio

Cada 3 bytes se convierten en 4 caracteres. Meter una subida grande en Base64 dentro de un JSON aumenta el ancho de banda y la memoria en ambos extremos: usa multipart/form-data.

Preguntas

Codificación Base64: preguntas frecuentes.

¿Qué es la codificación Base64?

Base64 es un esquema de codificación de binario a texto que representa datos binarios con 64 caracteres ASCII imprimibles (A–Z, a–z, 0–9, + y /). Existe para que los datos binarios viajen sin problemas por canales pensados para texto: correos electrónicos, documentos JSON y XML, cabeceras HTTP, URL y atributos HTML. Base64 es una codificación, no un cifrado: cualquiera puede decodificarlo, así que no aporta confidencialidad.

¿Cómo codifico texto en Base64 online?

Pega o escribe el texto en el cuadro de entrada de esta página. El resultado aparece al momento en el cuadro de salida: no hay botón ni recarga, porque la codificación se hace en tu navegador mientras escribes. Pulsa Copiar, o Ctrl+Shift+C, para llevar la cadena Base64 al portapapeles.

¿Cómo codifico una cadena en Base64?

Primero la cadena se convierte en bytes con un juego de caracteres (casi siempre UTF-8) y después esos bytes se codifican en Base64. En esta página ocurre automáticamente: escribe la cadena y copia el resultado. Por ejemplo, "Hello, World!" en Base64 es SGVsbG8sIFdvcmxkIQ==. En código es una sola línea en cualquier lenguaje importante; consulta los ejemplos de Python, JavaScript, Bash, PowerShell, PHP, Java, Go, C# y Ruby.

¿Es seguro y privado este codificador Base64?

Sí. Cada byte se codifica localmente con JavaScript en tu propia pestaña del navegador. Tus textos, archivos e imágenes nunca se envían a un servidor, nunca se guardan en una base de datos y nunca se registran: el sitio es una página estática sin ningún punto de subida. Puedes comprobarlo abriendo la pestaña Red de las DevTools mientras codificas, o desconectándote de internet y viendo que la herramienta sigue funcionando.

¿Cómo codifico en Base64 con Python?

Usa el módulo integrado base64. Codifica con base64.b64encode(data.encode("utf-8")).decode("ascii") y decodifica con base64.b64decode(encoded).decode("utf-8"). Ten en cuenta que b64encode recibe bytes, no str; por eso la entrada se codifica antes en UTF-8. Para salida URL-safe usa base64.urlsafe_b64encode, y para salida MIME con líneas de 76 caracteres, base64.encodebytes.

¿Cómo codifico en Base64 con PowerShell o Windows?

En PowerShell ejecuta [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello")) para codificar una cadena, o [Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\ruta\archivo.png")) para codificar un archivo. Desde cmd.exe, certutil -encode in.png out.b64 funciona en cualquier Windows, aunque añade líneas de cabecera BEGIN y END. Usa [Text.Encoding]::Unicode (UTF-16 LE) solo con powershell -EncodedCommand.

¿Cómo codifico en Base64 con JavaScript?

Para texto ASCII, btoa(str) codifica y atob(str) decodifica. btoa falla con caracteres por encima de U+00FF, así que para texto Unicode conviértelo antes a bytes: btoa(Array.from(new TextEncoder().encode(str), (b) => String.fromCharCode(b)).join("")). Evita la forma con spread String.fromCharCode(...bytes), que desborda la pila con entradas grandes. En Node.js usa Buffer.from(str, "utf8").toString("base64"). Los entornos modernos también ofrecen Uint8Array.prototype.toBase64().

¿Cómo codifico un archivo en Base64 en Linux?

Usa el comando base64 de coreutils: base64 archivo.txt lo codifica y base64 -d archivo.b64 lo decodifica. Añade -w 0 para desactivar los saltos de línea cuando necesites una sola línea, o -w 76 para una salida compatible con MIME. Para codificar una cadena directamente, pásala por una tubería: printf %s "hello" | base64. Usa printf en lugar de echo para no incluir un salto de línea final en los bytes codificados.

¿Cómo codifico en Base64 en un Mac?

macOS incluye el comando base64 de BSD en la Terminal. Codifica un archivo con base64 -i archivo.png -o archivo.b64, una cadena con printf %s "hello" | base64, y decodifica con base64 -D -i archivo.b64 -o archivo.png. A diferencia del base64 de GNU en Linux, no corta líneas por defecto y no tiene la opción -w. Redirige a pbcopy para llevar el resultado directamente al portapapeles.

¿Cómo codifico una imagen en Base64?

Abre la pestaña Archivo e imagen de esta página y suelta tu imagen. Obtienes el Base64 en bruto, un data URI listo para pegar (data:image/png;base64,...) y fragmentos de HTML, CSS y Markdown generados. Base64 hace la imagen un 33 % más grande, así que conviene incrustar solo imágenes pequeñas (de menos de unos 5 KB); las más grandes es mejor servirlas como archivos normales que el navegador pueda guardar en caché.

¿Qué es Base64 URL-safe?

El Base64 estándar usa + y /, que tienen un significado reservado en URL y nombres de archivo. Base64 URL-safe (RFC 4648 §5, también llamado base64url) sustituye + por - y / por _, y normalmente elimina el relleno =. Es lo que usan los JSON Web Tokens. Activa la opción URL-safe de esta página para generarlo.

¿Por qué mi cadena Base64 termina con signos =?

Base64 procesa la entrada en grupos de 3 bytes que se convierten en 4 caracteres. Cuando la longitud de la entrada no es múltiplo de 3, el último grupo se rellena con = para que la salida siga siendo múltiplo de 4. Un byte sobrante produce dos =, y dos bytes sobrantes producen uno. El relleno no contiene datos y es opcional en algunas variantes, como base64url.

¿Cuánto aumenta Base64 el tamaño de los datos?

Alrededor de un 33 %: cada 3 bytes de entrada se convierten en 4 caracteres de salida, una proporción de 4/3. La longitud exacta con relleno es 4 × ⌈n / 3⌉ caracteres para n bytes de entrada, así que 10 bytes ocupan 16 caracteres y 1 MB ocupa unos 1,33 MB. En modo MIME, los saltos de línea añaden otro 2,6 % aproximadamente (un CRLF de dos bytes cada 76 caracteres). Esta herramienta muestra el tamaño exacto de entrada y salida y el porcentaje de aumento debajo del resultado mientras escribes.

¿Hay un límite de tamaño de archivo?

No hay límite en el servidor porque no interviene ningún servidor. El límite práctico es la memoria de tu dispositivo y de la pestaña del navegador; en un ordenador suelen funcionar archivos de hasta unos cientos de megabytes, y esta herramienta procesa los archivos grandes por bloques para que el navegador siga respondiendo. Las herramientas que suben los archivos a un servidor suelen limitarte a 100 MB.

¿La codificación Base64 funciona con Unicode y emojis?

Sí. Primero el texto se convierte en bytes con el juego de caracteres que elijas (UTF-8 por defecto, que cubre todos los puntos de código Unicode, emojis incluidos) y después esos bytes se codifican en Base64. Usar juegos de caracteres distintos al codificar y al decodificar es la causa habitual de texto corrupto, así que mantén ambos en UTF-8 salvo que tengas un motivo concreto.