Ir para o codificador Base64

RFC 4648 · Codificador e decodificador

Codifique qualquer coisa em Base64, sem enviar nada.

Um codificador e decodificador Base64 online e grátis para texto, arquivos e imagens, executado por JavaScript na sua própria aba do navegador. Nada é enviado, então ele continua funcionando offline e não tem limite de tamanho.

  • Codifica enquanto você digita
  • Texto, arquivos e imagens
  • Modos URL-safe e MIME
  • Sem anúncios e sem cadastro
0 caracteres · 0 B
0 caracteres · 0 B
Opções
Variantes de codificação

Ctrl+Enter codificar Ctrl+Shift+C copiar resultado Ctrl+Shift+X inverter direção

Codificar Base64 online: grátis, instantâneo e privado

Esta ferramenta para codificar Base64 online trabalha no seu navegador, e não em um servidor. Digite na caixa acima e o Base64 aparece enquanto você digita: sem botão, sem recarregar a página e sem upload. Mude para Decodificar para fazer o caminho inverso, ou abra a aba Arquivo e imagem para codificar uma imagem em Base64 e obter um data URI para colar direto no HTML ou CSS.

Tudo o que o padrão define está aqui: o alfabeto padrão, Base64 URL-safe (RFC 4648 §5), linhas MIME de 76 caracteres, quebras de linha LF e CRLF, codificação linha a linha e seis conjuntos de caracteres, do UTF-8 ao ISO-8859-1 e UTF-16. Se preferir codificar em Base64 no seu código, os exemplos abaixo cobrem Python, JavaScript, Linux e macOS, PowerShell, PHP, Java, Go, C# e Ruby.

Última atualização:

Por que esta

A diferença está em onde a codificação acontece.

A maioria das ferramentas Base64 envia seu arquivo para um servidor, codifica lá e devolve um link de download. Ou seja, seus dados saem da sua máquina para uma transformação que o navegador faz em microssegundos. Esta ferramenta nunca faz essa requisição.

Comparação entre este codificador Base64 e as ferramentas Base64 online típicas baseadas em servidor
Recurso freebase64encode.com Codificador online típico
Onde seus dados são processados Sempre na sua aba do navegador Enviados para um servidor
Limite de tamanho de arquivo Só a memória do seu dispositivo Geralmente 100 MB no máximo
Arquivos guardados em servidor Nunca: não existe endpoint Guardados temporariamente e depois apagados
Continua funcionando offline Sim, depois que a página carrega Não
Codificação ao vivo enquanto digita Ativada por padrão Opcional ou com botão
Codificar e decodificar Uma página, um clique para trocar Duas páginas separadas
Imagem → data URI + HTML/CSS/Markdown Integrado, com pré-visualização Não oferecido
Exemplos de código em 9 linguagens Na própria página Não oferecido
Aumento de tamanho exibido Bytes e % ao vivo Não exibido
Anúncios e avisos de cookies Nenhum, e sem cookies de rastreamento Geralmente presentes

No seu código

Codificar Base64 em Python, JavaScript, Bash, PowerShell e mais cinco.

Código pronto para copiar e colar para codificar e decodificar nas linguagens mais buscadas, com a pegadinha que custa uma tarde a todo mundo destacada em cada uma.

Codificar Base64 em Python

O Python traz Base64 na biblioteca padrão. O que mais confunde: b64encode recebe bytes, não str, então o texto precisa ser codificado em UTF-8 antes.

import base64

# Encode a string ─ note the .encode("utf-8"): b64encode takes bytes, not str
text = "Man is distinguished"
encoded = base64.b64encode(text.encode("utf-8")).decode("ascii")
print(encoded)                       # TWFuIGlzIGRpc3Rpbmd1aXNoZWQ=

# Decode it back
decoded = base64.b64decode(encoded).decode("utf-8")

# URL-safe, unpadded (RFC 4648 §5) ─ the JWT flavour
base64.urlsafe_b64encode(b"data").rstrip(b"=")

# Encode a file, wrapped at 76 characters for MIME
with open("photo.png", "rb") as f:
    mime = base64.encodebytes(f.read()).decode("ascii")

# Build a data URI for an image
uri = "data:image/png;base64," + base64.b64encode(open("photo.png", "rb").read()).decode()

