Mode d’emploi
- Collez la chaîne à vérifier dans le champ de saisie.
- Lisez le verdict : valide ou non valide, la variante détectée (standard ou compatible URL) et la taille décodée.
- 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é.
- 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-9et 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ème | Cause typique | Solution |
|---|---|---|
| Caractère non valide | Guillemets, barres obliques inverses ou séquences %2B et %3D copiés avec la valeur | Supprimez 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 formulaire | Remettez les +, ou utilisez Base64URL pour les URL |
| Longueur de 4n + 1 | Valeur tronquée par une limite de colonne, une ligne de journal ou une copie partielle | Copiez de nouveau la valeur complète |
| Remplissage au milieu | Deux chaînes Base64 accolées | Séparez-les et décodez chaque partie individuellement |
| Sauts de ligne | Retour à la ligne MIME ou PEM | Gé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 ?
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 ?
= 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 ?
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.