UltKit

Codificar e decodificar Base64

Transforme um texto ou arquivo em Base64, ou decodifique Base64 de volta para texto legível. O Unicode é tratado corretamente, o alfabeto seguro para URL está a um clique e a decodificação aceita qualquer um dos dois alfabetos, com ou sem preenchimento.

Modo

0 caracteres · 0 palavras · 0 linhas

0 caracteres · 0 palavras · 0 linhas

Funciona inteiramente nesta aba do navegador. Seu texto nunca é enviado nem armazenado.

O alfabeto Base64

Índice → caractere conforme a RFC 4648. Os dois últimos, destacados, mudam na variante segura para URL: o 62 é + ou -, o 63 é / ou _.

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 63/ _

Qual o tamanho da saída

Cada 3 bytes de entrada viram 4 caracteres; um grupo final de 1 ou 2 bytes é completado com = no Base64 padrão e fica sem preenchimento na forma segura para URL.

EntradaBytesPadrãoSeguro para URLComprimento
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

O que o Base64 faz

O Base64, definido na RFC 4648, escreve bytes quaisquer usando 64 caracteres ASCII imprimíveis: A–Z, a–z, 0–9, + e /. Cada grupo de três bytes (24 bits) é dividido em quatro números de 6 bits, e cada número escolhe um caractere do alfabeto. Quando o tamanho da entrada não é múltiplo de três, o último grupo recebe um ou dois sinais = de preenchimento. O resultado é sempre cerca de 33% maior que a entrada: 4 caracteres para cada 3 bytes.

Ele existe porque muitos canais foram criados para texto. E-mail (MIME), URLs data: em HTML e CSS, campos JSON que carregam imagens ou certificados e cabeçalhos de autenticação HTTP Basic usam Base64 para transportar dados binários com segurança. Não é criptografia e não esconde nada; para decodificar não é preciso chave.

Unicode e a variante segura para URL

O Base64 codifica bytes, não letras, então o texto precisa primeiro ser transformado em bytes. Esta ferramenta sempre usa UTF-8, a codificação em que a web funciona: o é vira dois bytes e um emoji, quatro. A função btoa do navegador, sozinha, gera erro em qualquer caractere acima de U+00FF, e por isso codificadores ingênuos falham com acentos e emojis; aqui o texto passa antes pelo TextEncoder, e a decodificação faz o caminho inverso com o TextDecoder. Se os bytes decodificados não forem UTF-8 válido (uma imagem, um arquivo zip), a ferramenta os mostra em hexadecimal em vez de texto ilegível.

O Base64 padrão usa + e /, que têm significado em URLs e nomes de arquivo. O alfabeto seguro para URL, da seção 5 da RFC 4648, os substitui por - e _, e o preenchimento geralmente é omitido. Os JSON Web Tokens usam exatamente essa forma. O decodificador aceita os dois alfabetos e a falta de preenchimento, então você pode colar qualquer um.

Codificar arquivos e imagens

Escolha um arquivo e a ferramenta o lê localmente com FileReader e devolve o Base64 dele, ou uma URL data: completa com o tipo MIME do arquivo, pronta para colar em uma tag img ou em um background de CSS. Imagens embutidas economizam uma requisição HTTP, mas ficam um terço maiores e não podem ser armazenadas em cache separadamente, por isso servem para ícones pequenos, não para fotos. Para imagens com pré-visualização e trechos de HTML e CSS prontos, use Imagem para Base64.

Perguntas frequentes

Por que o resultado em Base64 fica maior que o original?
Cada 3 bytes viram 4 caracteres, então a saída tem cerca de 4/3 do tamanho da entrada, mais até dois caracteres de preenchimento. Texto fora do ASCII fica ainda maior, porque o UTF-8 usa de dois a quatro bytes por caractere.
O que são os sinais = no final?
Preenchimento. Eles fazem o tamanho da saída ser múltiplo de quatro quando o tamanho da entrada não é múltiplo de três. Um = significa que o último grupo tinha dois bytes; dois = significam que tinha um byte.
Por que a decodificação falha com erro de caractere inválido?
A entrada contém algo fora do alfabeto, como um espaço dentro de uma palavra, uma aspa ou um % de codificação de URL. Quebras de linha e falta de preenchimento são toleradas; outros caracteres, não.
É seguro codificar uma senha em Base64?
O Base64 não oferece nenhuma proteção. A autenticação HTTP Basic envia usuário:senha em Base64, e por isso só deve ser usada por HTTPS. Use criptografia ou hash de verdade para proteger segredos.
Qual é a diferença entre Base64 e Base64url?
Apenas dois caracteres e o preenchimento: o Base64url usa - e _ no lugar de + e / e geralmente omite o =, então o resultado pode ficar em URLs e nomes de arquivo sem escape.