Como usar
- Cole no campo de entrada a string que você quer verificar.
- Leia o veredito: válido ou inválido, a variante detectada (padrão ou segura para URL) e o tamanho decodificado.
- Se houver problemas listados, use as posições informadas para encontrar caracteres inválidos, espaços em branco ou preenchimento fora do lugar.
- Veja o tipo de conteúdo detectado para saber se os dados são texto ou um arquivo, como PNG, PDF ou ZIP.
O que torna um Base64 válido
- Alfabeto. Somente
A-Z,a-z,0-9e mais dois caracteres são permitidos:+e/no Base64 padrão,-e_no Base64URL. Uma string que mistura os dois pares geralmente foi danificada ou montada a partir de duas fontes. - Preenchimento. O sinal
=só pode aparecer no final, no máximo duas vezes. Preenchimento no meio geralmente significa que dois valores codificados foram concatenados. - Comprimento. Com preenchimento, o comprimento é múltiplo de 4. Sem preenchimento, qualquer comprimento serve, exceto 4n + 1: um caractere restante guarda apenas 6 bits, o que não basta para formar um byte.
Decodificadores estritos acrescentam mais uma regra: os bits menos significativos não usados do último caractere precisam ser zero. Muitos decodificadores ignoram esses bits, mas alguns, como o base64.StdEncoding.Strict() do Go, rejeitam a string.
Erros comuns e como corrigi-los
| Problema | Causa típica | Solução |
|---|---|---|
| Caractere inválido | Aspas, barras invertidas ou escapes %2B e %3D copiados junto com o valor | Remova os caracteres extras ou decodifique a URL antes |
| Espaços no meio | + virou espaço quando o valor passou por uma URL ou um formulário | Recoloque o + ou use Base64URL em URLs |
| Comprimento de 4n + 1 | Valor truncado por limite de coluna, linha de log ou cópia parcial | Copie o valor completo novamente |
| Preenchimento no meio | Duas strings Base64 unidas | Separe e decodifique cada parte individualmente |
| Quebras de linha | Quebra de linha de MIME ou PEM | Geralmente inofensivas; remova-as onde for exigida uma única linha |
Ser válido não significa fazer sentido
O Base64 não tem cabeçalho nem soma de verificação, então a validade só indica que uma string pode ser decodificada. Muitas palavras comuns passam no teste: quaisquer quatro letras formam um grupo válido. É por isso que o validador também decodifica os dados e informa o tamanho e o tipo de conteúdo. Texto legível ou uma assinatura de arquivo conhecida, como PNG, PDF ou ZIP, é um bom indício de que a string é mesmo Base64; um punhado de bytes aleatórios não é. Para testar também outras codificações, experimente o detector de codificação.
Como validar Base64 em código
// JavaScript: Base64 padrão com preenchimento (também corresponde a uma string vazia)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/
# Python: lança um erro em vez de ignorar caracteres inválidos
import base64, binascii
try:
base64.b64decode(s, validate=True)
except binascii.Error:
print('invalid')
Perguntas frequentes
Por que uma palavra comum é apontada como Base64 válido?
test, por exemplo, é decodificada em três bytes. Confira o tipo de conteúdo detectado: se o resultado não for nem texto legível nem um tipo de arquivo conhecido, provavelmente a entrada nunca foi Base64.Base64 com espaços ou quebras de linha é válido?
MIME e PEM quebram o Base64 em linhas, e a maioria dos decodificadores ignora espaços em branco. Já campos JSON, cabeçalhos HTTP, JWTs e data URIs esperam uma única string contínua. O validador lista os espaços em branco separadamente para que você decida se eles importam no lugar onde a string será usada.
Base64 sem o preenchimento = é válido?
= até que o comprimento seja múltiplo de 4. Strings sem preenchimento com 4n + 1 caracteres nunca são válidas.Como verificar se uma string é Base64 no JavaScript?
atob() dentro de um try/catch. Observe que atob() lança um InvalidCharacterError para entradas inválidas, mas aceita silenciosamente espaços em branco e preenchimento ausente, e não aceita os caracteres seguros para URL.