encode | file | copy

> base64 encoder | texto | arquivo <

// Codifique texto, UTF-8, JSON, imagens ou qualquer arquivo em Base64 — padrão, seguro para URL, com ou sem preenchimento. 100% no lado do cliente. Arraste e solte um arquivo de até 100 MB.

0 caracteres
[TEXT]

Codificação de texto e UTF-8

Codifica texto simples, caracteres multibyte UTF-8, emoji, JSON, XML e HTML. Usa o TextEncoder nativo para UTF-8 preciso em nível de byte.

[FILE]

Arquivo para Base64

Arraste e solte ou clique para enviar qualquer arquivo (PNG, JPG, PDF, ZIP, binário) de até 100 MB. Produz Base64 puro — copie diretamente para Data URIs, APIs JSON ou HTML.

[VARIANTS]

Seguro para URL + sem preenchimento

Ative <code>--url-safe</code> para produzir Base64 compatível com JWT/OAuth usando o alfabeto <code>-_</code>. Ative <code>--no-padding</code> para remover os <code>=</code> finais.

// COMO FUNCIONA A CODIFICAÇÃO BASE64

Algoritmo de codificação Base64:

O Base64 pega 3 bytes de entrada (24 bits), divide-os em quatro grupos de 6 bits e mapeia cada grupo para um caractere do alfabeto de 64 caracteres (A-Z a-z 0-9 + /). Quando o comprimento da entrada não é múltiplo de 3, o preenchimento = é adicionado para que o comprimento da saída seja múltiplo de 4. O Base64 seguro para URL substitui + e / por - e _ — seguro em URLs, nomes de arquivo e JWT sem codificação percentual adicional.

Exemplo de codificação:

Text   : Hi!
Bytes  : 72 105 33
Bits   : 01001000 01101001 00100001
         010010 000110 100100 100001
B64    : S     G     k     h
Output : SGkh

Cenários comuns de codificação:

  • >Incorporar imagens inline em HTML/CSS (Data URIs)
  • >Produzir anexos de e-mail MIME (RFC 2045 §6.8)
  • >Construir cabeçalhos HTTP Basic Auth (Authorization: Basic ...)
  • >Criar cabeçalho/payload JWT (seguro para URL, sem preenchimento)
  • >Codificar payloads binários para APIs JSON que não conseguem transportar bytes brutos
  • >Construir code verifiers OAuth 2.0 e URLs pré-assinadas do S3

// PERGUNTAS FREQUENTES

Como codifico texto para Base64 online?

Digite ou cole seu texto na área ENTRADA acima. A codificação automática está ativada por padrão — o resultado Base64 aparece na caixa SAÍDA enquanto você digita. Clique em [ENCODE] ou pressione Ctrl/Cmd + Enter para acionar a codificação manualmente. Ative --url-safe ou --no-padding dependendo de onde o Base64 será usado (JWT, OAuth, URLs → ambos ativados). Tudo é executado localmente no seu navegador: sem uploads, sem logs, sem requisições de rede vinculadas à sua entrada.

Como codifico um arquivo (PNG, JPG, PDF, ZIP, binário) para Base64?

Clique no botão [upload file] abaixo da área de entrada e escolha um arquivo de até 100 MB. O codificador o lê com FileReader.readAsArrayBuffer, transmite os bytes por meio de btoa em blocos de 32 KB (para que arquivos grandes não travem o navegador) e escreve o Base64 completo na caixa SAÍDA. Para arquivos maiores, use um codificador de linha de comando: base64 < input.bin > output.txt (macOS/Linux) ou PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('input.bin')).

Se você quiser o Base64 formatado como uma Data URI (por exemplo, data:image/png;base64,...), anteponha o tipo MIME e ;base64, à saída, ou use nossa ferramenta dedicada Imagem para Base64, que produz Data URIs prontas para colar para PNG, JPG, GIF, WebP e SVG.

Qual é a diferença entre Base64 padrão, seguro para URL e sem preenchimento?

Todas as três são definidas na RFC 4648:

Base64 padrão (§4) usa o alfabeto A-Z a-z 0-9 + / com preenchimento =. O comprimento da saída é sempre múltiplo de 4. Seguro para MIME, HTTP Basic Auth e valores de string JSON.

Base64 seguro para URL (§5) substitui + por - e / por _. Necessário quando o Base64 é colocado em caminhos de URL, parâmetros de consulta, nomes de arquivo ou segmentos JWT — os caracteres padrão +/ precisariam, caso contrário, de codificação percentual.

Sem preenchimento (tanto §4 quanto §5, base64url sem preenchimento) remove os caracteres = finais. O comprimento não é mais múltiplo de 4, mas os decodificadores podem calcular o comprimento original a partir do resto módulo 4. Usado por JWT (base64url conforme a RFC 7515), WebAuthn e algumas implementações CBOR/COSE.

