Codificar e decodificar Base64

Codificador e decodificador Base64 grátis. Compatível com UTF-8, funciona offline e roda inteiramente no seu navegador.

encoding

Base64

Resultado
Aguardando entrada…

Roda totalmente no seu navegador. Seus dados nunca saem do seu dispositivo.

What next?

How it works

O que Base64 realmente é

Base64 é uma codificação — uma forma de representar dados binários arbitrários usando apenas os 64 caracteres ASCII imprimíveis A–Z, a–z, 0–9, +, /. É definido por RFC 4648 e foi inventado nos anos 1980 para que anexos binários pudessem sobreviver a sistemas de e-mail que apenas lidavam com texto de 7 bits.

Não é criptografia. Qualquer pessoa com a string codificada pode decodificá-la de volta ao original — não há chave, sem segredo. Se você precisa de confidencialidade, use AES ou sua camada TLS; Base64 apenas resolve "como transporto bytes através de um canal somente texto?".

A transformação em si é mecânica: cada 3 bytes de entrada se tornam 4 caracteres de saída. Entrada que não se divide uniformemente em grupos de 3 bytes é preenchida com = para que o comprimento da saída seja sempre um múltiplo de 4. É por isso que você vê = no final de algumas strings codificadas (zero, um ou dois deles).

Quando você vai usá-lo

  • Data URIs. Incorporando uma pequena imagem em CSS ou HTML: url("data:image/png;base64,iVBOR…").
  • JWT. Cada segmento de um JSON Web Token é codificado em Base64URL JSON.
  • HTTP Basic auth. O cabeçalho Authorization: Basic … é user:pass codificado em Base64.
  • Anexos de e-mail (MIME). Arquivos binários sobrevivem ao trânsito ao serem envolvidos em Base64.
  • Payloads de API. Enviando blobs binários sobre JSON (que não tem tipo binário nativo).
  • Armazenando binário em bancos de dados ou variáveis de ambiente que esperam texto.

Você não deveria usar Base64 para "encolher" dados — ela adiciona ~33% de sobrecarga. É uma codificação de transporte, não compressão.

A pegadilha UTF-8

A função btoa() integrada do navegador parece fazer a coisa certa — e silenciosamente produz lixo no momento em que você a alimenta com um caractere não-ASCII:

btoa('Hello')      // "SGVsbG8="              ✓
btoa('世界')        // InvalidCharacterError   ✗
btoa('🌏')         // InvalidCharacterError   ✗

A razão: btoa opera em Latin-1 (bytes 0–255), não UTF-8. O caractere não cabe em um byte, portanto a função se recusa. Mesmo para emoji, vietnamita com diacríticos, árabe, qualquer coisa fora do latin básico.

O conserto é codificar UTF-8 a string primeiro em uma sequência de byte, depois codificar Base64 esses bytes. É exatamente o que esta ferramenta faz — cada entrada é tratada como UTF-8 por padrão, portanto emoji e unicode fazem viagem de ida e volta limpa.

Base64 vs Base64URL

Base64 padrão usa + e /, que ambos têm significados especiais em URLs e nomes de arquivo. Base64URL (RFC 4648 §5) os troca por - e _ e remove o preenchimento = final. Isso torna strings codificadas seguras para soltar em um parâmetro de consulta URL, um segmento JWT ou um nome de arquivo.

Se você alternar URL-safe acima, a ferramenta emite - e _ em vez de + e /, sem preenchimento. A decodificação aceita ambos os sabores — nós detectamos automaticamente.

Exemplos

Codificar texto simples:

Entrada: Hello, World! Saída: SGVsbG8sIFdvcmxkIQ==

Codificar vietnamita com diacríticos:

Entrada: Tiếng Việt có dấu Saída: VGnhur9uZyBWaeG7h3QgY8OzIGThuqV1

Decodificar um pedaço de payload JWT (Base64URL):