O mecanismo

Como a codificação Base64 funciona de verdade.

O Base64 reescreve bytes quaisquer com 64 caracteres que todo sistema entende. Ele pega três bytes (24 bits) e os recorta em quatro grupos de 6 bits. Cada grupo é um índice do alfabeto A–Z a–z 0–9 + /. Como 3 bytes sempre viram 4 caracteres, a saída fica exatamente um terço maior.

Exemplo passo a passo: Man → TWFu

Texto Man
ASCII 7797110
Bits 01001101 01100001 01101110
Grupos de 6 bits 010011 010110 000101 101110
Índice 19 · 22 · 5 · 46
Base64 TWFu

Quando o comprimento da entrada não é múltiplo de três, o último grupo é preenchido com = para que a saída continue múltipla de quatro. Um byte sobrando gera ==; dois bytes sobrando geram =.

Exemplos de codificação Base64

Veja como ficam algumas strings comuns codificadas em Base64 como UTF-8. Cole qualquer uma na ferramenta acima para conferir.

Strings de exemplo e sua codificação Base64
Entrada Base64 Observação
Hello, World! SGVsbG8sIFdvcmxkIQ== Dois = porque 13 bytes deixam um sobrando
Hello World SGVsbG8gV29ybGQ= 11 bytes, então um =
hello aGVsbG8=
base64 YmFzZTY0 6 bytes são divisíveis por 3: sem preenchimento
user:password dXNlcjpwYXNzd29yZA== Valor de um cabeçalho HTTP Basic auth
héllo 🎉 aMOpbGxvIPCfjok= UTF-8: o é ocupa 2 bytes, o emoji 4
{"alg":"HS256","typ":"JWT"} eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 Cabeçalho de um JWT, URL-safe e sem preenchimento

O alfabeto Base64 (tabela de índices)

Cada valor de 6 bits, de 0 a 63, corresponde a um caractere. O alfabeto URL-safe é idêntico, exceto que o 62 é - e o 63 é _. O = é preenchimento e não faz parte do alfabeto.

Tabela de índices Base64: valores de 0 a 63 e seus caracteres
Valor Caractere Valor Caractere Valor Caractere Valor Caractere
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Variantes do Base64 comparadas

“Base64” é uma família. Todas as variantes compartilham as mesmas 62 letras e dígitos e diferem nos dois últimos caracteres, no preenchimento e nas quebras de linha. A ferramenta acima gera as três primeiras.

Comparação das variantes do Base64: padrão, URL-safe, MIME e PEM
VarianteEspecificaçãoCaracteres 62 / 63PreenchimentoQuebras de linhaUso
Padrão RFC 4648 §4 + / Obrigatório Nenhuma Uso geral, JSON, data URI
URL-safe (base64url) RFC 4648 §5 - _ Normalmente omitido Nenhuma JWTs, URLs, nomes de arquivo
MIME RFC 2045 + / Obrigatório CRLF a cada 76 Anexos de e-mail
PEM RFC 7468 + / Obrigatório A cada 64, com BEGIN/END Certificados TLS, chaves

Onde o Base64 é usado

Anexos de e-mail

O SMTP foi especificado para texto de 7 bits. O MIME (RFC 2045) codifica os anexos em Base64 e quebra a saída a cada 76 caracteres para que os servidores de e-mail a repassem sem alterações.

Data URI

data:image/png;base64,… embute uma imagem pequena, uma fonte ou um SVG direto no HTML ou CSS e economiza uma requisição. Vale a pena abaixo de alguns kilobytes; acima disso, os 33% a mais e a perda de cache custam mais do que a requisição.

Dados em JSON e XML

Nenhum dos dois formatos aceita bytes arbitrários. O Base64 transforma um arquivo em uma string simples que qualquer parser JSON aceita, e é assim que dados binários trafegam por APIs REST.

JWTs e URLs

Os JSON Web Tokens usam base64url, a variante RFC 4648 §5 com - e _ no lugar de + e / e sem preenchimento, para que o token caiba com segurança em uma URL, cookie ou cabeçalho.

HTTP Basic auth

Authorization: Basic é literalmente base64(usuário:senha). É codificação, não criptografia, e é exatamente por isso que o Basic auth só é aceitável sobre HTTPS.

Configuração e segredos

