Validador Base64

Pega una cadena para saber si es Base64 válido. El validador identifica la variante, señala los caracteres no válidos y los problemas de relleno, y te dice qué contienen los datos una vez decodificados.

Se ejecuta por completo en tu navegador. No se sube nada.

Cómo se usa

  1. Pega en el campo de entrada la cadena que quieres comprobar.
  2. Lee el veredicto: válido o no válido, la variante detectada (estándar o segura para URL) y el tamaño decodificado.
  3. Si aparecen problemas, usa las posiciones indicadas para localizar caracteres no válidos, espacios en blanco o relleno mal colocado.
  4. Fíjate en el tipo de contenido detectado para saber si los datos son texto o un archivo como PNG, PDF o ZIP.

Qué hace que un Base64 sea válido

  • Alfabeto. Solo se permiten A-Z, a-z, 0-9 y dos caracteres más: + y / en el Base64 estándar, - y _ en Base64URL. Una cadena que mezcla ambos pares normalmente se ha dañado o se ha formado a partir de dos fuentes distintas.
  • Relleno. El signo = solo puede aparecer al final, y como máximo dos veces. Un relleno en mitad de la cadena suele indicar que se concatenaron dos valores codificados.
  • Longitud. Con relleno, la longitud es múltiplo de 4. Sin relleno, vale cualquier longitud excepto 4n + 1: un único carácter sobrante solo contiene 6 bits, que no bastan para un byte.

Los decodificadores estrictos añaden una regla más: los bits bajos sin usar del último carácter deben ser cero. Muchos decodificadores ignoran esos bits, pero algunos, como base64.StdEncoding.Strict() de Go, rechazan la cadena.

Errores comunes y cómo corregirlos

ProblemaCausa típicaSolución
Carácter no válidoComillas, barras invertidas o escapes %2B y %3D copiados junto con el valorElimina los caracteres sobrantes o decodifica primero la URL
Espacios en mitad de la cadena+ convertidos en espacios al pasar el valor por una URL o un formularioVuelve a poner los + o usa Base64URL para las URL
Longitud de 4n + 1Valor truncado por un límite de columnas, una línea de registro o una copia parcialVuelve a copiar el valor completo
Relleno en mitad de la cadenaDos cadenas Base64 unidasSepáralas y decodifica cada parte por separado
Saltos de líneaAjuste de línea de MIME o PEMSuelen ser inofensivos; elimínalos donde se requiera una sola línea

Válido no significa que tenga sentido

Base64 no tiene encabezado ni suma de verificación, así que la validez solo indica que una cadena se puede decodificar. Muchas palabras corrientes pasan la prueba: cuatro letras cualesquiera forman un grupo válido. Por eso el validador también decodifica los datos e informa de su tamaño y su tipo de contenido. Un texto legible o una firma de archivo conocida, como PNG, PDF o ZIP, es una buena señal de que la cadena realmente es Base64; un puñado de bytes aleatorios no lo es. Para probar también otras codificaciones, usa el detector de codificación.

Validar Base64 en código

// JavaScript: Base64 estándar con relleno (también acepta una cadena vacía)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/

# Python: lanza un error en lugar de omitir los caracteres no válidos
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

Preguntas frecuentes

¿Por qué una palabra corriente aparece como Base64 válido?
Porque lo es. Cualquier secuencia de caracteres del alfabeto con una longitud adecuada se decodifica en algunos bytes; la palabra test, por ejemplo, se decodifica en tres bytes. Comprueba el tipo de contenido detectado: si el resultado no es ni texto legible ni un tipo de archivo conocido, probablemente la entrada nunca fue Base64.
¿Es válido un Base64 con espacios o saltos de línea?

MIME y PEM dividen el Base64 en líneas, y la mayoría de los decodificadores omiten los espacios en blanco. Sin embargo, los campos JSON, los encabezados HTTP, los JWT y los data URI esperan una cadena continua. El validador muestra los espacios en blanco por separado para que puedas decidir si importan en el lugar donde se usará la cadena.

¿Es válido un Base64 sin el relleno =?
A menudo, sí. Base64URL normalmente omite el relleno, y RFC 4648 permite prescindir de él cuando la longitud se conoce por el contexto. Algunos decodificadores estrictos siguen exigiéndolo; si un sistema rechaza la cadena, añade signos = hasta que la longitud sea múltiplo de 4. Las cadenas sin relleno de 4n + 1 caracteres nunca son válidas.
¿Cómo puedo comprobar si una cadena es Base64 en JavaScript?
Para Base64 estricto con relleno, compárala con una expresión regular que admita grupos de cuatro caracteres del alfabeto seguidos de un relleno opcional. Una comprobación más rápida consiste en llamar a atob() dentro de try/catch. Ten en cuenta que atob() lanza un InvalidCharacterError ante una entrada incorrecta, pero acepta sin avisar los espacios en blanco y la falta de relleno, y no admite los caracteres seguros para URL.