Os decodificadores precisam saber qual variante esperar — nosso Decodificador Base64 detecta automaticamente todas as três.

Como codifico Base64 no código (JavaScript, Python, PHP, Go, Java)?

Toda linguagem e runtime importante vem com codificação Base64. Trechos prontos para copiar e colar:

JavaScript (browser):
btoa('Hello') // SGVsbG8=
// Para UTF-8:
btoa(String.fromCharCode(...new TextEncoder().encode(s))) // seguro para UTF-8


Node.js:
Buffer.from('Hello', 'utf-8').toString('base64') // SGVsbG8=
Buffer.from(bytes).toString('base64url') // seguro para URL, sem preenchimento


Python:
import base64
base64.b64encode(b'Hello').decode() # SGVsbG8=
base64.urlsafe_b64encode(b'Hello').decode().rstrip('=') # seguro para URL sem preenchimento


PHP: base64_encode('Hello')
Ruby: Base64.strict_encode64('Hello') / Base64.urlsafe_encode64('Hello')
Go: base64.StdEncoding.EncodeToString([]byte("Hello")) / base64.URLEncoding.EncodeToString(...) / base64.RawURLEncoding.EncodeToString(...) (sem preenchimento)
Java: Base64.getEncoder().encodeToString("Hello".getBytes(StandardCharsets.UTF_8))
C#: Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello"))
Rust: base64::engine::general_purpose::STANDARD.encode("Hello")

Shell (macOS/Linux): echo -n 'Hello' | base64SGVsbG8=. Use base64 -w 0 no Linux para suprimir a quebra de linha em 76 colunas.

Qual o tamanho da saída Base64 em comparação com a entrada? Quando NÃO devo usar Base64?

A saída Base64 é ~33% maior que a entrada: cada 3 bytes de entrada tornam-se 4 caracteres de saída. Fórmula exata: ceil(n / 3) × 4 incluindo o preenchimento, ou ceil(n × 4 / 3) sem. Além de alguns bytes a mais de sobrecarga se você quebrar linhas em 76 colunas (MIME) ou 64 colunas (PEM).

Exemplos:
• 1 KB binário → ~1,37 KB Base64
• 100 KB imagem → ~137 KB Data URI
• 1 MB PDF → ~1,37 MB Base64 em JSON

Quando evitar o Base64:
Transferências de arquivos grandes: uma imagem de 10 MB incorporada como Base64 em HTML torna-se 13,7 MB de texto analisado, bloqueia a thread principal e não pode ser armazenada em cache separadamente. Prefira <img src="/assets/photo.png">.
APIs críticas em desempenho: um payload Base64 de 500 KB em JSON é analisado ~2-3× mais lentamente que um endpoint binário equivalente.
Como medida de segurança: o Base64 não é criptografia — qualquer um pode decodificá-lo. Use AES-GCM ou similar para confidencialidade.
BLOBs de banco de dados: armazene bytes brutos como BLOB/BYTEA, não como texto Base64, para economizar 33% de armazenamento e evitar ciclos de codificação/decodificação.

Como codifico texto para Base64 seguro para URL para um JWT ou parâmetro OAuth?

JWT (RFC 7515) e OAuth PKCE (RFC 7636) usam ambos Base64 seguro para URL sem preenchimento, frequentemente chamado de base64url. Para produzi-lo nesta ferramenta: ative as caixas de seleção --url-safe e --no-padding, depois codifique seu texto.

Equivalentes programáticos:
• JavaScript: btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
• Node.js: Buffer.from(s).toString('base64url')
• Python: base64.urlsafe_b64encode(s.encode()).decode().rstrip('=')
• Go: base64.RawURLEncoding.EncodeToString([]byte(s))
• Java: Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)

Campos JWT comuns que precisam de base64url: os três segmentos separados por ponto (cabeçalho, payload, assinatura), OAuth PKCE code_verifier/code_challenge, desafios WebAuthn, chaves Web Push p256dh/auth e os parâmetros Request.state do Google.

Um bug comum é enviar um JWT com Base64 padrão (+/) — as APIs o rejeitam como malformado porque o + é decodificado de URL para um espaço durante o trânsito.

Posso codificar uma Data URI (data:image/png;base64,...) com esta ferramenta?

Sim, com uma ressalva. Este codificador produz a parte Base64 de uma Data URI — a parte após ;base64,. Para construir uma Data URI completa, anteponha:

data:<mime-type>;base64,<encoded-output>

Tipos MIME comuns:
data:image/png;base64,... — imagem PNG
data:image/jpeg;base64,... — imagem JPEG
data:image/svg+xml;base64,... — SVG (ou use data:image/svg+xml;utf8, sem Base64 — geralmente menor)
data:application/pdf;base64,... — arquivo PDF
data:application/font-woff2;base64,... — incorporação de fonte
data:text/plain;charset=utf-8;base64,... — texto encapsulado em Base64

