Codificação Base64

Texto de entrada
0 caracteres

Ferramenta online gratuita para codificar e decodificar Base64. Suporta UTF-8/ASCII/ISO-8859-1 e as variantes Standard, URL-Safe e MIME. Exibe taxa de expansão em tempo real e segue o padrão RFC 2045 para quebras MIME.

Sugestões Relacionadas

O que é a codificação Base64?

Base64 é um esquema de codificação binário-para-texto baseado em 64 caracteres ASCII imprimíveis, definido originalmente pela RFC 2045 (padrão MIME). O Base64 converte cada 3 bytes (24 bits) em 4 caracteres Base64 (A-Z, a-z, 0-9, +, /), permitindo que dados binários sejam transportados com segurança por sistemas que só aceitam texto, como cabeçalhos HTTP, payloads JSON, documentos XML ou parâmetros de consulta em URL.

**Base64 não é criptografia**, ele apenas realiza uma conversão de formato; qualquer pessoa pode decodificá-lo facilmente. Se você precisa proteger dados sensíveis, use um esquema de criptografia de verdade, como o AES. Os usos típicos do Base64 incluem: HTTP Basic Authentication (`Authorization: Basic dXNlcjpwYXNz`), os segmentos header e payload de tokens JWT (formato Base64URL), Data URIs (`data:image/png;base64,...`) e a codificação MIME de anexos de e-mail.

**URL-Safe Base64** (RFC 4648 §5) substitui os caracteres +/ do Base64 padrão por -_ e geralmente omite o padding =. Com isso, o resultado codificado pode ser usado com segurança em URLs, caminhos de arquivo ou campos JSON. Tokens JWT, o code_verifier do OAuth PKCE e o AWS Signature V4 usam a codificação URL-Safe Base64.

**A quebra de linha MIME** é um padrão definido na RFC 2045 que limita cada linha a no máximo 76 caracteres. Quando o conteúdo Base64 é usado em e-mails ou em cenários que exigem exibição em várias linhas, a variante MIME insere automaticamente uma quebra de linha (`\n`) a cada 76 caracteres. Esse é o formato padrão para transporte de anexos de e-mail.

A ferramenta usa a **API nativa btoa/atob** do navegador, combinada com uma lógica de tratamento segura para UTF-8, garantindo que caracteres multibyte como chinês, japonês e emoji sejam codificados corretamente. Todo o processamento acontece localmente, sem enviar dados a nenhum servidor. Abra o painel Network das ferramentas de desenvolvedor do navegador para confirmar que nenhuma requisição externa é feita durante o processo.

Casos de uso

  • Depuração de JWT: decodifique os segmentos header e payload do JWT (formato Base64URL) para inspecionar o conteúdo das claims do token
  • Basic Auth: codifique username:password para gerar credenciais de autenticação HTTP Basic
  • Desenvolvimento OAuth: gere o code_verifier ou valide o code_challenge em fluxos PKCE
  • Depuração de API: codifique dados JSON ou decodifique o conteúdo de campos Base64 retornados por uma API
  • Embutir imagens via Data URI: converta ícones pequenos para o formato data:image/...;base64,... e embuta em CSS/HTML
  • Codificação de anexos de e-mail: codifique anexos binários no formato MIME Base64 para envio por e-mail

Como Usar

  1. Escolha o modo: clique em Encode (codificar) ou Decode (decodificar) para alternar a direção do processamento
  2. Escolha a variante: Standard (padrão), URL-Safe (JWT/OAuth) ou MIME (formato de e-mail com quebra a cada 76 caracteres)
  3. Insira o conteúdo: cole o texto ou a string Base64; o processamento acontece automaticamente em tempo real
  4. Acompanhe as estatísticas: na parte inferior são exibidos a contagem de caracteres e a taxa de expansão (a codificação aumenta o volume em cerca de 33%)
  5. Copie o resultado: copie com um clique a string Base64 ou o texto decodificado

Recursos

  • Alternar Encode/Decode com um clique: troque livremente entre codificar e decodificar; a saída vira a entrada, suportando processamento cíclico
  • Suporte a três conjuntos de caracteres: UTF-8 (chinês/japonês/emoji), ASCII e ISO-8859-1, com cobertura profissional para múltiplos cenários
  • Saída em três variantes: Standard (padrão), URL-Safe (seguro para JWT/OAuth/PKCE) e MIME (padrão RFC 2045 com quebra a cada 76 caracteres)
  • Estatísticas de volume em tempo real: mostra contagem de caracteres de entrada/saída e a taxa de expansão (Base64 aumenta o volume em cerca de 33%)
  • Mensagens de erro claras: quando os caracteres estão fora do intervalo válido, mostra detalhes específicos em vez de um erro genérico
  • Divisor arrastável: no desktop é possível ajustar a proporção das áreas de edição esquerda e direita para focar na tarefa atual
  • Abas independentes no celular: usuários de smartphone e tablet alternam separadamente entre a área de entrada e a de saída, com experiência fluida

