Decodificar y codificar Base64: a PDF, imagen o archivo
Pegue Base64 y recupere el archivo, sea un PDF, una imagen, texto o un JWT, o suelte un archivo para obtener su Base64. Todo ocurre en esta pestaña.
Tres bytes son 24 bits. Base64 corta esos mismos 24 bits en cuatro grupos de seis, y cada grupo nombra uno de 64 caracteres. Las líneas blancas marcan dónde terminan los bytes: no coinciden con los grupos, y en eso está todo el truco.
16 + 2 + 1 = 19 T
Índice 19 en el alfabeto estándar.
Cómo usar el decodificador y codificador Base64
Pegue cualquier cosa en el único campo (texto, Base64, una data: URI completa o un JWT), o pulse Elegir un archivo o suelte uno sobre la tarjeta. La herramienta averigua en qué dirección va, lo indica en la etiqueta y deja la otra lectura a un clic.
Al decodificar un archivo, obtiene el tipo leído de los propios bytes, el tamaño, el tamaño en píxeles de una imagen, una Vista previa de una imagen o un PDF, y una descarga con la extensión correcta. Al codificar uno, obtiene el Base64, una data: URI lista para usar y lo que la codificación cuesta en tamaño. Las opciones Alfabeto, Relleno y Saltos de línea bajo el resultado cambian la salida.

