Como converter Base64 para texto
- Cole a string Base64 na caixa Entrada · Base64. Espaços, quebras de linha e aspas em volta não atrapalham.
- Leia o texto em Saída · texto. A linha de status abaixo da ferramenta diz se a entrada era Base64 válido, quantos bytes ela continha e com o que o conteúdo se parece.
- Se a saída mostrar
�ou letras estranhas, troque o Charset. Detectar automaticamente procura um byte order mark, UTF-8 e UTF-16. - Copie o texto com Copiar saída ou salve com Baixar.
O caminho inverso é Texto para Base64.
Como saber se uma string é Base64
Uma string Base64 usa só 64 caracteres, mais o = de preenchimento. O Base64 padrão tem + e /; a variante URL-safe usa - e _ no lugar deles. Strings com preenchimento têm comprimento divisível por 4, e os sinais = só podem aparecer no final.
Essas regras são necessárias, mas não bastam. Muitas palavras comuns passam por elas: Test é Base64 válido e decodifica para os três bytes 4D EB 2D, que não significam nada. O teste prático é decodificar a string e ver se sai algo que faça sentido. Quando você precisa de mais do que um sim ou não, o validador de Base64 mostra qual regra de caractere, comprimento ou preenchimento a string quebra e dá uma nota para a chance de ela ser Base64.
Exemplos
| String Base64 | Texto | Observação |
|---|---|---|
VGhhbmsgeW91IQ== | Thank you! | ASCII simples |
SGVsbG8sIFfDtnJsZA== | Hello, Wörld | ö ocupa dois bytes em UTF-8 |
5L2g5aW9 | 你好 | Seis bytes, três por caractere |
0J/RgNC40LLQtdGC | Привет | Cirílico em UTF-8 |
QmFzZTY0IGlzIG5vdCBlbmNyeXB0aW9uLg== | Base64 is not encryption. | Qualquer um consegue ler |
dXNlcm5hbWU6c2VjcmV0 | username:secret | O formato de um header HTTP Basic auth |
Como mostra a última linha, qualquer pessoa que veja um header Authorization: Basic consegue ler a senha que está nele. O decodificador de Basic Auth separa esse header em usuário e senha, e codificação vs criptografia explica por que quem mantém a senha privada de verdade é o HTTPS.
De bytes para string
Decodificar Base64 dá bytes. Tirar uma string deles é um segundo passo, que precisa de um charset, e é nesse passo que nasce a maioria dos problemas de “texto errado”. A maioria das linguagens deixa os dois passos explícitos:
import base64
raw = base64.b64decode("SGVsbG8sIFfDtnJsZA==")
raw # b'Hello, W\xc3\xb6rld'
raw.decode("utf-8") # 'Hello, Wörld'
raw.decode("latin-1") # 'Hello, Wörld'
Em JavaScript, um TextDecoder com fatal: true lança um TypeError em vez de inserir � em silêncio, o que ajuda quando você prefere falhar a gravar texto quebrado:
const bytes = Uint8Array.from(atob("Y2Fm6Q=="), c => c.charCodeAt(0));
new TextDecoder("utf-8", { fatal: true }).decode(bytes);
// TypeError: the bytes are not valid UTF-8
new TextDecoder("windows-1252").decode(bytes); // "café"
Mais padrões nas páginas de Python e JavaScript.
Quando a saída não é texto legível
- Quase só símbolos, com algumas palavras legíveis. A string contém um arquivo. Confira Parece ser na linha de status e abra em Base64 para arquivo, que mostra a prévia e salva.
- Letras separadas por espaços vazios. O texto é UTF-16. Defina o Charset como UTF-16LE.
- Texto legível, mas
éaparece comoé. O texto foi decodificado errado em algum ponto antes de ser codificado. O Base64 está certo; os dados de origem é que não estão. - A saída é Base64 de novo. Foi codificado duas vezes. Copie a saída, cole como entrada e decodifique mais uma vez.
- Bytes com cara de aleatórios e nenhum formato detectado. Os dados provavelmente estão criptografados ou compactados. A decodificação Base64 é só a primeira camada; para dados gzip ou zlib, experimente o decodificador de Base64 gzip.
Perguntas frequentes
O que é uma string Base64?
Um texto formado apenas pelos caracteres A–Z, a–z, 0–9, + e /, muitas vezes terminando em = ou ==. Ela representa bytes, que podem ser texto, uma imagem ou qualquer outro arquivo, escritos de um jeito que sobrevive a sistemas que só lidam com caracteres simples.
Como saber o que uma string Base64 contém antes de decodificar?
Os primeiros caracteres muitas vezes entregam: eyJ é JSON, PD94bWwg é XML, iVBORw0KGgo é um PNG e JVBERi0 é um PDF. Depois de decodificar, a linha de status informa o formato detectado. Veja prefixos comuns de Base64.
Como converter Base64 para string em Python?
base64.b64decode(s).decode("utf-8"). A primeira chamada devolve bytes; o .decode() os transforma em str usando o charset que você indicar.
Por que o texto decodificado é outra string Base64?
O valor foi codificado duas vezes, o que acontece quando duas camadas de um sistema codificam cada uma por sua conta. Cole a saída de volta na entrada e decodifique de novo.