Codificador e Decodificador Base64

Codifique texto para Base64 ou decodifique Base64 para texto diretamente no navegador. Suporte completo a UTF-8, emojis e caracteres acentuados. Processamento 100% local.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

Base64 é codificação, não criptografia.

Qualquer pessoa pode decodificar o conteúdo instantaneamente. Não use Base64 para proteger dados sensíveis, senhas ou informações confidenciais. O processamento é local no navegador; nenhum dado é enviado para servidor.

O Base64URL (RFC 4648, seção 5) troca + por -, / por _ e dispensa o =. É o formato usado em URL, em nome de arquivo e no JWT.

Limite: 100.000 caracteres

Como cada texto fica em Base64 e em Base64URL

Deslize a tabela para o lado: são 5 colunas.

Exemplos de texto com o tamanho em bytes UTF-8, o resultado em Base64 padrão, o resultado em Base64URL e o número de caracteres
TextoBytesBase64Base64URLCaracteres
f1Zg==Zg4
fo2Zm8=Zm84
foo3Zm9vZm9v4
foob4Zm9vYg==Zm9vYg8
fooba5Zm9vYmE=Zm9vYmE8
foobar6Zm9vYmFyZm9vYmFy8
ç2w6c=w6c4
ação6YcOnw6NvYcOnw6Nv8
você?6dm9jw6o/dm9jw6o_8
Aladdin:open sesame19QWxhZGRpbjpvcGVuIHNlc2FtZQ==QWxhZGRpbjpvcGVuIHNlc2FtZQ28

As 6 primeiras linhas são os vetores de teste da RFC 4648 (seção 10), e a última é o exemplo de usuário e senha da RFC 7617 (seção 2). Todas foram calculadas pelo mesmo motor da ferramenta.

Em resumo

O Base64 lê o texto em bytes UTF-8, de 3 em 3 bytes, e escreve cada bloco com 4 caracteres de um alfabeto de 64 símbolos: A a Z, a a z, 0 a 9, + e /. Por isso o resultado fica cerca de 33% maior que o original, e o sinal de igual completa o último bloco quando faltam bytes. Letra acentuada ocupa 2 bytes: "ação" tem 4 letras, 6 bytes e vira YcOnw6Nv, com 8 caracteres.

O Base64URL, da seção 5 da RFC 4648 (outubro de 2006), troca o + por - e a / por _ e dispensa o sinal de igual. É o formato do JWT. Na decodificação, a página reconhece os dois alfabetos, ignora as quebras de linha que vêm de e-mail e, quando os bytes não formam texto, mostra os bytes em hexadecimal em vez de inventar caracteres. O campo aceita até 100.000 caracteres, e nada sai do navegador. Base64 não protege nada: qualquer pessoa desfaz a conversão sem chave.

Outras ferramentas de dados e formatos

  • Formatador de JSONFormate, valide e minifique JSON sem que um número grande mude de valor nem uma chave repetida desapareça. O erro vem com a linha e a coluna. Tudo no seu navegador.
  • Conversor de dadosConverta CSV, JSON, YAML e XML sem perder dado: CPF com zero na frente e número grande continuam inteiros, e toda transformação é avisada. Tudo no seu navegador.
  • CSV para JSONCole o CSV e receba o JSON no navegador, com o delimitador reconhecido sozinho, com ou sem cabeçalho, prévia em tabela e download local. CPF com zero à frente e número grande continuam intactos.
  • Codificar e decodificar URLCodifique, decodifique e analise URLs completas no navegador. Separa protocolo, host, porta, caminho, query string e fragmento. Usa APIs nativas, processamento 100% local, sem fetch externo.
  • Conversor de timestamp UnixConverta Timestamp Unix para data/hora legível ou vice-versa. Suporte a segundos e milissegundos. Exibe ISO 8601, UTC, data e hora local. Processamento 100% local no navegador.
  • Conversor binário, decimal e hexadecimalConverta números entre decimal, binário, hexadecimal e octal instantaneamente. Informe o valor e a base de origem e veja todas as representações em paralelo. Processamento 100% local.

Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.

Gostou? Mostre pra todo mundo

Gere um card bonito com a marca do ValorFinal para postar nos Stories ou mandar no WhatsApp. Nada que você digitou aparece no card.

Coloque no seu site

Cole o texto e escolha o sentido: codificar transforma o texto em Base64, decodificar faz o caminho de volta. Dá para usar o alfabeto padrão ou o Base64URL, que é o do JWT e o que cabe dentro de uma URL. Tudo local no navegador.

Como funciona a conversão Base64

O texto primeiro vira bytes em UTF-8. Os bytes são lidos de 3 em 3 (24 bits), cada bloco é fatiado em 4 grupos de 6 bits, e cada grupo vira um caractere do alfabeto de 64 posições. Quando o último bloco não tem 3 bytes, entra o sinal de igual como preenchimento. É por isso que o resultado sempre cresce cerca de um terço.