Entrada: eyJzdWIiOiIxMjM0NTY3ODkwIn0 Saída: {"sub":"1234567890"}

Notas de segurança

  • Nunca armazene senhas como Base64. É reversível. Use uma função de hash de senha (bcrypt, argon2, scrypt) em vez disso.
  • Não confie em JSON decodificado em Base64 sem revalidar. Uma assinatura JWT é o que prova integridade; a camada Base64 sozinha não prova nada.
  • Observe o tamanho da entrada ao decodificar. Alguns KB de Base64 se expandem para alguns KB de bytes — OK — mas alguns cem MB de uma vez podem travá-lo a aba do navegador. Esta ferramenta processa entrada sincronamente; para arquivos muito grandes, prefira uma abordagem de streaming.

Privacidade

Esta página executa a lógica de codificação/decodificação inteiramente no seu navegador usando a biblioteca de código aberto js-base64. Sua entrada nunca é enviada aos nossos servidores, nunca é registrada e nunca deixa seu dispositivo. Abra a aba de rede e tente — você verá zero solicitações.

Ferramentas relacionadas

  • JWT Decoder — inspecionar um JSON Web Token (que é três pedaços Base64URL).
  • URL Encoder — para codificação por percentual em URLs, uma codificação diferente (geralmente complementar).

FAQ

Base64 é criptografia?

Não. Base64 é uma codificação reversível — qualquer pessoa que tenha a string codificada pode decodificá-la de volta ao original sem uma chave. Use-a para transportar dados binários através de canais somente texto, não para manter segredos.

Por que btoa() quebra em emoji ou texto vietnamita?

O btoa() nativo do navegador lida apenas com Latin-1 (bytes 0–255). Caracteres como ou 🌏 são multi-byte em UTF-8 e não cabem, portanto btoa lança. Esta ferramenta codifica UTF-8 primeiro, depois aplica Base64 — então unicode sobrevive à viagem de ida e volta.

Qual é a diferença entre Base64 padrão e Base64URL?

Base64 padrão usa + e / e preenche com =. Base64URL substitui +/ por -_ e descarta o preenchimento, tornando o resultado seguro para usar em URLs, segmentos JWT ou nomes de arquivo. Alterne "URL-safe" acima para trocar alfabetos.

Por que vejo = no final de algumas strings codificadas?

Base64 codifica cada 3 bytes de entrada como 4 caracteres de saída. Quando o comprimento de entrada não é múltiplo de 3, o codificador preenche a saída com um ou dois caracteres = para que o comprimento total permaneça divisível por 4. Base64URL omite este preenchimento.

Minha entrada é enviada para um servidor?

Não. Todo processamento acontece no seu navegador via biblioteca js-base64. Abra a aba de rede do seu navegador — você verá zero solicitações enquanto digita. Depois que a página está carregada, você pode desconectar-se inteiramente e a ferramenta continua funcionando.

Qual é a entrada maior que isso consegue lidar?

Praticamente, alguns megabytes por operação. Além de ~10 MB você pode notar a aba do navegador pausando enquanto a conversão é executada sincronamente. Para arquivos de vários cem MB, prefira um decodificador de streaming em um Web Worker ou uma ferramenta do lado do servidor.

Meu texto decodificado parece lixo — o que deu errado?

Quase sempre uma de três coisas: (1) a entrada é codificada com um alfabeto diferente (URL-safe vs padrão — tente alternar), (2) a entrada foi truncada e está faltando preenchimento, ou (3) o original não era texto UTF-8 mas binário que acontece de ser UTF-8 inválido (então "texto decodificado" é sem sentido; você quer os bytes brutos).

Posso usar Base64 para compactar dados?

Não — Base64 torna dados ~33% maiores, não menores. Se você precisa encolher, use gzip, brotli ou um codec específico de domínio, depois Base64-codifique os bytes compactados se precisar transportá-los como texto.

More encoding tools