Subir un archivo
  1. base64hub
  2. Herramientas de texto
  3. Validador de Base64

Validador de Base64

Pega una cadena para ver si es Base64 válido y, si no lo es, exactamente dónde y por qué: el carácter incorrecto, su línea y columna, y el relleno que necesita. Una puntuación estima si es Base64 siquiera.

Gratis sin registro, sin límites Local no se sube nada Posiciones línea, columna y desplazamiento de cada problema Actualizado 27 oct 2026

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo validar una cadena Base64

  1. Pega la cadena en Base64 a comprobar. Los saltos de línea, la armadura PEM y los prefijos data: pueden quedarse; se indican como hallazgos y el resto se analiza igualmente.
  2. Lee el veredicto de arriba. Cada problema aparece con su posición, por ejemplo «en la línea 3, columna 17 (carácter 169)».
  3. Mira Tu entrada, con los problemas resaltados para ver los caracteres problemáticos marcados en su sitio.
  4. Revisa ¿Qué variantes de Base64 cumple? para saber si es válido como Base64 estándar, sin relleno, URL-safe, MIME o PEM, y por qué no en los casos en que falla.
  5. Pulsa Arreglar para pasar al modo de reparación, que limpia la cadena.

Qué comprueba el validador

  • Caracteres fuera del alfabeto, mostrados con su punto de código Unicode para que se vean los invisibles, como un espacio de no separación (U+00A0) o un espacio de ancho cero (U+200B).
  • Alfabetos mezclados: + y / del Base64 estándar junto con - y _ de Base64URL en la misma cadena.
  • = en medio, que casi siempre significa que se pegaron dos valores codificados.
  • Longitud imposible: tras quitar el relleno, una longitud con resto 1 al dividir entre 4 no puede salir de ningún codificador. Falta o sobra un carácter.
  • Relleno: que falte, que sobre o que no corresponda a la longitud de los datos.
  • Bits finales no canónicos en el último carácter (RFC 4648 §3.5).
  • Espacios y ajuste de línea: espacios y tabuladores, el ancho de línea y si las líneas terminan en CRLF, LF o una mezcla.

Detalles añade la longitud, la longitud mod 4, el estado del relleno, el alfabeto, el tamaño decodificado y el tipo de contenido detectado. La copia resaltada de la entrada se limita a los primeros 20.000 caracteres, pero el análisis siempre abarca la cadena entera.

La misma cadena, decodificadores distintos

«Válido» depende de a quién preguntes. Estas cinco cadenas se pasaron por cuatro decodificadores habituales (Python 3.13, Node.js 24, atob de WHATWG y GNU coreutils 9.7):

EntradaProblemaPython b64decode(s, validate=True)Node Buffer.from(s, "base64")atob(s)base64 -d
SGVsbG8gd29ybGQfalta =errorHello worldHello worldHello world
SGVsbG9=último carácter no canónicoHelloHelloHelloerror
SGVsbG8=V29ybGQ=dos valores pegadoserrorHello (el resto se descarta)errorHelloWorld
SGVsbG8gdresto 1errorHelloerrorerror
SGVs bG8=un espacioerrorHelloHelloerror

La celda peligrosa es la de Node, que devuelve Hello sin decir nada para la entrada pegada y pierde la mitad de los datos sin ningún error. Por eso esta herramienta informa de cada desviación, incluidas las que tu propio decodificador tolera. La tabla de variantes te dice después qué formato estricto cumple la cadena.

¿Una cadena válida es de verdad Base64?

abcd, test y 1234 son Base64 válido. Cada una se decodifica en tres bytes de aspecto aleatorio. Por eso la herramienta también responde a ¿Es realmente Base64? con una puntuación de 0 a 100 y los motivos, cada uno marcado como a favor o en contra de que sea Base64:

  • a favor: relleno correcto, mezcla de mayúsculas y minúsculas con dígitos, mucha variedad de caracteres, un comienzo eyJ (Base64 de {", típico de JSON y JWT), o bytes que se decodifican en un tipo de archivo conocido o en texto legible;
  • en contra: solo letras (podría ser una palabra), solo dígitos hex (podría ser una cadena hex), solo dígitos (probablemente un número), una sola caja de letra, o una cadena muy corta.

Toma la puntuación como una pista: es una heurística, y una cadena corta puede engañarla en cualquiera de los dos sentidos.

Comprobar Base64 en código

La prueba estricta más práctica es el viaje de ida y vuelta: decodificar, volver a codificar y comparar. Rechaza de una vez los espacios, la falta de relleno y los finales no canónicos.

import base64

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

En Node.js, la misma idea es Buffer.from(s, "base64").toString("base64") === s. Una expresión regular como ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$ comprueba el alfabeto y la longitud, pero acepta SGVsbG9= y la cadena vacía. Para cadenas URL-safe, conviértelas antes o usa el alfabeto correspondiente; consulta Base64 frente a Base64URL. Los mensajes de error de cada lenguaje están recopilados en Errores de Base64.

Preguntas frecuentes

¿Cómo sé si una cadena es Base64?

En sentido estricto, una cadena es Base64 estándar válido si solo usa A–Z, a–z, 0–9, + y /, su longitud es múltiplo de 4 y tiene como mucho dos = al final. Muchas palabras normales pasan esa prueba, así que la herramienta añade una puntuación de 0 a 100 basada en el aspecto de la cadena y en lo que se obtiene al decodificarla.

¿Por qué mi Base64 se decodifica en un lenguaje pero falla en otro?

Los decodificadores son más o menos estrictos. Buffer.from de Node acepta casi cualquier cosa, b64decode(s, validate=True) de Python rechaza la falta de relleno y base64 -d de GNU rechaza los últimos caracteres no canónicos. La tabla de arriba muestra las mismas cinco cadenas en cuatro decodificadores.

¿Qué es el Base64 no canónico?

El último carácter lleva unos cuantos bits sin usar que deberían ser cero. SGVsbG8= y SGVsbG9= se decodifican ambos como Hello, pero solo el primero es canónico. RFC 4648 permite a los decodificadores rechazar el segundo, y volver a codificar nunca lo reproduce.

¿Es seguro decodificar una cadena Base64 válida?

Que sea válida no dice nada del contenido. La sección Detalles muestra el tamaño decodificado y el tipo de contenido detectado, con un enlace al decodificador correspondiente, para que sepas si es texto, una imagen u otra cosa antes de guardarlo.