A RFC 4648 define dois alfabetos. O da seção 4 usa + e /. O da seção 5, chamado Base64URL, troca esses dois por - e _ e costuma omitir o =, porque os três têm significado próprio em endereço e em query string. Ao decodificar, a ferramenta reconhece o alfabeto pela própria entrada e recompõe o preenchimento que faltar, então um cabeçalho de JWT colado aqui abre normalmente.

Base64 é codificação, não criptografia. Ela não protege nada: qualquer pessoa desfaz a conversão sem chave, sem senha e em um clique, inclusive nesta página. Serve para transportar bytes por um canal que só aceita texto, como e-mail, JSON e URL. Para proteger conteúdo, o caminho é criptografia de verdade. Para guardar senha, o caminho é um hash lento feito para senha, como Argon2id ou bcrypt; o gerador de hash SHA-256 serve para conferir se um texto mudou.

Para conferir o tamanho do texto antes e depois, use o contador de caracteres. Para ler o cabeçalho e o payload de um token, que são Base64URL, use o decodificador de JWT.

Fórmula

tamanho em Base64 = 4 x arredonda para cima(bytes / 3)

overhead = cerca de 33% sobre o tamanho original

Base: RFC 4648 (alfabeto padrão na seção 4 e Base64URL na seção 5) e RFC 2045 para a quebra de linha do MIME. Conversão local no navegador, sem envio de dados.

Base64 é criptografia? Não, e dá para conferir

Não. Base64 muda a forma de escrever os bytes, e qualquer pessoa desfaz a mudança sem chave. Quatro jeitos de conferir:

  1. A RFC 7617, de setembro de 2015, usa como exemplo o cabeçalho Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==. Cole QWxhZGRpbjpvcGVuIHNlc2FtZQ== na ferramenta, em Decodificar, e sai Aladdin:open sesame: o usuário e a senha. A seção 4 da mesma RFC diz que o esquema Basic não é um método seguro de autenticação e que o conteúdo trafega em texto claro.
  2. Não existe chave. A conversão recebe só o texto, então a mesma entrada dá sempre a mesma saída: "ação" vira YcOnw6Nv aqui, no terminal e em qualquer linguagem. Até o tamanho vaza: pelos 28 caracteres e pelos 2 sinais de igual no fim de QWxhZGRpbjpvcGVuIHNlc2FtZQ==, dá para saber que o original tinha exatamente 19 bytes.
  3. A própria norma admite. A RFC 4648, seção 12, afirma que a codificação esconde visualmente informação fácil de reconhecer, como senhas, mas não oferece nenhuma confidencialidade computacional.
  4. No Kubernetes, o campo data de um Secret guarda os valores em Base64, e o nome do objeto faz parecer que eles estão protegidos. A documentação do projeto avisa o contrário: por padrão, os Secrets ficam gravados sem criptografia no etcd, e quem tem acesso à API consegue lê-los.
Base64 serve para transporte. Se o conteúdo precisa ficar em segredo, quem protege é a criptografia com chave e o HTTPS no caminho, e não a codificação.

Limitações

  • Não é segurança: Base64 não esconde e não protege dado nenhum. Quem recebe o texto lê o conteúdo.
  • Não é compressão: o conteúdo codificado ocupa cerca de 33% a mais que o original.
  • A decodificação só devolve texto quando os bytes formam UTF-8 válido. Se forem binários (imagem, arquivo compactado, chave), a página mostra os bytes em hexadecimal e diz que não é texto, em vez de exibir caracteres remendados.
  • A entrada é limitada a 100.000 caracteres, para não travar o navegador.

Coloque esta ferramenta no seu site, de graça

Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.

Codificador Base64 para sitever todas as ferramentas para site

Calculadoras relacionadas

Guias sobre este tema

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Conversão auditável, com o fator de conversão à vista

Atualizado em . Fontes: RFC 4648 / MDN Web Docs.

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

O que é Base64?

Base64 é uma codificação que escreve bytes quaisquer usando só 64 caracteres de texto: A a Z, a a z, 0 a 9, + e /. Ela está definida na RFC 4648 e existe para transportar dado binário por canais que só aceitam texto, como e-mail (MIME), JSON, cabeçalho HTTP e URL. A conta é fixa: cada bloco de 3 bytes vira 4 caracteres, e o sinal = completa o último bloco quando faltam bytes. Por isso "foobar", com 6 bytes, vira Zm9vYmFy.

Base64 é uma forma de criptografia?

Não. Base64 é codificação, e qualquer pessoa desfaz a conversão sem chave e sem senha. A própria RFC 4648 diz, na seção 12, que ela esconde visualmente informação como senhas, mas não oferece confidencialidade nenhuma. O exemplo da RFC 7617 mostra o risco: QWxhZGRpbjpvcGVuIHNlc2FtZQ== volta a Aladdin:open sesame, que é usuário e senha. Para proteger conteúdo, use criptografia com chave, como AES. Para guardar senha, use um hash lento feito para senha, como Argon2id ou bcrypt.