Para imagens e SVGs, a ferramenta Imagem para Base64 emite a Data URI completa pronta para colar em CSS background-image, inline <img src="..."> ou tags <object data="...">.

Aviso de tamanho: Data URIs acima de 20-30 KB prejudicam o LCP (Largest Contentful Paint) porque o navegador não consegue pré-carregá-las — mantenha imagens Base64 inline pequenas e prefira <img> regular com loading="lazy" para ativos maiores.

Este codificador Base64 é seguro para texto sensível e chaves de API?

Sim — nada sai do seu navegador. O codificador é executado inteiramente em JavaScript usando as APIs nativas btoa(), TextEncoder e FileReader. Não há chamadas de rede sobre o conteúdo da entrada, sem telemetria, sem logging, sem análises de terceiros sobre o que você codifica. Você pode abrir a aba Network no DevTools enquanto codifica e observar zero requisições relacionadas.

No entanto, o Base64 não é criptografia — é uma codificação reversível, e qualquer um com a saída pode decodificá-la. Portanto:
Não cole segredos de produção em chat, capturas de tela ou logs, mesmo em formato codificado.
• Para HTTP Basic Auth, o cabeçalho Base64 Authorization: Basic só é seguro sobre TLS (HTTPS). Sobre HTTP em texto puro, ele é trivialmente interceptável.
• Para confidencialidade real, use AES-GCM, age, sops ou um KMS — depois codifique o texto cifrado em Base64 para transporte, se necessário.

Para políticas rígidas de exfiltração de dados, salve esta página offline (Cmd/Ctrl + S). O codificador funciona totalmente isolado após um carregamento, já que não há dependência de servidor.

Posso codificar arquivos muito grandes para Base64? Quais são os limites do navegador?

O codificador suporta arquivos de até 100 MB por meio do limite rígido no manipulador de arquivos — grande o suficiente para a maioria das imagens, PDFs, arquivos ZIP e até vídeos curtos. Metas de desempenho:

< 1 MB: a codificação é concluída em <50 ms, sem travamento da interface.
1 – 10 MB: 100-500 ms dependendo da CPU. O navegador permanece responsivo porque codificamos em blocos de 32 KB.
10 – 100 MB: 2-15 segundos. A área de texto de saída pode travar levemente ao colar/rolar strings Base64 tão grandes. Considere baixar a saída como um arquivo .txt pelo DevTools, se necessário.
> 100 MB: bloqueado — a sobrecarga de memória do navegador (bytes de entrada + string binária + string Base64 ≈ 3-4× o tamanho do arquivo) corre o risco de travar a aba. Use:

# macOS / Linux
base64 -i huge.bin -o huge.b64

# Windows PowerShell
$bytes = [IO.File]::ReadAllBytes('huge.bin')
[IO.File]::WriteAllText('huge.b64', [Convert]::ToBase64String($bytes))


Para fluxos de trabalho de streaming/multi-GB, consulte codificar arquivos grandes para Base64 para uma abordagem em blocos com Node.js/Python que evita carregar tudo na memória.

Qual codificação de caracteres este codificador Base64 usa para a entrada de texto?

Este codificador usa UTF-8, a mesma codificação usada pela web moderna, JSON, Linux, macOS e quase todas as linguagens de programação por padrão. Nos bastidores, o texto é passado por new TextEncoder().encode(input), que sempre produz bytes UTF-8, e só então é codificado em Base64.

Por que isso importa: a antiga função JavaScript btoa() só lida com Latin-1 e lança InvalidCharacterError em caracteres como é, ou 😀. Nosso wrapper cuida da conversão UTF-8 para você, de modo que emoji, chinês, japonês, coreano, árabe, cirílico e qualquer ponto de código Unicode sejam codificados corretamente.

Se você precisar de uma codificação diferente:
UTF-16 LE (nativo do Windows): raro — geralmente um sinal de interoperabilidade legada. Mesmo assim, use new TextEncoder({ fatal: true }).encode(s) e converta a montante.
ISO-8859-1 / Latin-1: mapeie manualmente os pontos de código 0-255 para bytes antes de codificar.
GB18030, Shift_JIS, EUC-KR: use uma biblioteca como iconv-lite no Node.js para transcodificar primeiro.

Uma armadilha sutil: se seus dados de origem já estiverem em uma codificação não UTF-8 (por exemplo, ao ler um dump MySQL legado), decodifique-os primeiro com o codec correto, depois recodifique para UTF-8 antes de aplicar o Base64 — caso contrário, o Base64 decodificado preservará o mojibake.

// RELATED TOOLS

// OTHER LANGUAGES