Secrets do Kubernetes, certificados TLS em formato PEM e chaves SSH guardam dados binários em Base64 para que o arquivo continue sendo um texto legível, comparável e fácil de copiar.

Seis erros que custam uma tarde

Base64 não é criptografia

Qualquer pessoa decodifica com um único comando. Nunca use para esconder uma senha, uma chave de API ou dados pessoais: para isso existe criptografia de verdade.

Conjuntos de caracteres diferentes estragam o texto

O Base64 codifica bytes, e o texto só vira bytes depois que um conjunto de caracteres é escolhido. Codifique em UTF-8 e decodifique em Latin-1 e você terá caracteres estranhos. Use UTF-8 nos dois lados.

echo adiciona uma quebra de linha

echo "hi" | base64 codifica três bytes, não dois, porque o echo acrescenta \n. Use printf %s para codificar exatamente o que você digitou.

Quebras de linha mudam a string

A saída MIME tem um CRLF a cada 76 caracteres. A maioria dos decodificadores ignora espaços, mas uma comparação estrita ou um hash de duas strings “idênticas” falha se uma delas estiver quebrada.

+ e / quebram em URLs

O + vira espaço quando uma query string é decodificada como formulário, e a / divide caminhos. Use a variante URL-safe sempre que o valor for para uma URL ou um nome de arquivo.

Os dados crescem um terço

Cada 3 bytes viram 4 caracteres. Colocar um upload grande em Base64 dentro de um JSON aumenta a banda e a memória nas duas pontas: envie multipart/form-data.

Perguntas

Codificação Base64: perguntas frequentes.

O que é codificação Base64?

Base64 é um esquema de codificação de binário para texto que representa dados binários com 64 caracteres ASCII imprimíveis (A–Z, a–z, 0–9, + e /). Ele existe para que dados binários trafeguem com segurança por canais feitos para texto: corpos de e-mail, documentos JSON e XML, cabeçalhos HTTP, URLs e atributos HTML. Base64 é codificação, não criptografia: qualquer pessoa pode decodificar, então ele não oferece confidencialidade.

Como codificar texto em Base64 online?

Cole ou digite seu texto na caixa de entrada desta página. O resultado aparece na hora na caixa de saída: não há botão nem recarregamento, porque a codificação acontece no seu navegador enquanto você digita. Clique em Copiar, ou use Ctrl+Shift+C, para levar a string Base64 para a área de transferência.

Como codificar uma string em Base64?

Primeiro a string é convertida em bytes com um conjunto de caracteres (quase sempre UTF-8) e depois esses bytes são codificados em Base64. Nesta página isso acontece automaticamente: digite a string e copie o resultado. Por exemplo, "Hello, World!" em Base64 fica SGVsbG8sIFdvcmxkIQ==. Em código é uma linha em qualquer linguagem popular; veja os exemplos para Python, JavaScript, Bash, PowerShell, PHP, Java, Go, C# e Ruby.

Este codificador Base64 é seguro e privado?

Sim. Cada byte é codificado localmente por JavaScript na sua própria aba do navegador. Seus textos, arquivos e imagens nunca são enviados a um servidor, nunca são gravados em um banco de dados e nunca são registrados: o site é uma página totalmente estática, sem nenhum endpoint de upload. Você pode conferir abrindo a aba Rede do DevTools enquanto codifica, ou desconectando da internet e vendo que a ferramenta continua funcionando.

Como codificar em Base64 no Python?

Use o módulo embutido base64. Codifique com base64.b64encode(data.encode("utf-8")).decode("ascii") e decodifique com base64.b64decode(encoded).decode("utf-8"). Repare que b64encode recebe bytes, não str, por isso a entrada é codificada em UTF-8 antes. Para saída URL-safe use base64.urlsafe_b64encode, e para saída MIME com linhas de 76 caracteres use base64.encodebytes.

Como codificar em Base64 no PowerShell ou no Windows?

No PowerShell, execute [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello")) para codificar uma string, ou [Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\caminho\arquivo.png")) para codificar um arquivo. No cmd.exe, certutil -encode in.png out.b64 funciona em qualquer Windows, mas adiciona linhas de cabeçalho BEGIN e END. Use [Text.Encoding]::Unicode (UTF-16 LE) apenas com powershell -EncodedCommand.

