Decodificar e codificar Base64: para PDF, imagem ou arquivo
Cole o Base64 para decodificar e ter o arquivo de volta, seja PDF, imagem, texto ou JWT, ou solte um arquivo para obter o Base64 dele. Tudo acontece nesta aba.
Três bytes têm 24 bits. O Base64 corta esses mesmos 24 bits em quatro grupos de seis, e cada grupo indica um de 64 caracteres. As linhas brancas marcam onde os bytes terminam: elas não coincidem com os grupos, e esse é todo o truque.
16 + 2 + 1 = 19 T
Índice 19 no alfabeto padrão.
Como usar o decodificador e codificador Base64
Cole qualquer coisa no campo único (texto, Base64, uma data: URI inteira ou um JWT), clique em Escolher arquivo ou solte um arquivo no painel. A ferramenta descobre a direção, mostra no indicador e deixa a outra leitura a um clique.
Ao decodificar um arquivo, você recebe o tipo lido dos próprios bytes, o tamanho, as dimensões em pixels de uma imagem, a aba Visualização de uma imagem ou de um PDF e um download com a extensão certa. Ao codificar um, você recebe o Base64, uma data: URI pronta e quanto a codificação custou em tamanho. As opções Alfabeto, Preenchimento e Quebras de linha, abaixo do resultado, mudam a saída.

