Codifique ou decodifique Base64, Base64URL, codificação percentual de URL, entidades HTML e hexadecimal enquanto digita, com suporte completo a UTF-8.
Nada do que introduz é armazenado - é convertido e devolvido no mesmo pedido.
Sobre Codificar / Decodificar
Um token num log, uma query string num redirecionamento, um e-mail cheio de &: texto codificado aparece em todo lugar no trabalho. Cole aqui, escolha o formato e veja o resultado codificado ou decodificado enquanto digita.
O que faz
Base64, Base64URL (estilo JWT, sem padding), codificação percentual de URL, entidades HTML e hexadecimal.
UTF-8 completo: acentos, hindi, chinês e emoji sobrevivem à ida e volta.
O padding Base64 ausente é adicionado e informado, nunca corrigido em silêncio.
Bytes que não são texto aparecem em hexadecimal em vez de caracteres embaralhados.
Um clique para usar a saída como entrada e inverter a direção.
Como funciona
1Escolha o formato e se quer codificar ou decodificar.
2Cole o texto: o resultado é atualizado enquanto você digita.
3Copie a saída ou use-a como próxima entrada.
Exemplo prático: ler um JWT
Um JSON Web Token são três partes Base64URL unidas por pontos: cabeçalho, payload e assinatura. Cole a parte do meio, escolha Base64URL e decodifique, e você verá as claims JSON, como o id do usuário e a expiração exp (um timestamp Unix que você pode ler no Conversor de timestamp Unix). Decodificar não é verificar: qualquer pessoa pode ler o payload de um JWT, e só a verificação da assinatura no servidor prova que ele não foi alterado.
Os casos que complicam no trabalho
Base64 sem o padding, que alguns sistemas removem para economizar espaço, falha em decodificadores rígidos; esta ferramenta adiciona os sinais = que faltam e avisa. Para muitos servidores um + numa query string significa espaço, então um valor Base64 colado num link sem codificar chega corrompido; codifique-o como componente de URL ou use Base64URL. Texto codificado duas vezes aparece como %2520 ou & e precisa ser decodificado duas vezes.
O que cada decodificador aceita
A decodificação Base64 ignora espaços e quebras de linha, então um valor quebrado em várias linhas, como num e-mail, é decodificado do jeito que foi colado. O Base64URL também aceita + e /, mas o Base64 comum rejeita - e _, então uma parte de um JWT precisa da opção Base64URL. A decodificação hex ignora espaços, dois-pontos, vírgulas, hífens e prefixos 0x, então 48:65:6c:6c:6f e 0x48 0x65 funcionam. A decodificação URL transforma + em espaço, então um sinal de mais literal precisa chegar como %2B. A codificação HTML escapa os cinco caracteres & < > " e '; a decodificação HTML entende todas as entidades nomeadas do HTML5, como e …, e as numéricas como ₹ para o símbolo da rupia.
Exemplos práticos: o que cada formato produz
A codificação de URL desta ferramenta codifica um único valor, como um parâmetro de consulta, então todo caractere reservado é escapado: https://example.com/a b?x=1&y=2 vira https%3A%2F%2Fexample.com%2Fa%20b%3Fx%3D1%26y%3D2. Codifique só o valor que você insere no link, nunca o link inteiro. Texto fora do ASCII é codificado como seus bytes UTF-8: café ₹ vira caf%C3%A9%20%E2%82%B9, e o hexadecimal mostra os mesmos bytes, é como c3 a9 e ₹ como e2 82 b9. O Base64 de user:pass é dXNlcjpwYXNz, o valor que um cabeçalho HTTP Basic Authorization carrega (RFC 7617); por isso qualquer pessoa que veja esse cabeçalho consegue ler a senha.
Os bytes eram UTF-8, mas foram lidos em algum lugar como Latin-1 ou Windows-1252 antes de serem codificados. A decodificação aqui mostra os bytes como são; a correção cabe ao sistema que os gerou.
Posso decodificar um arquivo inteiro?
Cole até 200.000 caracteres de texto. Em arquivos binários, como imagens, os bytes decodificados aparecem em hexadecimal em vez de virar um download.
Base64 é criptografia?
Não. O Base64 só muda a forma de escrever os bytes para que passem por sistemas que esperam texto simples. Qualquer pessoa pode decodificá-lo; nunca o use para esconder uma senha ou segredo.
Qual a diferença entre Base64 e Base64URL?
O Base64URL troca "+" e "/" por "-" e "_" e normalmente remove o padding "=", para que o resultado seja seguro em URLs e nomes de arquivo. Os JSON Web Tokens usam esse formato.
Meu texto é armazenado?
Não. Ele é convertido e devolvido na mesma requisição e nunca é gravado em banco de dados ou log.
Por que a saída codificada é diferente do encodeURIComponent do JavaScript?
Esta ferramenta também escapa ! ' ( ) e *, que o encodeURIComponent mantém como estão, então it's (50%) off! vira it%27s%20%2850%25%29%20off%21. As duas formas decodificam para o mesmo texto, e escapar esses caracteres é sempre seguro dentro de um valor de consulta. Um espaço vira %20, não +; a forma com + vem da codificação de formulários HTML, e o decodificador daqui lê as duas.
Como codifico ou decodifico texto em Base64 pela linha de comando?
No Linux ou Mac, echo -n 'Hello, World' | base64 dá SGVsbG8sIFdvcmxk, e echo 'SGVsbG8sIFdvcmxk' | base64 --decode volta ao texto. Sem o -n, o echo acrescenta uma quebra de linha que também é codificada, e o resultado vira SGVsbG8sIFdvcmxkCg==: o motivo mais comum para duas ferramentas discordarem. No PowerShell, [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Hello, World')) codifica e [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8sIFdvcmxk')) decodifica. Esta página codifica exatamente os caracteres que você cola, em UTF-8, sem acrescentar quebra de linha.
Como decodifico uma imagem em Base64 ou um data URI?
Cole só a parte depois da vírgula: em data:image/png;base64,iVBORw0KGgo... é iVBORw0KGgo..., porque o prefixo data:image/png;base64, não é Base64 e a string inteira é rejeitada. Escolha Base64 e Decode. Bytes que não são texto aparecem em hexadecimal em vez de desenhados como imagem, o que basta para saber que arquivo é: um PNG começa com 89 50 4e 47, um JPEG com ff d8 ff e um arquivo .docx, .xlsx ou outro baseado em ZIP inteiro com 50 4b 03 04. Para ver a imagem, cole o data URI completo na barra de endereços do navegador. A entrada vai até 200.000 caracteres, cerca de 150.000 bytes de arquivo.
Por que o Base64 fica cerca de um terço maior que o original?
O Base64 escreve cada 3 bytes como 4 caracteres e completa o último grupo com = até um múltiplo de 4 (RFC 4648), então a saída tem 4/3 dos bytes de entrada, arredondado para cima. Hello, World tem 12 bytes e vira os 16 caracteres SGVsbG8sIFdvcmxk. Contam-se bytes UTF-8, não letras: café tem 4 caracteres mas 5 bytes e vira Y2Fmw6k=, e ₹100 tem 6 bytes e vira 4oK5MTAw. Anexos de e-mail crescem um pouco mais porque o MIME quebra o Base64 em linhas de no máximo 76 caracteres (RFC 2045); esta página ignora essas quebras de linha ao decodificar. O Base64URL sem preenchimento economiza só os sinais =.