Como codificar em Base64 no JavaScript?

Para texto ASCII, btoa(str) codifica e atob(str) decodifica. O btoa falha com caracteres acima de U+00FF, então para texto Unicode converta para bytes primeiro: btoa(Array.from(new TextEncoder().encode(str), (b) => String.fromCharCode(b)).join("")). Evite a forma com spread String.fromCharCode(...bytes), que estoura a pilha de chamadas com entradas grandes. No Node.js use Buffer.from(str, "utf8").toString("base64"). Ambientes modernos também oferecem Uint8Array.prototype.toBase64().

Como codificar um arquivo em Base64 no Linux?

Use o comando base64 do coreutils: base64 arquivo.txt codifica e base64 -d arquivo.b64 decodifica. Adicione -w 0 para desativar as quebras de linha quando precisar de uma única linha, ou -w 76 para uma saída compatível com MIME. Para codificar uma string direto, use um pipe: printf %s "hello" | base64. Use printf em vez de echo para não incluir uma quebra de linha no final dos bytes codificados.

Como codificar em Base64 no Mac?

O macOS traz o comando base64 do BSD no Terminal. Codifique um arquivo com base64 -i arquivo.png -o arquivo.b64, uma string com printf %s "hello" | base64, e decodifique com base64 -D -i arquivo.b64 -o arquivo.png. Ao contrário do base64 GNU do Linux, ele não quebra linhas por padrão e não tem a opção -w. Use um pipe para o pbcopy para mandar o resultado direto para a área de transferência.

Como codificar uma imagem em Base64?

Abra a aba Arquivo e imagem desta página e solte sua imagem. Você recebe o Base64 bruto, um data URI pronto para colar (data:image/png;base64,...) e trechos de HTML, CSS e Markdown gerados. O Base64 deixa a imagem cerca de 33% maior, então é melhor embutir só imagens pequenas (abaixo de uns 5 KB) e servir as maiores como arquivos normais que o navegador consegue guardar em cache.

O que é Base64 URL-safe?

O Base64 padrão usa + e /, que têm significado reservado em URLs e nomes de arquivo. O Base64 URL-safe (RFC 4648 §5, também chamado de base64url) troca + por - e / por _, e normalmente remove o preenchimento =. É o que os JSON Web Tokens usam. Ative a opção URL-safe desta página para gerá-lo.

Por que minha string Base64 termina com sinais de =?

O Base64 processa a entrada em grupos de 3 bytes que viram 4 caracteres. Quando o comprimento da entrada não é múltiplo de 3, o último grupo é preenchido com = para que a saída continue múltipla de 4. Um byte sobrando gera dois =, dois bytes sobrando geram um. O preenchimento não carrega dados e é opcional em algumas variantes, como o base64url.

Quanto o Base64 aumenta o tamanho dos dados?

Cerca de 33%: cada 3 bytes de entrada viram 4 caracteres de saída, uma proporção de 4/3. O comprimento exato com preenchimento é 4 × ⌈n / 3⌉ caracteres para n bytes de entrada, então 10 bytes viram 16 caracteres e 1 MB vira cerca de 1,33 MB. No modo MIME, as quebras de linha somam mais uns 2,6% (um CRLF de dois bytes a cada 76 caracteres). Esta ferramenta mostra o tamanho exato de entrada e saída e o percentual de aumento abaixo do resultado enquanto você digita.

Existe limite de tamanho de arquivo?

Não há limite no servidor porque não há servidor envolvido. O limite prático é a memória do seu dispositivo e da aba do navegador; no computador, arquivos de até algumas centenas de megabytes costumam funcionar, e esta ferramenta processa arquivos grandes em blocos para o navegador continuar respondendo. Ferramentas que enviam o arquivo para um servidor costumam limitar a 100 MB.

A codificação Base64 funciona com Unicode e emojis?

Sim. O texto é convertido em bytes primeiro, usando o conjunto de caracteres que você escolher (UTF-8 por padrão, que cobre todos os pontos de código Unicode, incluindo emojis), e depois esses bytes são codificados em Base64. Conjuntos de caracteres diferentes no codificador e no decodificador são a causa mais comum de texto corrompido, então mantenha os dois em UTF-8, a não ser que tenha um motivo específico.