Validateur Base64

Collez une chaîne pour savoir s’il s’agit de Base64 valide. Le validateur identifie la variante, signale les caractères non valides et les problèmes de remplissage, et indique ce que contiennent les données une fois décodées.

Fonctionne entièrement dans votre navigateur. Aucune donnée n’est envoyée.

Mode d’emploi

  1. Collez la chaîne à vérifier dans le champ de saisie.
  2. Lisez le verdict : valide ou non valide, la variante détectée (standard ou compatible URL) et la taille décodée.
  3. Si des problèmes sont listés, servez-vous des positions indiquées pour repérer les caractères non valides, les espaces ou le remplissage mal placé.
  4. Consultez le type de contenu détecté pour savoir si les données sont du texte ou un fichier, par exemple PNG, PDF ou ZIP.

Ce qui rend un Base64 valide

  • Alphabet. Seuls A-Z, a-z, 0-9 et deux autres caractères sont autorisés : + et / en Base64 standard, - et _ en Base64URL. Une chaîne qui mélange les deux paires a généralement été altérée ou assemblée à partir de deux sources.
  • Remplissage. Le signe = ne peut apparaître qu’à la fin, deux fois au maximum. Un remplissage au milieu signifie généralement que deux valeurs encodées ont été concaténées.
  • Longueur. Avec remplissage, la longueur est un multiple de 4. Sans remplissage, toute longueur convient sauf 4n + 1 : un caractère restant ne contient que 6 bits, ce qui ne suffit pas pour former un octet.

Les décodeurs stricts ajoutent une règle : les bits de poids faible inutilisés du dernier caractère doivent être nuls. Beaucoup de décodeurs ignorent ces bits, mais certains, comme base64.StdEncoding.Strict() en Go, rejettent la chaîne.

Erreurs courantes et solutions

ProblèmeCause typiqueSolution
Caractère non valideGuillemets, barres obliques inverses ou séquences %2B et %3D copiés avec la valeurSupprimez les caractères en trop ou appliquez d’abord un décodage URL
Espaces au milieu+ transformés en espaces lors du passage de la valeur dans une URL ou un formulaireRemettez les +, ou utilisez Base64URL pour les URL
Longueur de 4n + 1Valeur tronquée par une limite de colonne, une ligne de journal ou une copie partielleCopiez de nouveau la valeur complète
Remplissage au milieuDeux chaînes Base64 accoléesSéparez-les et décodez chaque partie individuellement
Sauts de ligneRetour à la ligne MIME ou PEMGénéralement sans conséquence ; supprimez-les là où une seule ligne est requise

Valide ne veut pas dire significatif

Base64 n’a ni en-tête ni somme de contrôle : la validité indique seulement qu’une chaîne peut être décodée. Beaucoup de mots ordinaires passent le test, puisque quatre lettres quelconques forment un groupe valide. C’est pourquoi le validateur décode aussi les données et indique leur taille et leur type de contenu. Un texte lisible ou une signature de fichier connue, comme PNG, PDF ou ZIP, montre de façon convaincante que la chaîne est bien du Base64 ; quelques octets aléatoires, non. Pour tester également d’autres encodages, essayez le détecteur d’encodage.

Valider du Base64 dans le code

// JavaScript : Base64 standard avec remplissage (correspond aussi à une chaîne vide)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/

# Python : lever une erreur au lieu d’ignorer les caractères non valides
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

Questions fréquentes

Pourquoi un mot ordinaire est-il signalé comme Base64 valide ?
Parce qu’il l’est. Toute suite de caractères de l’alphabet ayant une longueur adéquate se décode en quelques octets ; le mot test, par exemple, donne trois octets. Regardez le type de contenu détecté : si le résultat n’est ni un texte lisible ni un type de fichier connu, l’entrée n’a probablement jamais été du Base64.
Un Base64 contenant des espaces ou des sauts de ligne est-il valide ?

MIME et PEM découpent le Base64 en lignes, et la plupart des décodeurs ignorent les espaces. Les champs JSON, les en-têtes HTTP, les JWT et les data URI attendent en revanche une chaîne d’un seul tenant. Le validateur liste les espaces à part, pour que vous puissiez juger si cela pose problème là où la chaîne sera utilisée.

Un Base64 sans remplissage = est-il valide ?
Souvent, oui. Base64URL omet normalement le remplissage, et la RFC 4648 autorise sa suppression lorsque la longueur est connue par le contexte. Certains décodeurs stricts l’exigent néanmoins ; si un système refuse la chaîne, ajoutez des signes = jusqu’à ce que la longueur soit un multiple de 4. Une chaîne sans remplissage de 4n + 1 caractères n’est jamais valide.
Comment vérifier en JavaScript qu’une chaîne est en Base64 ?
Pour du Base64 strict avec remplissage, testez-la avec une expression régulière qui autorise des groupes de quatre caractères de l’alphabet suivis d’un remplissage facultatif. Une vérification plus rapide consiste à appeler atob() dans un bloc try/catch. Notez que atob() lève une InvalidCharacterError en cas d’entrée incorrecte, mais accepte sans broncher les espaces et l’absence de remplissage, et qu’elle n’accepte pas les caractères compatibles URL.