Um campo, nos dois sentidosCole texto, Base64, uma data: URI ou um JWT. O indicador diz como foi lido; o menu muda isso.Escolher arquivoOu solte um arquivo em qualquer lugar do painel: ele vira Base64 e uma data: URI, sem sair da aba.O que os bytes sãoAo decodificar, o resultado abre com o tipo do arquivo, o tamanho e a assinatura, depois uma prévia e o download.Opções de saídaAlfabeto padrão ou seguro para URL, preenchimento ligado ou desligado, e linhas quebradas para MIME ou PEM.3 bytes → 4 caracteresOs seus próprios bytes, recortados em grupos de seis. Aponte para um caractere para ver os bits dele somados.O que é Base64 e por que ele existe?
O Base64 escreve quaisquer bytes com 64 caracteres que passam por qualquer lugar: A–Z, a–z, 0–9, + e /. Ele existe porque e-mail, URLs, JSON e XML foram feitos para texto, e um byte bruto pode ser um código de controle, uma aspa ou um nulo que os quebra.
Ele pega três bytes por vez, enfileira os 24 bits deles e corta a fila em quatro grupos de seis. Seis bits comportam 64 valores, então cada grupo indica exatamente um caractere. Três bytes entram, quatro caracteres saem, sempre: é por isso que o Base64 fica cerca de um terço maior do que o original.
Três bytes têm 24 bits. O Base64 os recorta em quatro grupos de seis, e cada grupo indica um de 64 caracteres imprimíveis, então três bytes sempre custam quatro caracteres. É daí que vem o aumento de 33%.
Dois bytes têm 16 bits. O Base64 adiciona 2 bits zero para completar o terceiro grupo, e um = ocupa o lugar do quarto caractere.
Um byte tem 8 bits. O Base64 adiciona 4 bits zero para completar o segundo grupo, e dois = ocupam o lugar do terceiro e do quarto caracteres. O = não carrega bit nenhum.
Como decodificar Base64 para PDF?
Cole a string e a ferramenta reconstrói o PDF: mostra a versão e o tamanho, abre o documento no visualizador de PDF do próprio navegador e oferece o download. Você não precisa dizer que é um PDF, nem remover antes um prefixo data:.
Um PDF é reconhecido pelos cinco primeiros bytes, %PDF-, então o arquivo é identificado mesmo quando o nome, o tipo que o remetente declarou ou o campo de onde ele veio dizem outra coisa. Se os bytes não forem um PDF, a página diz o que eles são, em vez de falhar ao abrir um documento que nunca existiu.
O arquivo é reconstruído no seu navegador. Nada é enviado, o que importa quando o PDF é um holerite, um contrato ou uma fatura.
"document": "JVBERi0xLjcKJeLjz9MKMS…"Um campo de uma resposta. As aspas não fazem parte do Base64.Content-Transfer-Encoding: base64O MIME quebra o corpo em linhas de 76 caracteres. Cole com as quebras de linha: elas são ignoradas.data:application/pdf;base64,JVBERi0x…Cole tudo. O prefixo é lido, não precisa ser removido à mão.- 25%
- 50P
- 44D
- 46F
- 2D-
- 311
- 2E.
- 377
Os primeiros 5 bytes, %PDF-, são a assinatura inteira. Os bytes 6 a 8 são a versão: 1.7. Nenhuma extensão de arquivo entra nisso, então um PDF que alguém nomeou como .txt continua voltando como PDF.
Como converter imagem para Base64, e quando vale a pena?
Solte a imagem e você recebe o Base64 dela e uma data: URI pronta para colar em HTML ou CSS. Saber se vale a pena é a pergunta mais difícil: o Base64 sempre custa cerca de um terço a mais, e uma imagem embutida não pode ficar em cache sozinha.
No sentido contrário, de Base64 para imagem, você recebe o formato, o tamanho e as dimensões reais em pixels lidas do cabeçalho do próprio arquivo, não da imagem na tela, e um download com a extensão certa.
- O arquivo no disco12,9 kB 100%
- Em Base6417,3 kB +33,4%
- Quebrado a cada 76 caracteres para MIME17,5 kB +35,1%
- O arquivo, com gzip11,7 kB -9,5%
- O Base64, com gzip12,5 kB -3,2%
- baixado uma vez
- guardado em cache pelo navegador e pela CDN
- buscado ao lado da página, não dentro dela
- um terço maior antes da compressão
- em cache só como parte do arquivo que a contém
- processada como parte da folha de estilo ou do HTML
A compressão recupera a maior parte: com gzip, o Base64 fica só 7% maior que o arquivo com gzip. O que ela não devolve é a entrada de cache própria da imagem: embutida numa página HTML, ela é baixada de novo com cada página que a traz.
A regra prática: embuta algumas centenas de bytes (um ícone, um espaçador, um logo num e-mail) e use link para qualquer coisa maior. Esta imagem PNG de 12,9 kB já passou do limite.
Base64 x Base64 seguro para URL: qual é a diferença?
O Base64 seguro para URL (RFC 4648 §5) é a mesma codificação com dois caracteres trocados: + vira - e / vira _. O preenchimento também costuma ser omitido.
Use-o sempre que o resultado for para uma URL, um nome de arquivo ou um cookie. Os JSON Web Tokens o usam em todas as partes, e é por isso que as partes de um token nunca terminam em =. Esta ferramenta lê os dois alfabetos e avisa quando uma string traz os dois.
+/8=-_8=-_8+→-Índice 62. Numa query string, um decodificador de formulário lê+como espaço, e os dados voltam errados./→_Índice 63. Num caminho,/começa um novo segmento, e o valor é partido em dois.=removidoNuma URL, o=costuma virar%3Dpela codificação percentual (RFC 4648 §5). Um JWT o descarta de vez (RFC 7515 §2): só o comprimento já diz onde os bytes terminam.
Os primeiros 62 caracteres dos dois alfabetos são idênticos, e é por isso que uma ferramenta que lê os dois alfabetos decodifica qualquer um deles, e por isso esta página avisa quando uma string traz os dois.
Base64 é criptografia? Não.
O Base64 não esconde nada. Não há chave nem segredo, e revertê-lo não exige esforço algum: um decodificador como este faz isso enquanto você digita.
A autenticação HTTP Basic é onde isso mais importa: o cabeçalho leva o nome de usuário e a senha como uma única string Base64, legível por qualquer um que a veja, e é por isso que a RFC 7617 só a considera segura sobre uma conexão criptografada, como TLS. Se algo precisa ficar ilegível, precisa de criptografia. O Base64 só faz os bytes passarem com segurança por um canal feito para texto.
Um cabeçalho Authorization, como a RFC 7617 §2 o monta
Authorization: Basic dXNlcjpwYXNzd29yZA==user:passwordA RFC 7617 monta o cabeçalho passo a passo, e o último passo é toda a sua “proteção”: o cliente “obtém as basic-credentials codificando esta sequência de octetos usando Base64”. A §1 dela diz o que isso significa: a menos que TLS ou um sistema parecido proteja a conexão, “o user-id e a senha são passados pela rede como texto claro”. O Base64 não tem chave, então não há nada para quebrar: quem tem a string tem a senha.
Por que meu texto decodificado aparece como mojibake (caracteres estranhos)?
Porque o Base64 carrega bytes, e bytes só viram letras quando algo escolhe uma codificação de caracteres. Leia um texto UTF-8 como se fosse ISO-8859-1 e é vira é; leia ISO-8859-1 como UTF-8 e ele vira um sinal de substituição.
Uma data: URI pode declarar o charset, e esta página lê o texto nesse charset em vez de forçar tudo por UTF-8. Quando o seu navegador não tem decodificador para o charset declarado, a página avisa, em vez de mostrar as letras erradas em silêncio.
Em UTF-8, é ocupa 2 bytes; em ISO-8859-1, 1 byte. O Base64 carrega bytes, não letras, então a própria string não tem como dizer ao decodificador qual das duas era a intenção.
Base64 em Python, JavaScript, Java, C#, Go, PowerShell e no shell
Toda linguagem tem Base64 embutido. As armadilhas são as mesmas em todas: codifique bytes, não uma string, e diga em que codificação de caracteres o texto está.
O btoa() do JavaScript é a parte mais traiçoeira: ele só aceita caracteres até U+00FF, então qualquer coisa além do Latin-1 precisa virar bytes UTF-8 com TextEncoder primeiro. Cada exemplo abaixo codifica e decodifica “Man” e foi executado para conferir a saída.
import base64 b64 = base64.b64encode("Man".encode("utf-8")).decode("ascii") print(b64) # TWFu print(base64.b64decode(b64).decode("utf-8")) # Man
Executado com Python 3.14.4 em 26 de outubro de 2026: imprime o que os comentários mostram.
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
Executado com Node.js 22.23.2 em 26 de outubro de 2026: imprime o que os comentários mostram.
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
}
}Executado com OpenJDK 25.0.2 em 26 de outubro de 2026: imprime o que os comentários mostram.
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
Executado com .NET 10.0.103 em 26 de outubro de 2026: imprime o que os comentários mostram.
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 }
Executado com Go 1.25.5 em 26 de outubro de 2026: imprime o que os comentários mostram.
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Man')) $b64 # TWFu [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64)) # Man
Executado com PowerShell 7.5.5 em 26 de outubro de 2026: imprime o que os comentários mostram.
printf 'Man' | base64 # TWFu printf 'TWFu' | base64 -d # Man echo 'Man' | base64 # TWFuCg== (echo adds a newline)
Executado com o comando base64 do macOS 26.6 (bash) em 26 de outubro de 2026: imprime o que os comentários mostram.
base64 -d do shell é -D em versões antigas do macOS. Fonte: gnu.org, developer.mozilla.orgO alfabeto Base64, de 0 a 63
Cada grupo de seis bits é um número de 0 a 63, e esta é a tabela em que ele é consultado. O Base64 diferencia maiúsculas de minúsculas: A é 0 e a é 26, então trocar a caixa de uma letra quebra a string.
Vale a pena reconhecê-lo de vista: uma sequência de A é uma sequência de bytes zero, e uma string Base64 que começa com JVBER é um PDF, iVBOR um PNG e /9j/ um 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 são A–Z, 26–51 são a–z, 52–61 são 0–9. Só os dois últimos caracteres da tabela mudam entre os dois alfabetos, marcados acima. O = nem está na tabela: não é um valor, é a marca que diz que o último grupo de três bytes ficou curto.
Base64: perguntas e respostas
O que é decodificar Base64?
Como decodificar um arquivo Base64?
Para que serve o Base64?
data: URIs em HTML e CSS, campos binários em JSON e XML, JSON Web Tokens, autenticação HTTP Basic, e certificados e chaves em arquivos PEM. Em todos os casos, os dados precisam passar por um canal que poderia alterar ou descartar bytes brutos, então eles viajam como letras e dígitos comuns.Base64 é criptografia?
É seguro decodificar Base64 online?
Por que o Base64 é 33% maior que o original?
= podem ser adicionados no final, e quebrar as linhas a cada 76 caracteres para e-mail acrescenta uma quebra de linha a cada linha, então uma string longa costuma ficar cerca de 35% maior que os bytes que carrega. Compressão como o gzip recupera a maior parte disso.O que é Base64 seguro para URL?
+ trocado por - e / trocado por _, como define a RFC 4648 §5, para que o resultado possa ir numa URL, num nome de arquivo ou num cookie sem precisar de escape. O preenchimento costuma ser omitido também, como nos JSON Web Tokens. Esta ferramenta lê os dois alfabetos, mesmo misturados numa só string, e escreve em qualquer um deles.Por que minha decodificação Base64 falha?
Dá para converter Base64 para imagem?
data:image/png;base64,, e a imagem aparece com o formato, o tamanho e as dimensões reais em pixels, lidas do cabeçalho do próprio arquivo. Depois, baixe-a com a extensão certa. PNG, JPEG, GIF, WebP, BMP, ICO e AVIF têm prévia; um SVG aparece primeiro como texto, porque um SVG pode conter script.O que significa o = no final do Base64?
=, e um byte restante vira dois caracteres e ==. O preenchimento não carrega dado algum: só diz ao decodificador onde os bytes terminam. Muitos decodificadores, incluindo este, também leem Base64 sem o preenchimento.Existe limite de tamanho?
Posso decodificar um JWT aqui?
iat e exp e a assinatura mostrada como bytes. Esta página só decodifica as três partes base64url: não verifica a assinatura e nunca diz que um token é válido, então não a use para decidir se pode confiar em um.Sentiu falta de algo?Sugira um recurso ou uma nova ferramenta
Ferramentas relacionadas
Tradutor de Texto para Binário
Traduza texto para binário e binário para texto: detecção automática, hex, decimal e octal
Gerador de UUID
Gere UUID v4, v7, v1, v5 e v3 ou GUIDs em massa, em qualquer formato, e decodifique a versão e o timestamp de um UUID
Decodificar CSR e Certificado
Decodifique um CSR ou certificado SSL: requerente, SANs, tamanho da chave, validade, emissor, fingerprint, verificação da assinatura e correspondência CSR-certificado
Espaço Invisível
Copie e cole o espaço invisível ou um caractere em branco, e encontre ou remova caracteres ocultos em textos
Conversor de Timestamp Unix
Converta timestamps Unix em datas e datas em tempo epoch, em qualquer fuso horário, com conversão em lote