Un campo, en ambas direccionesPegue texto, Base64, una data: URI o un JWT. La etiqueta indica cómo se leyó; el menú lo cambia.Elegir un archivoO suelte uno en cualquier parte de la tarjeta: se convierte en Base64 y en una data: URI, sin salir de la pestaña.Qué son los bytesAl decodificar, el resultado empieza con el tipo, el tamaño y la firma del archivo, y luego una vista previa y una descarga.Opciones de salidaAlfabeto estándar o seguro para URL, con o sin relleno, y líneas cortadas para MIME o PEM.3 bytes → 4 caracteresSus propios bytes, vueltos a cortar en grupos de seis. Señale un carácter para ver cómo se suman sus bits.¿Qué es Base64 y por qué existe?
Base64 escribe cualquier byte con 64 caracteres que sobreviven en cualquier parte: A–Z, a–z, 0–9, + y /. Existe porque el correo electrónico, las URL, JSON y XML se crearon para texto, y un byte en bruto puede ser un código de control, una comilla o un byte nulo que los rompe.
Toma tres bytes a la vez, pone sus 24 bits en fila y corta la fila en cuatro grupos de seis. Seis bits dan 64 valores, así que cada grupo nombra exactamente un carácter. Tres bytes de entrada, cuatro caracteres de salida, siempre: por eso Base64 es aproximadamente un tercio más grande que lo que entró.
Tres bytes son 24 bits. Base64 los vuelve a cortar en cuatro grupos de seis, y cada grupo nombra uno de 64 caracteres imprimibles, así que tres bytes siempre cuestan cuatro caracteres. De ahí sale el aumento del 33 %.
Dos bytes son 16 bits. Base64 agrega 2 bits en cero para completar el tercer grupo, y un = ocupa el lugar del cuarto carácter.
Un byte son 8 bits. Base64 agrega 4 bits en cero para completar el segundo grupo, y dos = ocupan el lugar del tercer y el cuarto carácter. = no lleva ningún bit.
¿Cómo decodificar Base64 a PDF?
Pegue la cadena y la herramienta reconstruye el PDF: muestra la versión y el tamaño, abre el documento en el visor de PDF de su propio navegador y le ofrece una descarga. No tiene que decir que es un PDF ni quitar antes un prefijo data:.
Un PDF se reconoce por sus cinco primeros bytes, %PDF-, así que el archivo se identifica aunque su nombre, el tipo que declaró el remitente o el campo del que vino digan otra cosa. Si los bytes no son un PDF, la página dice qué son en lugar de fallar al abrir un documento que nunca existió.
El paso de Base64 a PDF ocurre en su navegador, donde se reconstruye el archivo. No se sube nada, lo cual importa cuando el PDF es un recibo de sueldo, un contrato o una factura.
"document": "JVBERi0xLjcKJeLjz9MKMS…"Un campo en una respuesta. Las comillas no forman parte del Base64.Content-Transfer-Encoding: base64MIME corta el cuerpo a 76 caracteres por línea. Péguelo con los saltos de línea: se omiten.data:application/pdf;base64,JVBERi0x…Péguela completa. El prefijo se lee, no se quita a mano.- 25%
- 50P
- 44D
- 46F
- 2D-
- 311
- 2E.
- 377
Los primeros 5 bytes, %PDF-, son toda la firma. Los bytes 6 a 8 son la versión: 1.7. No interviene ninguna extensión de archivo, así que un PDF al que alguien llamó .txt vuelve igualmente como PDF.
¿Cómo convertir una imagen a Base64, y cuándo conviene hacerlo?
Suelte la imagen y obtendrá su Base64 y una data: URI lista para pegar en HTML o CSS. Si conviene hacerlo es la pregunta difícil: Base64 siempre cuesta aproximadamente un tercio más, y una imagen incrustada no se puede guardar en caché por separado.
En la dirección contraria, de Base64 a imagen, obtiene el formato, el tamaño y el tamaño real en píxeles leído del encabezado del propio archivo, no de la imagen en pantalla, además de una descarga con la extensión correcta.
- El archivo en disco12,9 kB 100 %
- Como Base6417,3 kB +33,4 %
- Cortado a 76 caracteres para MIME17,5 kB +35,1 %
- El archivo, comprimido con gzip11,7 kB -9,5 %
- El Base64, comprimido con gzip12,5 kB -3,2 %
- se descarga una vez
- lo guardan en caché el navegador y la CDN
- se carga junto a la página, no dentro de ella
- un tercio más grande antes de comprimir
- en caché solo como parte del archivo que la contiene
- se analiza como parte de la hoja de estilos o del HTML
La compresión recupera la mayor parte: comprimido con gzip, el Base64 es solo un 7 % más grande que el archivo comprimido. Lo que no puede devolver es la entrada de caché propia de la imagen: incrustada en una página HTML, se vuelve a descargar con cada página que la lleva.
La regla práctica: incruste unos pocos cientos de bytes (un icono, un espaciador, un logo en un correo) y enlace todo lo que sea más grande. Esta imagen PNG de 12,9 kB ya pasa del límite.
Base64 frente a Base64 seguro para URL: ¿cuál es la diferencia?
El Base64 seguro para URL (RFC 4648 §5) es la misma codificación con dos caracteres cambiados: + pasa a ser - y / pasa a ser _. El relleno también se suele omitir.
Úselo siempre que el resultado vaya en una URL, un nombre de archivo o una cookie. Los JSON Web Tokens lo usan de principio a fin, por eso las partes de un token nunca terminan en =. Esta herramienta lee ambos alfabetos y le avisa cuando una cadena lleva los dos.
+/8=-_8=-_8+→-Índice 62. En una cadena de consulta, un decodificador de formularios lee+como un espacio, y los datos llegan alterados./→_Índice 63. En una ruta,/empieza un segmento nuevo, y el valor se parte en dos.=eliminadoEn una URL,=suele codificarse por porcentaje como%3D(RFC 4648 §5). Un JWT lo elimina por completo (RFC 7515 §2): la longitud por sí sola dice dónde terminan los bytes.
Los primeros 62 caracteres de los dos alfabetos son idénticos: por eso una herramienta que lee ambos alfabetos puede decodificar cualquiera de los dos, y por eso esta página le avisa cuando una cadena lleva ambos.
¿Base64 es cifrado? No.
Base64 no oculta nada. No hay clave ni secreto, y revertirlo no cuesta ningún esfuerzo: para “descifrar” Base64 basta un decodificador como este, que lo hace mientras usted escribe.
Donde más importa es en la autenticación HTTP Basic: el encabezado lleva el nombre de usuario y la contraseña como una sola cadena Base64, legible para cualquiera que la vea, y por eso el RFC 7617 solo considera segura esta autenticación sobre una conexión cifrada como TLS. Si algo debe seguir siendo ilegible, necesita cifrado. Base64 solo hace pasar bytes sin daño por un canal pensado para texto.
Un encabezado Authorization, tal como lo construye el RFC 7617 §2
Authorization: Basic dXNlcjpwYXNzd29yZA==user:passwordEl RFC 7617 construye el encabezado paso a paso, y el último paso es toda su “protección”: el cliente “obtiene las basic-credentials codificando esta secuencia de octetos con Base64”. Su §1 dice lo que eso significa: a menos que TLS o un sistema similar proteja la conexión, “el identificador de usuario y la contraseña se transmiten por la red como texto en claro”. Base64 no tiene clave, así que no hay nada que romper: quien tiene la cadena tiene la contraseña.
¿Por qué mi texto decodificado sale con caracteres raros (mojibake)?
Porque Base64 lleva bytes, y los bytes solo se vuelven letras cuando algo elige una codificación de caracteres. Lea texto UTF-8 como si fuera ISO-8859-1 y é se convierte en é; lea ISO-8859-1 como UTF-8 y se convierte en un carácter de reemplazo.
Una data: URI puede declarar su charset, y esta página lee el texto en ese charset en lugar de forzarlo todo a UTF-8. Si su navegador no tiene un decodificador para el declarado, la página lo dice en lugar de mostrarle en silencio las letras equivocadas.
En UTF-8, é ocupa 2 bytes; en ISO-8859-1, 1 byte. Base64 lleva bytes, no letras, así que la cadena por sí sola no puede decirle a un decodificador cuál se quiso usar.
Base64 en Python, JavaScript, Java, C#, Go, PowerShell y el shell
Todos los lenguajes traen Base64 integrado. Las trampas son las mismas en todas partes: codifique bytes, no una cadena, y diga en qué codificación de caracteres está el texto.
El btoa() de JavaScript es el punto más delicado: solo acepta caracteres hasta U+00FF, así que todo lo que vaya más allá de Latin-1 tiene que convertirse primero en bytes UTF-8 con TextEncoder. Cada ejemplo de abajo codifica y decodifica “Man” y se ejecutó para comprobar su salida.
import base64 b64 = base64.b64encode("Man".encode("utf-8")).decode("ascii") print(b64) # TWFu print(base64.b64decode(b64).decode("utf-8")) # Man
Ejecutado con Python 3.14.4 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
const bytes = new TextEncoder().encode("Man"); const b64 = btoa(String.fromCharCode(...bytes)); console.log(b64); // TWFu const back = Uint8Array.from(atob(b64), (c) => c.charCodeAt(0)); console.log(new TextDecoder().decode(back)); // Man
Ejecutado con Node.js 22.23.2 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
import java.util.Base64;
import static java.nio.charset.StandardCharsets.UTF_8;
public class Main {
public static void main(String[] args) {
String b64 = Base64.getEncoder().encodeToString("Man".getBytes(UTF_8));
System.out.println(b64); // TWFu
byte[] back = Base64.getDecoder().decode(b64);
System.out.println(new String(back, UTF_8)); // Man
}
}Ejecutado con OpenJDK 25.0.2 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
using System.Text; var b64 = Convert.ToBase64String(Encoding.UTF8.GetBytes("Man")); Console.WriteLine(b64); // TWFu var back = Convert.FromBase64String(b64); Console.WriteLine(Encoding.UTF8.GetString(back)); // Man
Ejecutado con .NET 10.0.103 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
package main import ( "encoding/base64" "fmt" ) func main() { b64 := base64.StdEncoding.EncodeToString([]byte("Man")) fmt.Println(b64) // TWFu back, _ := base64.StdEncoding.DecodeString(b64) fmt.Println(string(back)) // Man }
Ejecutado con Go 1.25.5 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Man')) $b64 # TWFu [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64)) # Man
Ejecutado con PowerShell 7.5.5 el 26 de octubre de 2026: imprime lo que muestran los comentarios.
printf 'Man' | base64 # TWFu printf 'TWFu' | base64 -d # Man echo 'Man' | base64 # TWFuCg== (echo adds a newline)
Ejecutado con el comando base64 de macOS 26.6 (bash) el 26 de octubre de 2026: imprime lo que muestran los comentarios.
base64 -d del shell es -D en versiones antiguas de macOS. Fuente: gnu.org, developer.mozilla.orgEl alfabeto Base64, del 0 al 63
Cada grupo de seis bits es un número del 0 al 63, y esta es la tabla en la que se busca. Base64 distingue mayúsculas de minúsculas: A es 0 y a es 26, así que cambiar una letra de mayúscula a minúscula, o al revés, rompe la cadena.
Vale la pena reconocerlo a simple vista: una serie de A es una serie de bytes en cero, y una cadena Base64 que empieza por JVBER es un PDF, por iVBOR un PNG y por /9j/ un JPEG.
- A0
- B1
- C2
- D3
- E4
- F5
- G6
- H7
- I8
- J9
- K10
- L11
- M12
- N13
- O14
- P15
- Q16
- R17
- S18
- T19
- U20
- V21
- W22
- X23
- Y24
- Z25
- a26
- b27
- c28
- d29
- e30
- f31
- g32
- h33
- i34
- j35
- k36
- l37
- m38
- n39
- o40
- p41
- q42
- r43
- s44
- t45
- u46
- v47
- w48
- x49
- y50
- z51
- 052
- 153
- 254
- 355
- 456
- 557
- 658
- 759
- 860
- 961
- +Seguro para URL: -62
- /Seguro para URL: _63
0–25 son A–Z, 26–51 son a–z, 52–61 son 0–9. Solo los dos últimos caracteres de la tabla cambian entre los dos alfabetos, marcados arriba. = ni siquiera está en la tabla: no es un valor, es la marca que indica que el último grupo de tres bytes quedó corto.
Base64: preguntas y respuestas
¿Qué es decodificar Base64?
¿Cómo decodifico un archivo Base64?
¿Para qué se usa Base64?
data: URI en HTML y CSS, campos binarios en JSON y XML, JSON Web Tokens, autenticación HTTP Basic, y certificados y claves en archivos PEM. En cada caso, los datos tienen que pasar por un canal que podría alterar o descartar bytes en bruto, así que viajan como simples letras y dígitos.¿Base64 es cifrado?
¿Es seguro decodificar Base64 en línea?
¿Por qué Base64 es un 33 % más grande que el original?
=, y cortar las líneas a 76 caracteres para el correo agrega un salto de línea en cada línea, así que una cadena larga suele ser aproximadamente un 35 % más grande que los bytes que lleva. Una compresión como gzip recupera la mayor parte.¿Qué es Base64 seguro para URL?
+ se reemplaza por - y / por _, como lo define el RFC 4648 §5, para que el resultado pueda ir en una URL, un nombre de archivo o una cookie sin escaparlo. El relleno también se suele quitar, como en los JSON Web Tokens. Esta herramienta lee ambos alfabetos, incluso mezclados en una misma cadena, y puede escribir cualquiera de los dos.¿Por qué falla la decodificación de mi Base64?
¿Puedo convertir Base64 a imagen?
data:image/png;base64,, y la imagen aparece con su formato, su tamaño y su tamaño real en píxeles, leído del encabezado del propio archivo. Luego descárguela con la extensión correcta. PNG, JPEG, GIF, WebP, BMP, ICO y AVIF tienen vista previa; un SVG se muestra primero como texto, porque un SVG puede llevar script.¿Qué significa el = al final de Base64?
=, y un byte sobrante, en dos caracteres y ==. El relleno no lleva ningún dato: solo le indica a un decodificador dónde terminan los bytes. Muchos decodificadores, este incluido, también leen Base64 al que se le quitó el relleno.¿Hay un límite de tamaño?
¿Puedo decodificar un JWT aquí?
iat y exp y la firma como bytes. Esta página solo decodifica las tres partes base64url: no verifica la firma y nunca dice que un token sea válido, así que no la use para decidir si puede confiar en uno.¿Le falta algo?Sugiera una función o una herramienta nueva
Herramientas relacionadas
Traductor Binario
Traduce texto a binario y binario a texto: detección automática, hex, decimal y octal
Generador de UUID
Genera UUID v4, v7, v1, v5 y v3 o GUID en lote, en cualquier formato, y decodifica la versión y la marca de tiempo de un UUID
Decodificador de CSR y Certificados
Decodifica un CSR o certificado SSL: sujeto, SAN, tamaño de clave, validez, emisor, huella digital, verificación de firma y coincidencia CSR-certificado
Texto Invisible
Copia y pega un carácter invisible o espacio en blanco, y encuentra o elimina caracteres ocultos en un texto
Conversor de Timestamp Unix
Convierte timestamps Unix a fechas y fechas a tiempo epoch en cualquier zona horaria, con conversión por lotes