Pular para o conteúdo

Codificar e decodificar Base64

Base64 Encoder & Decoder

Codifica e decodifica Base64 e Base64URL para texto ou arquivos, tratando UTF-8 corretamente.

Codifica texto ou um arquivo inteiro em Base64, e decodifica de volta — incluindo URIs `data:` e o alfabeto seguro para URL que um JWT usa. O texto passa primeiro por UTF-8, que é a parte que o `btoa` embutido do navegador não consegue fazer de jeito nenhum.

🔒 Roda inteiramente no seu navegadorbase64encodedecode
Modo
Alfabeto

O alfabeto +/, como no MIME.

Texto ou arquivo de entrada

Solte qualquer arquivo

Lido nesta aba. Nada é enviado.

Base64 de saída

0 caracteres de Base64.

O texto é codificado como UTF-8 antes de virar Base64, e é por isso que o “€” e os emoji sobrevivem à ida e volta. O btoa do próprio navegador não dá conta disso — recusa de saída qualquer caractere acima de U+00FF, embora deixe passar o “ç” e o devolva como “ç” —, então o codificador daqui foi escrito, não emprestado.

Como usar

  1. Digite ou solte o que você tiver

    A caixa de texto aceita qualquer texto; a área de soltar aceita qualquer arquivo e o codifica em fatias, para que um arquivo grande não congele a aba. Se você colar algo que já parece Base64 no modo codificar, a página oferece trocar de modo.

  2. Escolha o alfabeto

    Base64 é o alfabeto `+/` do MIME. Base64URL é o `-_`, que é o que vai em um caminho de URL ou em um segmento de JWT. Eles não são intercambiáveis: um decodificador de um rejeita o outro.

  3. Decida sobre o padding e a quebra de linha

    O `=` final é exigido por alguns parsers e proibido em um JWT. Quebrar em 76 é o comprimento de linha do MIME, que importa quando a saída vai para um cabeçalho de e-mail ou para um arquivo no formato PEM, e em nenhum outro lugar.

  4. Pegue o data URI se foi para isso que você veio

    Um arquivo solto também produz um URI `data:` com seu tipo MIME, e o painel mostra quanto ele ficou maior que o arquivo — cerca de um terço, que é o número que decide se embutir é uma boa ideia.

Perguntas frequentes

Por que acentos e cedilha saem certos aqui e quebram em outros lugares?

Porque o texto é convertido em bytes UTF-8 antes de virar Base64. O `btoa` do navegador codifica um “ç” como um único byte Latin-1, que decodificado como UTF-8 sai como “ç”, e lança uma exceção com qualquer caractere acima de U+00FF, como “€” ou um emoji; a gambiarra comum — `unescape(encodeURIComponent(…))` — é o que a maioria dos sites usa e erra em silêncio. O codificador daqui foi escrito para evitar as duas coisas.

Base64 é criptografia?

Não, e isso importa. É uma codificação: qualquer um pode decodificar, inclusive esta página. Uma senha ou um token em Base64 está à vista de todos. Se você quer sigilo, a ferramenta de criptografia de texto deste site faz AES-GCM com uma frase secreta.

A saída decodificada está vazia, mas não houve erro.

Então os bytes decodificaram bem, mas não são texto UTF-8: um PNG, um zip, um protobuf. Nesse caso o painel muda para uma pré-visualização hexadecimal e um botão de download; a caixa de texto não tem nada para mostrar porque não há texto.

Que tamanho de arquivo posso codificar?

A codificação em si é feita em pedaços e não trava a página, mas o resultado é uma única string um terço maior que o arquivo, e ela vive inteira na memória. Com dezenas de megabytes é quando uma aba do navegador começa a reclamar, e um URI `data:` desse tamanho não serve em lugar nenhum de qualquer forma.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.