Enviar um arquivo
  1. base64hub
  2. Ferramentas de texto
  3. Validador de Base64

Validador de Base64

Cole uma string para ver se ela é Base64 válido e, se não for, exatamente onde e por quê: o caractere ruim, a linha e a coluna dele e o preenchimento que falta. Uma pontuação estima se aquilo é mesmo Base64.

Grátis sem cadastro, sem limites Local nada é enviado Posições linha, coluna e offset de cada problema Atualizado 27 de out. de 2026

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como validar uma string Base64

  1. Cole a string em Base64 para verificar. Quebras de linha, cabeçalhos PEM e prefixos data: podem ficar; eles aparecem como observações e o resto continua sendo analisado.
  2. Leia o veredito no topo. Cada problema aparece com a sua posição, por exemplo “na linha 3, coluna 17 (caractere 169)”.
  3. Olhe Sua entrada, com os problemas destacados para ver os caracteres problemáticos marcados no lugar.
  4. Confira A quais variantes de Base64 ela atende? para saber se ela é válida como Base64 padrão, sem preenchimento, URL-safe, MIME ou PEM, e por que não onde falha.
  5. Clique em Corrigir para mudar para o modo de reparo, que limpa a string.

O que o validador verifica

  • Caracteres fora do alfabeto, mostrados com o code point Unicode, para que os invisíveis, como o espaço não separável (U+00A0) ou o espaço de largura zero (U+200B), fiquem visíveis.
  • Alfabetos misturados: + e / do Base64 padrão junto com - e _ do Base64URL na mesma string.
  • = no meio, o que quase sempre significa que dois valores codificados foram colados.
  • Comprimento impossível: depois de remover o preenchimento, um comprimento com resto 1 na divisão por 4 não sai de nenhum codificador. Falta ou sobra um caractere.
  • Preenchimento: ausente, em excesso ou incompatível com o comprimento dos dados.
  • Bits finais não canônicos no último caractere (RFC 4648 §3.5).
  • Espaços e quebras de linha: espaços e tabs, a largura das linhas e se elas terminam em CRLF, LF ou uma mistura.

Detalhes acrescenta o comprimento, o comprimento mod 4, o estado do preenchimento, o alfabeto, o tamanho decodificado e o tipo de conteúdo detectado. A cópia destacada da entrada se limita aos primeiros 20.000 caracteres, mas a análise sempre cobre a string inteira.

Mesma string, decodificadores diferentes

“Válido” depende de quem pergunta. Estas cinco strings passaram por quatro decodificadores comuns (Python 3.13, Node.js 24, o atob do WHATWG e o GNU coreutils 9.7):

EntradaProblemaPython b64decode(s, validate=True)Node Buffer.from(s, "base64")atob(s)base64 -d
SGVsbG8gd29ybGQfalta =erroHello worldHello worldHello world
SGVsbG9=último caractere não canônicoHelloHelloHelloerro
SGVsbG8=V29ybGQ=dois valores coladoserroHello (o resto é descartado)erroHelloWorld
SGVsbG8gdresto 1erroHelloerroerro
SGVs bG8=um espaçoerroHelloHelloerro

A célula perigosa é o Node devolvendo Hello sem alarde para a entrada colada e perdendo metade dos dados sem nenhum erro. Por isso esta ferramenta informa cada desvio, inclusive os que o seu decodificador tolera. A tabela de variantes então diz qual formato estrito a string atende.

Uma string válida é mesmo Base64?

abcd, test e 1234 são todos Base64 válido. Cada um decodifica para três bytes de aparência aleatória. Por isso a ferramenta também responde Isto é mesmo Base64? com uma pontuação de 0 a 100 e os motivos por trás dela, cada um marcado como indício a favor ou contra o Base64:

  • a favor: preenchimento correto, mistura de maiúsculas e minúsculas com dígitos, grande variedade de caracteres, início eyJ (Base64 de {", típico de JSON e JWTs), ou bytes que decodificam para um tipo de arquivo conhecido ou texto legível;
  • contra: só letras (pode ser uma palavra), só dígitos hex (pode ser uma string hex), só dígitos (provavelmente um número), uma única caixa de letras, ou uma string muito curta.

Trate a pontuação como uma pista. É uma heurística, e uma string curta pode enganá-la para qualquer lado.

Verificando Base64 no código

O teste prático mais rigoroso é a ida e volta: decodificar, recodificar e comparar. Ele rejeita espaços, preenchimento ausente e finais não canônicos de uma vez.

import base64

def is_canonical_base64(s):
    try:
        return base64.b64encode(base64.b64decode(s, validate=True)).decode() == s
    except ValueError:
        return False

No Node.js, a mesma ideia é Buffer.from(s, "base64").toString("base64") === s. Uma expressão regular como ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$ verifica o alfabeto e o comprimento, mas aceita SGVsbG9= e a string vazia. Para strings URL-safe, converta-as antes ou use o alfabeto correspondente; veja Base64 vs Base64URL. Mensagens de erro de linguagens específicas estão reunidas em Erros de Base64.

Perguntas frequentes

Como saber se uma string é Base64?

A rigor, uma string é Base64 padrão válido se usa só A–Z, a–z, 0–9, + e /, tem comprimento múltiplo de 4 e no máximo dois = no final. Muitas palavras comuns passam nesse teste, então a ferramenta acrescenta uma pontuação de 0 a 100 baseada na aparência da string e no que ela decodifica.

Por que meu Base64 decodifica em uma linguagem e falha em outra?

Os decodificadores diferem no grau de rigor. O Buffer.from do Node aceita quase tudo, o b64decode(s, validate=True) do Python rejeita preenchimento ausente e o base64 -d do GNU rejeita caracteres finais não canônicos. A tabela acima mostra as mesmas cinco strings em quatro decodificadores.

O que é Base64 não canônico?

O último caractere carrega alguns bits não usados que deveriam ser zero. SGVsbG8= e SGVsbG9= decodificam para Hello, mas só o primeiro é canônico. A RFC 4648 permite que os decodificadores rejeitem o segundo, e recodificar nunca o reproduz.

Uma string Base64 válida é segura para decodificar?

A validade não diz nada sobre o conteúdo. A seção Detalhes mostra o tamanho decodificado e o tipo de conteúdo detectado, com um link para o decodificador correspondente, para você saber se é texto, uma imagem ou outra coisa antes de salvar.