MiServe DevTools

Os seus autocolantes

Fixe aqui as ferramentas. Ficam guardadas neste navegador.

Codificador / descodificador Base64

Codifique texto ou um ficheiro em Base64 e descodifique-o de volta, com o alfabeto seguro para URL, preenchimento opcional e quebra de linha MIME.

Funciona no seu navegador. Nada do que cola é enviado.

Sobre esta ferramenta

O que é o Base64

O Base64 escreve bytes arbitrários com 64 caracteres ASCII imprimíveis: A–Z, a–z, 0–9, + e /. Cada três bytes passam a quatro caracteres, e o = preenche o último grupo quando o comprimento da entrada não é múltiplo de três. Está definido no RFC 4648.

Existe para que dados binários possam passar por canais feitos para texto: anexos de e-mail, URIs data: em HTML e CSS, campos binários em JSON, o cabeçalho HTTP Authorization: Basic e as três partes de um JWT assinado.

O Base64 é uma codificação, não uma encriptação. Qualquer pessoa o pode descodificar, por isso não esconde nada.

As variantes que vai encontrar

O alfabeto seguro para URL substitui + e / por - e _, para que o valor possa ficar num URL ou num nome de ficheiro sem precisar de escape. Os JWT usam-no e também dispensam o preenchimento.

O MIME (RFC 2045) divide a saída em linhas de 76 caracteres no máximo. Um data URI põe um tipo de media antes dos dados, como em data:image/png;base64,…, e usa o alfabeto padrão, não o seguro para URL.

Ao descodificar, esta ferramenta aceita os dois alfabetos, a falta de preenchimento, espaços, tabulações e quebras de linha, e ignora um prefixo data:…;base64,. Se um carácter não pertencer ao alfabeto, indica qual é e em que posição está.

Texto, bytes e ficheiros

O Base64 codifica bytes, por isso o texto tem primeiro de ser convertido em bytes. Esta ferramenta usa UTF-8, a codificação que a maioria dos sistemas espera hoje. A função btoa() do próprio JavaScript só aceita caracteres até U+00FF e lança uma exceção com qualquer outro, e é por isso que o código que passa um emoji diretamente a btoa() falha. Uma letra como é não lança exceção, mas btoa() codifica-a como um byte Latin-1 e não como os dois bytes que o UTF-8 usa.

Depois de descodificar, a ferramenta verifica se os bytes são texto UTF-8 válido sem caracteres de controlo. Se não forem, avisa, reconhece dados PNG, JPEG, GIF, WebP, PDF e ZIP pelos primeiros bytes e permite transferir os bytes como ficheiro. Os ficheiros que escolher são lidos pelo navegador e nunca saem do seu dispositivo.

Perguntas

O Base64 é uma forma de encriptação?

Não. O Base64 é uma codificação reversível sem chave, por isso qualquer pessoa o pode descodificar. Não o use para proteger palavras-passe, tokens ou dados pessoais.

Porque é que a saída em Base64 é maior do que a entrada?

Cada carácter Base64 transporta seis bits em vez de oito, por isso cada três bytes precisam de quatro caracteres. O resultado fica cerca de um terço maior do que o original, mais o preenchimento e eventuais quebras de linha.

Qual é a diferença entre Base64 e base64url?

O base64url é a variante da secção 5 do RFC 4648. Usa - e _ em vez de + e /, e muitas vezes omite o preenchimento =, para que o valor seja seguro em URLs e nomes de ficheiro. Os dados são os mesmos e só esses caracteres mudam. Esta ferramenta descodifica os dois.

O ficheiro que codifico é enviado para algum lado?

Não. O ficheiro é lido pelo seu navegador e codificado no seu dispositivo. Não é enviado para nenhum servidor.

Mais ferramentas de Codificação