Cómo convertir texto a Base64
- Escribe o pega la cadena en Entrada · texto. Todo lo que introduces se codifica tal cual, incluidos los espacios y los saltos de línea.
- El Base64 aparece en Salida · Base64. La cifra Entrada bajo los botones muestra en cuántos bytes se ha convertido tu texto.
- Deja Juego de caracteres en UTF-8 salvo que el sistema que vaya a decodificar el valor espere otra cosa.
- Marca URL-safe (- _) y Sin relleno (=) si la cadena va a una URL o a un token.
- Pulsa Copiar salida, o Descargar para guardarla como
base64.txt.
Para volver atrás, usa Base64 a texto o pulsa Intercambiar para decodificar el resultado aquí mismo.
Una cadena, varios Base64 posibles
Base64 codifica bytes, y una cadena solo se convierte en bytes a través de un juego de caracteres. Por eso las mismas cinco letras pueden dar cuatro respuestas distintas:
| Cadena | Juego de caracteres | Bytes | Base64 |
|---|---|---|---|
Grüße | UTF-8 | 7 | R3LDvMOfZQ== |
Grüße | Windows-1252 o ISO-8859-1 | 5 | R3L832U= |
Grüße | UTF-16LE | 10 | RwByAPwA3wBlAA== |
Grüße | UTF-16BE | 10 | AEcAcgD8AN8AZQ== |
Los caracteres invisibles también cuentan. Hello es SGVsbG8=, Hello con un espacio final es SGVsbG8g, y Hello seguido de un final de línea de Windows es SGVsbG8NCg==. Los finales de línea son una trampa clásica en los valores de varias líneas: line1 y line2 unidas por \n se codifican como bGluZTEKbGluZTI=, y unidas por \r\n como bGluZTENCmxpbmUy. Si dos sistemas no coinciden en un valor, compara primero el número de bytes.
Qué longitud tendrá la cadena Base64
Cada 3 bytes de entrada se convierten en 4 caracteres, y un último grupo de 1 o 2 bytes se rellena hasta 4 con =.
| Bytes de entrada | Caracteres Base64 | Ejemplo (x repetida) |
|---|---|---|
| 1 | 4 | eA== |
| 2 | 4 | eHg= |
| 3 | 4 | eHh4 |
| 4 | 8 | eHh4eA== |
| 10 | 16 | eHh4eHh4eHh4eA== |
Así que una cadena crece alrededor de un tercio, y más si hay caracteres no ASCII que ocupan varios bytes cada uno en UTF-8. La página sobre la sobrecarga de tamaño de Base64 tiene las cifras exactas para la salida con saltos de línea.
Dónde acaban las cadenas codificadas
Las cadenas se convierten a Base64 sobre todo para pasarlas por sitios que no se llevan bien con los caracteres especiales:
- Variables de entorno y secretos de CI, donde un valor con comillas,
$o saltos de línea se estropearía.postgres://app:s3cret@db:5432/appse convierte encG9zdGdyZXM6Ly9hcHA6czNjcmV0QGRiOjU0MzIvYXBw, una sola línea sin nada que escapar. - Secrets de Kubernetes, cuyos valores
data:deben ir en Base64. El decodificador de Secrets de Kubernetes los vuelve a leer. - Encabezados HTTP, por ejemplo
Authorization: Basicconuser:passwordcodificado. El generador de encabezados Basic Auth monta el encabezado completo. - Campos JSON y XML que deben llevar texto arbitrario sin que las reglas de escape molesten (JSON a Base64).
Nada de esto oculta el valor. Cualquiera que tenga la cadena puede decodificarla, así que trata un secreto codificado como un secreto en claro; consulta codificación frente a cifrado.
Cadena a Base64 en código
import base64
base64.b64encode("Grüße".encode("utf-8")).decode("ascii") # 'R3LDvMOfZQ=='
base64.b64encode("Grüße".encode("cp1252")).decode("ascii") # 'R3L832U='
// Node.js
Buffer.from("Grüße", "utf8").toString("base64"); // "R3LDvMOfZQ=="
Buffer.from("Grüße", "utf16le").toString("base64"); // "RwByAPwA3wBlAA=="
Los dos lenguajes necesitan el paso de cadena a bytes de forma explícita, y ahí es donde se elige el juego de caracteres. Hay más en las páginas de Python y Node.js.
Preguntas frecuentes
¿Cómo convierto una cadena a Base64?
Convierte la cadena en bytes con un juego de caracteres (UTF-8 casi en todas partes) y después codifica esos bytes en Base64. La herramienta de arriba hace las dos cosas; en Python es base64.b64encode(s.encode("utf-8")).decode().
¿El mismo texto da siempre el mismo Base64?
Solo si los bytes son los mismos. Grüße es R3LDvMOfZQ== en UTF-8 pero R3L832U= en Windows-1252, y un espacio o un salto de línea de más también cambian el resultado.
¿Qué longitud tendrá la cadena Base64?
4 × ⌈n / 3⌉ caracteres para n bytes de entrada, antes de cualquier salto de línea. Una cadena de 10 bytes da 16 caracteres; la calculadora de tamaño lo calcula para cualquier longitud.
¿Puedo poner una cadena Base64 en un archivo de configuración o una variable de entorno?
Sí, es uno de sus usos principales: convierte cualquier valor, incluidos saltos de línea y comillas, en una sola línea de caracteres seguros. Para mantenerla en una línea, deja Ajuste de línea en Ninguno.