Exemplos de Código

Codificação Base64 em JavaScript (suporta UTF-8 em chinês)

// Encode (supports UTF-8 Chinese)
function b64Encode(str) {
  return btoa(unescape(encodeURIComponent(str)));
}

// Decode (supports UTF-8 Chinese)
function b64Decode(str) {
  return decodeURIComponent(escape(atob(str)));
}

// URL-Safe encode (for JWT / OAuth)
function b64UrlEncode(str) {
  return btoa(unescape(encodeURIComponent(str)))
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/, '');
}

console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界

Codificação Base64 em Python

import base64

# Standard encode (UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode())  # SGVsbG8g5LiW55WM

# Standard decode
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)  # Hello 世界

# URL-Safe encode (for JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode())  # SGVsbG8g5LiW55WM (no padding, must be removed manually)

# Remove padding (standard JWT practice)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)

Codificação Base64 em Java

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String text = "Hello 世界";

        // Standard encode
        String encoded = Base64.getEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(encoded); // SGVsbG8g5LiW55WM

        // Standard decode
        String decoded = new String(
            Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(decoded); // Hello 世界

        // URL-Safe encode (for JWT / URL)
        String urlSafe = Base64.getUrlEncoder().withoutPadding()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(urlSafe);

        // MIME encode (76-character line breaks)
        String mime = Base64.getMimeEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
    }
}

Perguntas frequentes

Codificação Base64 é a mesma coisa que criptografia?

Não. O Base64 apenas converte texto em outra representação reversível; qualquer pessoa pode decodificá-lo de volta ao texto original. Se envolve dados sensíveis (senhas, tokens), use um esquema de criptografia de verdade, como o AES. O Base64 serve apenas para conversão de formato de dados, facilitando o transporte de dados binários por sistemas baseados em texto.

Ferramenta de criptografia AES

De quanto é o aumento de volume após a codificação Base64?

A codificação Base64 aumenta o volume dos dados originais em cerca de 33%. Isso acontece porque cada 3 bytes (24 bits) são codificados em 4 caracteres Base64. Por exemplo, um texto de 100 bytes passa a ter aproximadamente 133 bytes após a codificação. A parte inferior da ferramenta mostra a taxa de expansão em tempo real, para você avaliar o tamanho dos dados. Exemplo: `Hello` → `SGVsbG8=` (volume +33%).

Ferramenta de estatísticas Base64

Qual a diferença entre as variantes Standard, URL-Safe e MIME?

Standard é o Base64 padrão, que usa os caracteres A-Z, a-z, 0-9, +, /. URL-Safe substitui +/ por -_, sendo adequado para parâmetros de URL e tokens JWT. O MIME insere quebras de linha a cada 76 caracteres, em conformidade com o padrão RFC 2045 para transmissão de e-mails, sendo ideal para anexos de e-mail e textos com várias linhas.

URL-Safe Base64MIME Base64

Como decodificar o header ou payload de um JWT?

O JWT usa a codificação Base64URL (variante URL-Safe). Depois de selecionar o modo URL-Safe, basta colar o primeiro segmento (header) ou o segundo segmento (payload) do JWT para decodificá-lo. Atenção: o terceiro segmento do JWT é a assinatura e não deve ser decodificado nem validado por aqui.

Ferramenta JWT

O que é o Padding (preenchimento) do Base64?

O resultado da codificação Base64 deve ter comprimento múltiplo de 4. Quando o tamanho da entrada não é múltiplo de 3, o final é preenchido com o caractere =. A variante URL-Safe não usa padding. A ferramenta lida automaticamente com o padding e também remove os caracteres = durante a decodificação.

Ferramenta de Padding Base64

Por que btoa e atob em JavaScript não suportam chinês?

btoa e atob são APIs nativas do navegador que operam no conjunto Latin-1 (ISO-8859-1), onde cada caractere ocupa 1 byte. Os caracteres chineses ocupam 3 bytes em UTF-8, então passá-los diretamente gera erro. A solução é usar primeiro encodeURIComponent para converter o texto chinês para a sequência de bytes UTF-8 no formato %xx, depois usar unescape para transformá-lo em uma string Latin-1 e, por fim, aplicar btoa para codificar.

O que é o Data URI Scheme? Como embutir imagens com Base64?

