Como converter texto para Base64
- Digite ou cole a string em Entrada · texto. Tudo o que você inserir é codificado exatamente, incluindo espaços e quebras de linha.
- O Base64 aparece em Saída · Base64. O número Entrada abaixo dos botões mostra em quantos bytes o seu texto se transformou.
- Deixe o Charset em UTF-8, a menos que o sistema que vai decodificar o valor espere outra coisa.
- Marque URL-safe (- _) e Sem preenchimento (=) se a string for para uma URL ou um token.
- Clique em Copiar saída, ou em Baixar para salvar como
base64.txt.
Para voltar, use Base64 para texto, ou clique em Inverter para decodificar o resultado aqui mesmo.
Uma string, vários Base64 possíveis
O Base64 codifica bytes, e uma string só vira bytes por meio de um charset. É por isso que as mesmas cinco letras podem gerar quatro respostas diferentes:
| String | Charset | Bytes | Base64 |
|---|---|---|---|
Grüße | UTF-8 | 7 | R3LDvMOfZQ== |
Grüße | Windows-1252 ou ISO-8859-1 | 5 | R3L832U= |
Grüße | UTF-16LE | 10 | RwByAPwA3wBlAA== |
Grüße | UTF-16BE | 10 | AEcAcgD8AN8AZQ== |
Caracteres invisíveis também contam. Hello é SGVsbG8=, Hello com um espaço no final é SGVsbG8g, e Hello seguido de uma quebra de linha do Windows é SGVsbG8NCg==. Quebras de linha são uma armadilha clássica em valores com várias linhas: line1 e line2 unidos por \n viram bGluZTEKbGluZTI=, unidos por \r\n viram bGluZTENCmxpbmUy. Se dois sistemas discordam sobre um valor, compare primeiro a quantidade de bytes.
Qual será o comprimento da string Base64
Cada 3 bytes de entrada viram 4 caracteres, e um último grupo de 1 ou 2 bytes é completado até 4 com =.
| Bytes de entrada | Caracteres Base64 | Exemplo (x repetido) |
|---|---|---|
| 1 | 4 | eA== |
| 2 | 4 | eHg= |
| 3 | 4 | eHh4 |
| 4 | 8 | eHh4eA== |
| 10 | 16 | eHh4eHh4eHh4eA== |
Ou seja, uma string cresce cerca de um terço, e mais ainda se caracteres não ASCII ocuparem vários bytes cada em UTF-8. A página sobre o aumento de tamanho do Base64 traz os números exatos para saídas com quebra de linha.
Onde as strings codificadas vão parar
As pessoas convertem strings para Base64 principalmente para fazê-las passar por lugares que não se dão bem com caracteres especiais:
- Variáveis de ambiente e segredos de CI, onde um valor com aspas,
$ou quebras de linha seria corrompido.postgres://app:s3cret@db:5432/appviracG9zdGdyZXM6Ly9hcHA6czNjcmV0QGRiOjU0MzIvYXBw, uma linha sem nada para escapar. - Secrets do Kubernetes, cujos valores em
data:precisam estar em Base64. O decodificador de Secrets do Kubernetes os lê de volta. - Cabeçalhos HTTP, por exemplo
Authorization: Basiccomuser:passwordcodificado. O gerador de cabeçalho Basic Auth monta o cabeçalho completo. - Campos JSON e XML que precisam levar texto arbitrário sem que as regras de escape atrapalhem (JSON para Base64).
Nada disso esconde o valor. Qualquer pessoa com a string consegue decodificá-la, então trate um segredo codificado como um segredo em texto puro; veja codificação vs criptografia.
String para Base64 no 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=="
As duas linguagens exigem que o passo de string para bytes seja explícito, e é nele que fica a escolha do charset. Mais nas páginas de Python e Node.js.
Perguntas frequentes
Como converter uma string em Base64?
Transforme a string em bytes com um charset (UTF-8 em quase todo lugar) e depois codifique os bytes em Base64. A ferramenta acima faz as duas coisas; em Python é base64.b64encode(s.encode("utf-8")).decode().
O mesmo texto sempre gera o mesmo Base64?
Só se os bytes forem os mesmos. Grüße é R3LDvMOfZQ== em UTF-8, mas R3L832U= em Windows-1252, e um espaço ou uma quebra de linha a mais também mudam o resultado.
Qual será o comprimento da string Base64?
4 × ⌈n / 3⌉ caracteres para n bytes de entrada, antes de qualquer quebra de linha. Uma string de 10 bytes gera 16 caracteres; a calculadora de tamanho faz a conta para qualquer comprimento.
Posso colocar uma string Base64 em um arquivo de configuração ou variável de ambiente?
Sim, esse é um dos usos principais: ele transforma qualquer valor, inclusive com quebras de linha e aspas, em uma única linha de caracteres seguros. Para manter tudo em uma linha, deixe Quebra de linha em Nenhuma.