Encodage / Décodage Base64
Encodez du texte en Base64 ou décodez du Base64 en texte — compatible UTF-8, entièrement dans votre navigateur.
1 270 vues
Comment ça fonctionne
Le Base64 transforme des données binaires en texte brut à l'aide d'un alphabet de 64 caractères imprimables : A–Z, a–z, 0–9, plus + et / (64 symboles, c'est exactement 2⁶, d'où le nom Base64). L'encodeur lit l'entrée par blocs de 3 octets (24 bits), découpe ces 24 bits en quatre groupes de 6 bits, et associe chaque groupe de 6 bits à un caractère de l'alphabet — ainsi, 3 octets de binaire deviennent toujours exactement 4 caractères de texte. Si la longueur de l'entrée n'est pas un multiple exact de 3, le dernier groupe est complété par un ou deux caractères = pour que la longueur de sortie reste un multiple de 4.
Concrètement : les trois octets composant « Man » (77, 97, 110 — soit 01001101 01100001 01101110 en binaire) sont regroupés en quatre blocs de 6 bits (010011, 010110, 000101, 101110), chacun associé à un caractère, ce qui donne TWFu. Comme chaque groupe de 3 octets d'entrée s'étend toujours en 4 caractères de sortie, les données encodées en Base64 sont systématiquement environ 33 % plus volumineuses que l'original — une image de 300 Ko devient une chaîne Base64 d'environ 400 Ko, ce qui compte lorsqu'on intègre des images sous forme d'URI data: ou qu'on joint des fichiers binaires dans du JSON ou un e-mail.
Cet outil gère correctement l'Unicode en encodant d'abord le texte en UTF-8, si bien que les caractères multi-octets et les emojis (« çğü 😀 ») font l'aller-retour intacts — un appel JavaScript btoa() naïf génère une erreur sur ce type de contenu, car il attend un octet par caractère. Tout s'exécute localement dans votre navigateur ; rien de ce que vous saisissez n'est envoyé où que ce soit.
Le Base64 apparaît sans cesse dans des endroits que la plupart des gens ne remarquent jamais : une balise HTML <img src="data:image/png;base64,..."> intègre une image entière directement dans la page au lieu de la lier à un fichier ; l'en-tête HTTP Authorization: Basic transporte une chaîne « nomutilisateur:motdepasse » encodée en Base64 (un simple formatage, pas une protection — c'est le TLS qui garantit réellement la confidentialité en transit) ; les pièces jointes des e-mails sont encodées en Base64 depuis le standard MIME d'origine, car SMTP a été conçu pour transporter du texte 7 bits, pas du binaire brut ; et les JSON Web Tokens (JWT) utilisent la variante compatible URL pour empaqueter une structure binaire signée en trois segments de texte séparés par des points.
Ce qu'il faut savoir
- Le Base64 n'est pas du chiffrement — c'est une représentation réversible, publiquement connue, sans aucune confidentialité. N'importe qui peut la décoder instantanément avec le même alphabet ; elle existe uniquement pour permettre de transporter des données binaires en toute sécurité à travers des canaux qui ne véhiculent que du texte (pièces jointes MIME, URI data, champs JSON, en-têtes HTTP Basic-Auth), jamais pour dissimuler un contenu.
- Variante compatible URL : comme
+et/ont une signification particulière dans les URL, un alphabet Base64 « compatible URL » les remplace par-et_et omet souvent le remplissage=. Cet outil décode automatiquement les deux variantes. - Le coût en taille est fixe et prévisible : l'expansion d'environ 33 % (rapport 4/3) est exacte pour la charge utile elle-même — c'est pourquoi les API qui acceptent des téléversements binaires bruts sont généralement plus économes en bande passante que celles qui exigent des corps JSON encapsulés en Base64.
- Le remplissage indique le reste : un seul
=signifie que la longueur des données d'origine dépassait de 2 octets un multiple de 3 ; deux=signifient 1 octet de plus. L'absence totale de remplissage signifie que l'entrée était un multiple exact de 3 octets.
Questions fréquentes
Pourquoi mon résultat décodé semble-t-il illisible ?
En général, soit l'entrée n'était pas du Base64 valide (tronquée, ou utilisant les caractères compatibles URL -_ au lieu de +/), soit les octets d'origine n'étaient tout simplement pas du texte. Cet outil décode automatiquement les variantes compatibles URL.
Puis-je encoder des fichiers ?
Cet outil est conçu pour du texte. Pour les fichiers, le schéma classique est l'URI data:, qui enveloppe la chaîne Base64 d'un préfixe de type MIME afin qu'un navigateur ou un client de messagerie sache comment l'afficher — la plupart des langages proposent des solutions en une ligne (PHP base64_encode(file_get_contents(...)), JS FileReader.readAsDataURL). Les fichiers très volumineux sont généralement mieux envoyés en binaire brut plutôt qu'encapsulés en Base64, vu la surcharge d'environ 33 %.
Le Base64 est-il sûr pour les mots de passe ?
Non — il est trivialement réversible par conception, sans clé ni secret impliqué. L'authentification HTTP Basic ne l'utilise que pour le formatage du transport (empaqueter « utilisateur:motdepasse » dans une chaîne compatible avec les en-têtes) et repose entièrement sur TLS/HTTPS pour la confidentialité réelle en transit. Stockez les mots de passe hachés avec un algorithme lent et salé (bcrypt, argon2, scrypt) — jamais encodés, et jamais en Base64, que n'importe qui peut inverser en une ligne de code.
Pourquoi la sortie encodée en Base64 est-elle toujours environ 33 % plus grande que l'entrée ?
Parce que l'encodage associe chaque groupe de 3 octets (24 bits) d'entrée à 4 caractères de sortie, et que chaque caractère de sortie ne transporte que 6 bits d'information au lieu des 8 bits d'un octet — c'est un rapport d'expansion fixe de 4/3, qui ne varie pas selon le contenu. Un fichier de 3 Mo devient systématiquement une chaîne Base64 d'environ 4 Mo.
Quelle est la différence entre le Base64 standard et la variante « compatible URL » ?
Le Base64 standard utilise + et / dans son alphabet, deux caractères qui ont une signification réservée dans les URL et les chemins de fichiers ; une variante compatible URL les remplace donc par - et _ (et omet souvent le remplissage =) afin que la chaîne encodée puisse figurer directement dans une URL ou un nom de fichier sans échappement. Cet outil reconnaît et décode automatiquement les deux variantes.
Outils similaires
Signaler un problème
Encodage / Décodage Base64
Commentaires
Pas encore de commentaires — soyez le premier à en écrire un !