Data URI é um formato URI que permite embutir dados diretamente em uma URL, com a sintaxe: `data:[<mediatype>][;base64],<data>`. Exemplo: `data:image/png;base64,iVBORw0KGgo...`. É muito usado para embutir pequenos ícones, imagens de fundo em CSS etc., reduzindo o número de requisições HTTP. Porém, o Base64 aumenta o volume em 33%, então só vale a pena para arquivos pequenos; arquivos grandes devem continuar usando URLs normais.

Ferramenta Data URIBase64 para imagem

Glossário

RFC 4648
Padrão oficial de codificação Base16/Base32/Base64 publicado pelo IETF. Define dois alfabetos — Base64 padrão e Base64 URL-Safe — além de regras de padding, quebras de linha e tratamento de caracteres fora do alfabeto. É o padrão de fato atual para codificação Base64, substituindo o antigo RFC 3548.Ferramenta URL-Safe Base64Ferramenta de Padding Base64
RFC 2045 (MIME)
Padrão MIME (Multipurpose Internet Mail Extensions) que foi o primeiro a adotar o Base64 como codificação para o transporte de conteúdo em e-mails. Define que a codificação Base64 não pode ultrapassar 76 caracteres por linha, com quebras CRLF — conhecida como variante MIME Base64.Ferramenta MIME Base64
Base64URL (URL-Safe Base64)
Variante segura para URL definida na RFC 4648 §5. Substitui o + do Base64 padrão por - e o / por _, e normalmente omite o caractere de padding =. É amplamente usada em tokens JWT, OAuth PKCE, parâmetros de URL e nomes de arquivo.Ferramenta URL-Safe Base64Ferramenta JWT
MIME Base64
Variante de Base64 em conformidade com a RFC 2045, que insere um caractere de quebra de linha (CRLF) a cada 76 caracteres. É usada principalmente para o transporte de anexos de e-mail, pois o protocolo SMTP antigo tinha limites de comprimento por linha.Ferramenta MIME Base64
Padding (preenchimento)
O resultado da codificação Base64 deve ter comprimento múltiplo de 4. Quando a quantidade de bytes de entrada não é múltipla de 3, o final é preenchido com o caractere =. O Base64 padrão usa padding; o Base64URL normalmente o omite.Ferramenta de Padding Base64
Alfabeto Base64
Conjunto de 64 caracteres usados na codificação Base64. O alfabeto padrão é formado por: A-Z (26), a-z (26), 0-9 (10), + e / — totalizando 64 caracteres — mais o caractere de preenchimento =.
btoa / atob
APIs nativas do navegador para codificar e decodificar Base64. btoa (binary to ASCII) é usada para codificar; atob (ASCII to binary), para decodificar. Essas APIs suportam apenas o conjunto Latin-1; para tratar chinês é preciso combiná-las com transcodificação UTF-8.
Data URI Scheme
Formato URI que permite embutir arquivos pequenos diretamente em uma URL, no formato data:[<mediatype>][;base64],<data>. É usado para embutir pequenos ícones e imagens de fundo em CSS, reduzindo o número de requisições HTTP.Ferramenta Data URIBase64 para imagem
HTTP Basic Authentication
Forma de autenticação no protocolo HTTP em que o nome de usuário e a senha são unidos por dois-pontos, codificados em Base64 e enviados no cabeçalho de requisição Authorization. O formato é: Authorization: Basic <base64(username:password)>.Construtor de Auth Header
Taxa de expansão do Base64
Proporção em que o volume dos dados aumenta após a codificação Base64. Cada 3 bytes (24 bits) viram 4 caracteres Base64, então o volume cresce cerca de 33% (4/3 ≈ 1,333). Com padding, a taxa de expansão fica um pouco maior.

Comparação das três variantes do Base64

CaracterísticaStandardURL-SafeMIME
Caracteres especiais+ /- _+ /
Padding (=)UsadoGeralmente omitidoUsado
Quebras de linhaNenhumaNenhumaA cada 76 caracteres
PadrãoRFC 4648 §4RFC 4648 §5RFC 2045
Casos típicosData URI, codificação geralJWT, parâmetros URL, nomes de arquivoAnexos de e-mail, transmissão SMTP

Tabela comparativa das codificações da família Base

CodificaçãoNº de caracteresConjunto de caracteresExpansão de volumeUso típico
Base16 (Hex)160-9, A-F100%Depuração, exibição de hashes
Base3232A-Z, 2-7 (sem ambiguidade)60%DNS, chaves TOTP, QR codes
Base5858Remove 0/O/I/l confundíveis38%Endereços Bitcoin, criptomoedas
Base6262A-Z, a-z, 0-934%Encurtadores de URL, IDs
Base6464A-Z, a-z, 0-9, +, /33%Data URI, MIME, JWT (variante URL-Safe)

Authoritative References