# Códec Base64, Base32, Hex e Porcentual

> Codifica texto para Base64, Base64 seguro para URL, Base32, hexadecimal ou codificação porcentual, e decodifica qualquer um deles de volta. Tolera preenchimento e espaços em branco ausentes, e sinaliza resultados binários (não UTF-8). É executado inteiramente no seu navegador.

- Tool: https://ronutz.com/pt-BR/tools/base64
- Family: Codificação e dados

---

## O que faz

É um códec bidirecional para cinco codificações de texto. Digite um texto e ele retorna, de uma vez, as formas Base64, Base64 seguro para URL, Base32, hexadecimal e codificação porcentual; cole uma string codificada e ele decodifica de volta para texto. A decodificação é tolerante: aceita preenchimento e espaços em branco ausentes, e quando o fluxo de bytes decodificado não é texto UTF-8 válido, o resultado é sinalizado como binário em vez de ser exibido como caracteres corrompidos. Tudo roda no seu navegador; nada é enviado.

## As cinco codificações

Todas mapeiam entre texto (como bytes) e uma representação segura em ASCII, cada uma definida por um padrão:

- **Base64** (RFC 4648, seção 4) usa o alfabeto `A-Z a-z 0-9 + /` e completa com `=`. Aumenta os dados em cerca de um terço e é a codificação por trás das credenciais HTTP Basic, `base64(usuário:senha)`, definida na RFC 7617.
- **Base64 seguro para URL** (RFC 4648, seção 5) troca `+` e `/` por `-` e `_` e geralmente descarta o preenchimento `=`, de modo que a string fica segura dentro de URLs e nomes de arquivo. É a codificação usada em cada segmento de um JWT.
- **Base32** (RFC 4648, seção 6) usa `A-Z 2-7` e completa com `=`. Não diferencia maiúsculas de minúsculas e evita caracteres facilmente confundíveis, por isso aparece em lugares como segredos TOTP.
- **Hexadecimal (Base16)** (RFC 4648, seção 8) usa `0-9 A-F`, dois caracteres por byte.
- **Codificação porcentual** (RFC 3986, seção 2) mantém o conjunto de caracteres não reservados (`A-Z a-z 0-9 - . _ ~`) como está e codifica todos os outros bytes como `%XX`. É a codificação de URL.

## Preenchimento, espaços e resultados binários

Base64 e Base32 normalmente são preenchidos com `=` até um número inteiro de blocos, mas strings do mundo real frequentemente chegam sem o preenchimento ou com quebras de linha inseridas, então o decodificador aceita ambos. Quando você decodifica um valor cujos bytes não formam texto UTF-8 válido (um blob comprimido, uma imagem, uma chave bruta), a ferramenta avisa que o resultado é binário em vez de exibi-lo como texto corrompido, para que você saiba que a decodificação funcionou mesmo que o conteúdo não seja legível.

## Exemplos

- O texto `hello` vira Base64 `aGVsbG8=`, Base64 seguro para URL `aGVsbG8`, Base32 `NBSWY3DP`, hex `68656c6c6f` e codificação porcentual `hello` (todos os seus caracteres são não reservados).
- Decodificar o valor Base64 `dXNlcjpwYXNz`, uma credencial HTTP Basic típica, retorna `user:pass`.

## Como usar

Digite um texto para ver as cinco codificações lado a lado, ou cole um valor codificado para decodificá-lo. Como o códec é uma função pura da entrada, o mesmo texto sempre produz o mesmo resultado.

## Standards and references

- [RFC 4648 - The Base16, Base32, and Base64 Data Encodings](https://www.rfc-editor.org/rfc/rfc4648) - base64 (section 4), base64url (section 5), base32 (section 6), base16/hex (section 8) alphabets and padding
- [RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax](https://www.rfc-editor.org/rfc/rfc3986) - percent-encoding (section 2.1) and the unreserved set (section 2.3)
- [RFC 7617 - The Basic HTTP Authentication Scheme](https://www.rfc-editor.org/rfc/rfc7617) - base64(user:password) - a common reason to decode base64

## Related reading

- [Base16, Base32, Base64 e codificação por porcentagem comparadas](https://ronutz.com/pt-BR/learn/text-encodings-compared.md): Um olhar lado a lado para as quatro codificações de texto: seus alfabetos, sobrecarga de tamanho, legibilidade, e quando recorrer a cada uma.
- [Base32, explicado](https://ronutz.com/pt-BR/learn/base32.md): Por que o Base32 troca tamanho por um alfabeto sem ambiguidades e insensível a maiúsculas, como funciona seu agrupamento de 5 bits, e onde ele aparece (segredos TOTP, endereços onion, DNS).
- [Base64 e Base64URL, explicados](https://ronutz.com/pt-BR/learn/base64.md): Como dados binários viram texto seguro para transmitir, por que existe o preenchimento e o que muda na variante segura para URL.
- [Base64URL e o alfabeto seguro para URLs](https://ronutz.com/pt-BR/learn/base64url.md): Por que JWTs e PKCE usam um alfabeto Base64 diferente, os dois caracteres que mudam e o que acontece com o preenchimento.
- [Bytes, pontos de código e UTF-8](https://ronutz.com/pt-BR/learn/character-encoding.md): A diferença entre um caractere e um byte, por que existem o Unicode e o UTF-8, e o que isso tem a ver com o Base64.
- [Codificação hexadecimal (Base16), explicada](https://ronutz.com/pt-BR/learn/hex-encoding.md): Como o hexadecimal representa cada byte com dois caracteres, por que é a forma padrão de imprimir bytes brutos, e como ele se compara ao Base64 e ao Base32.
- [Codificação por porcentagem (codificação de URL), explicada](https://ronutz.com/pt-BR/learn/percent-encoding.md): Por que as URLs escapam certos caracteres como %XX, quais caracteres é seguro deixar como estão, e em que a codificação por porcentagem difere do Base64.
- [Hash, criptografia e codificação: três coisas diferentes](https://ronutz.com/pt-BR/learn/hashing-encryption-encoding.md): Três operações constantemente confundidas, separadas de forma limpa por duas perguntas: é reversível e precisa de uma chave?
- [Onde o Base64 aparece: data URIs, MIME, PEM e Basic auth](https://ronutz.com/pt-BR/learn/base64-in-practice.md): Os lugares reais em que binário é embrulhado em texto, o custo de tamanho de fazer isso e por que Base64 em um cabeçalho de autenticação não é criptografia.
- [Técnicas de evasão: como o Advanced WAF normaliza a codificação do atacante](https://ronutz.com/pt-BR/learn/awaf-evasion-techniques.md): Atacantes escondem payloads dentro de codificações incomuns para que uma assinatura nunca veja os caracteres reais. O BIG-IP Advanced WAF responde com oito subviolações de evasão sob a única violação 'Evasion technique detected', cada uma normalizando ou detectando um truque: %u decoding, Apache whitespace, Bad unescape, Bare byte decoding, Directory traversals, IIS backslashes, IIS Unicode codepoints e Multiple decoding. As oito são habilitadas por padrão.
