📥 Texto Original0 caracteres
📤 Base64 Codificado

📚 O que é Base64?

Base64 é um método de codificação que converte dados binários em uma representação textual usando apenas 64 caracteres ASCII imprimíveis (A-Z, a-z, 0-9, + e /). O nome "Base64" vem justamente desses 64 caracteres do alfabeto de codificação.

A codificação funciona agrupando bytes em blocos de 24 bits (3 bytes) e dividindo-os em 4 grupos de 6 bits cada. Cada grupo de 6 bits pode representar um valor de 0 a 63, correspondendo a um dos 64 caracteres do alfabeto Base64.

🔧 Como funciona a codificação?

Processo de Codificação (Encode):

  1. O texto é convertido para bytes (usando UTF-8)
  2. Os bytes são agrupados em blocos de 3 (24 bits)
  3. Cada bloco é dividido em 4 grupos de 6 bits
  4. Cada grupo de 6 bits é mapeado para um caractere Base64
  5. Se necessário, = é adicionado como padding no final

Processo de Decodificação (Decode):

  1. Cada caractere Base64 é convertido de volta para 6 bits
  2. Os grupos de 6 bits são reagrupados em bytes de 8 bits
  3. Os bytes são convertidos de volta para texto

💼 Casos de Uso Comuns

  • Emails (MIME): Anexos de email são codificados em Base64 para transmissão
  • Data URIs: Imagens embutidas em HTML/CSS usando data:image/png;base64,...
  • APIs REST: Transmissão de dados binários em JSON (que só aceita texto)
  • Autenticação: HTTP Basic Auth codifica credenciais em Base64
  • Tokens JWT: O payload de tokens JWT é codificado em Base64URL
  • Certificados: Certificados SSL/TLS usam formato PEM (Base64)

❓ Perguntas Frequentes

Base64 é criptografia?

Não! Base64 é apenas codificação, não criptografia. Qualquer pessoa pode decodificar Base64 facilmente. Nunca use Base64 para proteger dados sensíveis.

Por que o texto codificado fica maior?

Base64 aumenta o tamanho em aproximadamente 33%. Cada 3 bytes de entrada geram 4 caracteres de saída, pois estamos representando 8 bits com apenas 6 bits por caractere.

Para que serve o caractere = no final?

O = é usado como padding quando o número de bytes não é divisível por 3. Pode haver 0, 1 ou 2 caracteres = no final.

Meus dados são seguros?

Sim! Todo o processamento é feito localmente no seu navegador. Nenhum dado é enviado para nossos servidores.

📝 Exemplos de Código

Veja como implementar codificação e decodificação Base64 em diferentes linguagens de programação:

💛 JavaScript (Node.js e Browser)

// Codificar para Base64 (com suporte a UTF-8)
const texto = "Olá, mundo! 🌍";
const encoded = btoa(unescape(encodeURIComponent(texto)));
console.log(encoded); // "T2zDoSwgbXVuZG8hIPCfjI0="

// Decodificar de Base64
const decoded = decodeURIComponent(escape(atob(encoded)));
console.log(decoded); // "Olá, mundo! 🌍"

// Node.js (usando Buffer)
const encodedNode = Buffer.from(texto).toString('base64');
const decodedNode = Buffer.from(encodedNode, 'base64').toString('utf8');

🐍 Python

import base64

texto = "Olá, mundo! 🌍"

# Codificar para Base64
encoded = base64.b64encode(texto.encode('utf-8')).decode('utf-8')
print(encoded)  # "T2zDoSwgbXVuZG8hIPCfjI0="

# Decodificar de Base64
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)  # "Olá, mundo! 🌍"

🟣 C# (.NET)

using System;
using System.Text;

string texto = "Olá, mundo! 🌍";

// Codificar para Base64
byte[] bytes = Encoding.UTF8.GetBytes(texto);
string encoded = Convert.ToBase64String(bytes);
Console.WriteLine(encoded); // "T2zDoSwgbXVuZG8hIPCfjI0="

// Decodificar de Base64
byte[] decodedBytes = Convert.FromBase64String(encoded);
string decoded = Encoding.UTF8.GetString(decodedBytes);
Console.WriteLine(decoded); // "Olá, mundo! 🌍"

☕ Java

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

String texto = "Olá, mundo! 🌍";

// Codificar para Base64
String encoded = Base64.getEncoder()
    .encodeToString(texto.getBytes(StandardCharsets.UTF_8));
System.out.println(encoded); // "T2zDoSwgbXVuZG8hIPCfjI0="

// Decodificar de Base64
byte[] decodedBytes = Base64.getDecoder().decode(encoded);
String decoded = new String(decodedBytes, StandardCharsets.UTF_8);
System.out.println(decoded); // "Olá, mundo! 🌍"

🐘 PHP

<?php
$texto = "Olá, mundo! 🌍";

// Codificar para Base64
$encoded = base64_encode($texto);
echo $encoded; // "T2zDoSwgbXVuZG8hIPCfjI0="

// Decodificar de Base64
$decoded = base64_decode($encoded);
echo $decoded; // "Olá, mundo! 🌍"
?>

⚠️ Erros Comuns em Base64

Confundir codificação com criptografia

Base64 não é criptografia! Qualquer pessoa pode decodificar. Não use para esconder senhas ou dados sensíveis. Para segurança, use criptografia real (AES, RSA).

Problemas com caracteres especiais

// ❌ Errado - btoa() não suporta Unicode diretamente
btoa("Olá! 🌍"); // Erro: caractere não Latin-1

// ✅ Correto - codifique UTF-8 primeiro
btoa(unescape(encodeURIComponent("Olá! 🌍")));

// Ou em Node.js:
Buffer.from("Olá! 🌍").toString("base64");

Strings Base64 inválidas

// Causas comuns de erro ao decodificar:
// 1. Caracteres inválidos (só A-Z, a-z, 0-9, +, /, =)
// 2. Múltiplas codificações (Base64 de Base64)
// 3. Padding incorreto (= no final)
// 4. String truncada

// Válido:   "SGVsbG8gV29ybGQh"
// Inválido: "SGVsbG8gV29ybGQh!" (! não é Base64)

Base64 URL-safe vs Padrão

// Base64 padrão usa + e / que precisam de URL encoding
// Base64 URL-safe substitui: + → - e / → _

// Padrão:   "a+b/c="
// URL-safe: "a-b_c="

// Converter para URL-safe:
base64.replace(/\+/g, '-').replace(/\//g, '_');