Codificar e decodificar Base64
Transforme um texto ou arquivo em Base64, ou decodifique Base64 de volta para texto legível. O Unicode é tratado corretamente, o alfabeto seguro para URL está a um clique e a decodificação aceita qualquer um dos dois alfabetos, com ou sem preenchimento.
0 caracteres · 0 palavras · 0 linhas
0 caracteres · 0 palavras · 0 linhas
Funciona inteiramente nesta aba do navegador. Seu texto nunca é enviado nem armazenado.
O alfabeto Base64
Índice → caractere conforme a RFC 4648. Os dois últimos, destacados, mudam na variante segura para URL: o 62 é + ou -, o 63 é / ou _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Qual o tamanho da saída
Cada 3 bytes de entrada viram 4 caracteres; um grupo final de 1 ou 2 bytes é completado com = no Base64 padrão e fica sem preenchimento na forma segura para URL.
| Entrada | Bytes | Padrão | Seguro para URL | Comprimento |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
O que o Base64 faz
O Base64, definido na RFC 4648, escreve bytes quaisquer usando 64 caracteres ASCII imprimíveis: A–Z, a–z, 0–9, + e /. Cada grupo de três bytes (24 bits) é dividido em quatro números de 6 bits, e cada número escolhe um caractere do alfabeto. Quando o tamanho da entrada não é múltiplo de três, o último grupo recebe um ou dois sinais = de preenchimento. O resultado é sempre cerca de 33% maior que a entrada: 4 caracteres para cada 3 bytes.
Ele existe porque muitos canais foram criados para texto. E-mail (MIME), URLs data: em HTML e CSS, campos JSON que carregam imagens ou certificados e cabeçalhos de autenticação HTTP Basic usam Base64 para transportar dados binários com segurança. Não é criptografia e não esconde nada; para decodificar não é preciso chave.
Unicode e a variante segura para URL
O Base64 codifica bytes, não letras, então o texto precisa primeiro ser transformado em bytes. Esta ferramenta sempre usa UTF-8, a codificação em que a web funciona: o é vira dois bytes e um emoji, quatro. A função btoa do navegador, sozinha, gera erro em qualquer caractere acima de U+00FF, e por isso codificadores ingênuos falham com acentos e emojis; aqui o texto passa antes pelo TextEncoder, e a decodificação faz o caminho inverso com o TextDecoder. Se os bytes decodificados não forem UTF-8 válido (uma imagem, um arquivo zip), a ferramenta os mostra em hexadecimal em vez de texto ilegível.
O Base64 padrão usa + e /, que têm significado em URLs e nomes de arquivo. O alfabeto seguro para URL, da seção 5 da RFC 4648, os substitui por - e _, e o preenchimento geralmente é omitido. Os JSON Web Tokens usam exatamente essa forma. O decodificador aceita os dois alfabetos e a falta de preenchimento, então você pode colar qualquer um.
Codificar arquivos e imagens
Escolha um arquivo e a ferramenta o lê localmente com FileReader e devolve o Base64 dele, ou uma URL data: completa com o tipo MIME do arquivo, pronta para colar em uma tag img ou em um background de CSS. Imagens embutidas economizam uma requisição HTTP, mas ficam um terço maiores e não podem ser armazenadas em cache separadamente, por isso servem para ícones pequenos, não para fotos. Para imagens com pré-visualização e trechos de HTML e CSS prontos, use Imagem para Base64.
Perguntas frequentes
- Por que o resultado em Base64 fica maior que o original?
- Cada 3 bytes viram 4 caracteres, então a saída tem cerca de 4/3 do tamanho da entrada, mais até dois caracteres de preenchimento. Texto fora do ASCII fica ainda maior, porque o UTF-8 usa de dois a quatro bytes por caractere.
- O que são os sinais = no final?
- Preenchimento. Eles fazem o tamanho da saída ser múltiplo de quatro quando o tamanho da entrada não é múltiplo de três. Um = significa que o último grupo tinha dois bytes; dois = significam que tinha um byte.
- Por que a decodificação falha com erro de caractere inválido?
- A entrada contém algo fora do alfabeto, como um espaço dentro de uma palavra, uma aspa ou um % de codificação de URL. Quebras de linha e falta de preenchimento são toleradas; outros caracteres, não.
- É seguro codificar uma senha em Base64?
- O Base64 não oferece nenhuma proteção. A autenticação HTTP Basic envia usuário:senha em Base64, e por isso só deve ser usada por HTTPS. Use criptografia ou hash de verdade para proteger segredos.
- Qual é a diferença entre Base64 e Base64url?
- Apenas dois caracteres e o preenchimento: o Base64url usa - e _ no lugar de + e / e geralmente omite o =, então o resultado pode ficar em URLs e nomes de arquivo sem escape.