Por que o Base64 aumenta o tamanho dos dados?

Porque cada caractere do Base64 carrega só 6 bits, e um byte tem 8. Para escrever 3 bytes (24 bits) são precisos 4 caracteres, e o resultado fica cerca de 33% maior que o original, mais o preenchimento com = no fim. O exemplo da RFC 7617 tem 19 bytes e vira 28 caracteres. Em texto curto a diferença parece maior: uma única letra "f" ocupa 4 caracteres (Zg==). Base64 também não comprime nada.

Esta ferramenta aceita acentos, emojis e caracteres especiais?

Sim. Antes de codificar, a ferramenta converte o texto em bytes UTF-8 com o TextEncoder do navegador, e na volta usa o TextDecoder. Letra acentuada ocupa 2 bytes, e emoji costuma ocupar 4. Por isso "ação", com 4 letras, tem 6 bytes e vira YcOnw6Nv. A função btoa() do JavaScript, sozinha, recusa qualquer caractere acima do código 255 e daria erro nesses casos. O limite do campo é de 100.000 caracteres.

Qual é a diferença entre Base64 e Base64URL?

O Base64URL, da seção 5 da RFC 4648, troca o + por - e a / por _, e costuma omitir o = do fim, porque esses três sinais têm função própria em endereço e em query string. Exemplo: "você?" vira dm9jw6o/ no alfabeto padrão e dm9jw6o_ no Base64URL. É o formato usado no JWT e em nomes de arquivo. Na decodificação, esta página detecta o alfabeto pela própria entrada e recompõe o = que faltar.

Meus dados são enviados para algum servidor?

Não. A conversão acontece no seu navegador, com as funções nativas TextEncoder, TextDecoder, btoa() e atob(). Nenhum texto é transmitido, gravado ou registrado, e a página continua funcionando se a internet cair depois que ela carregou. Mesmo assim, lembre que Base64 não protege nada: o texto codificado que você copiar daqui pode ser lido por qualquer pessoa que o receber, em qualquer decodificador.

Como decodificar Base64?

Escolha Decodificar (Base64 → texto), cole o conteúdo no campo e clique em Decodificar Base64. Não precisa dizer qual é o alfabeto: a página reconhece o padrão e o Base64URL, recompõe o = que faltar e ignora as quebras de linha que vêm de e-mail. Teste com QWxhZGRpbjpvcGVuIHNlc2FtZQ==, que volta a Aladdin:open sesame. Se a entrada misturar os dois alfabetos ou tiver caractere fora deles, a página diz qual é o problema em vez de devolver lixo.

Por que o Base64 termina com = ou ==?

O = é preenchimento. O Base64 trabalha em blocos de 3 bytes, e quando o último bloco tem só 1 byte entram dois sinais (==); com 2 bytes entra um (=); com 3 bytes, nenhum. Os vetores de teste da RFC 4648 mostram isso: f vira Zg==, fo vira Zm8= e foo vira Zm9v. Pelo comprimento e pelo número de sinais dá para saber o tamanho exato do original. O Base64URL costuma deixar o = de fora, e esta página aceita os dois jeitos na decodificação.

Dá para converter imagem em Base64 nesta página?

Não diretamente. O campo recebe texto digitado ou colado, e esta página não abre arquivo. Imagem em Base64 costuma aparecer como data URI, no formato data:image/png;base64, seguido do conteúdo, definido na RFC 2397. Se você colar só a parte depois da vírgula para decodificar, a página reconhece que os bytes não são texto e os mostra em hexadecimal; num PNG, os primeiros são 89 50 4E 47, a assinatura do formato.

O que significa Decodificado, mas não é texto UTF-8?

É a faixa amarela que aparece quando o Base64 está correto, mas os bytes que ele guarda não formam texto. Costuma ser imagem, arquivo compactado ou chave criptográfica. Em vez de trocar os bytes inválidos pelo losango com interrogação (o caractere U+FFFD) e fingir que deu certo, a página mostra cada byte em hexadecimal, separado por espaço. Quem precisa do arquivo original deve decodificar com uma ferramenta que grave bytes, como o comando base64 -d no terminal.

O que é o Overhead de codificação no quadro Informações?

É quanto o resultado cresceu em relação ao original, em porcentagem. Com "foobar" (6 bytes que viram 8 caracteres) o quadro mostra +33,3%. Com uma letra só, "f", mostra +300,0%, porque 1 byte ocupa um bloco inteiro de 4 caracteres. Na decodificação a mesma linha vira Redução de tamanho. Quando não há bytes de origem, a página escreve não se aplica em vez de uma porcentagem sem sentido.