Encodage / décodage Base64

Encodez et décodez du Base64, compatible UTF-8, avec variante adaptée aux URL.

À propos de cet outil

Convertissez du texte en Base64 et inversement. Gère correctement tout texte Unicode et prend en charge l’alphabet compatible URL (base64url) utilisé dans les JWT et les URL.

Mode d’emploi

  1. Choisissez Encoder pour convertir du texte en Base64, ou Décoder pour reconvertir du Base64 en texte.
  2. Collez votre entrée. Le texte Unicode, comme les accents ou les emoji, est géré correctement.
  3. Pour les jetons et les URL, activez Compatible URL pour utiliser - et _ au lieu de + et /.
  4. Copiez le résultat, ou cliquez sur Inverser pour faire l’opération inverse.

Questions

Base64 est-il un chiffrement ?
Non. Base64 est un encodage que n’importe qui peut inverser instantanément. Ne l’utilisez jamais pour cacher des mots de passe ou des secrets.
Quelle est la différence entre Base64 et Base64url ?
Base64url remplace + par - et / par _, et supprime généralement le remplissage =, si bien que le résultat peut être utilisé dans des URL et des noms de fichiers. Les JWT utilisent Base64url.
Pourquoi le décodage échoue-t-il ?
Soit l’entrée contient des caractères hors de l’alphabet Base64, soit elle se décode en données binaires plutôt qu’en texte UTF-8, comme une image ou un fichier compressé.
Pourquoi le texte encodé est-il plus long ?
Base64 représente chaque groupe de 3 octets par 4 caractères : la sortie est donc environ 33 % plus volumineuse que l’entrée.
Que signifie le = à la fin d’une chaîne Base64 ?
C’est du remplissage (padding). La sortie Base64 compte toujours un multiple de quatre caractères : un = signifie que le dernier groupe contenait deux octets, et == qu’il n’en contenait qu’un. Le remplissage ne porte aucune donnée, c’est pourquoi base64url le supprime généralement. Cet outil rajoute le remplissage manquant avant le décodage.
Comment encoder en Base64 en ligne de commande ?
Sous Linux et macOS, lancez printf hello | base64 pour obtenir aGVsbG8=. Évitez un simple echo, qui ajoute un saut de ligne et donne aGVsbG8K à la place. Pour décoder, utilisez base64 -d, ou base64 -D sur les anciennes versions de macOS. Dans PowerShell, utilisez [Convert]::ToBase64String avec les octets de votre texte.
Comment décoder une image ou un PDF en Base64 ?
Cet outil décode en texte UTF-8 : des données binaires comme un PNG ou un PDF affichent donc une erreur au lieu d’un fichier. Enregistrez la chaîne Base64 dans un fichier et lancez base64 -d input.txt > image.png dans un terminal. Retirez d’abord un éventuel préfixe data:image/png;base64, car il ne fait pas partie des données encodées.

Qu’est-ce que l’encodage Base64 et comment fonctionne-t-il ?

Base64 représente des données binaires avec 64 caractères ASCII imprimables : A–Z, a–z, 0–9, + et /. L’alphabet standard est défini dans la RFC 4648. L’encodeur lit l’entrée trois octets à la fois, découpe ces 24 bits en quatre groupes de 6 bits et associe chaque groupe à un caractère. C’est ainsi que les trois octets de « Man » deviennent « TWFu ». Quand la longueur de l’entrée n’est pas un multiple de trois, un remplissage = complète le dernier groupe.

Base64 existe parce que de nombreux canaux ont été conçus pour du texte, pas pour des octets bruts. Les pièces jointes d’e-mails (MIME), les URL data: en HTML et CSS, les en-têtes d’authentification HTTP Basic, les certificats PEM et les champs JSON qui transportent des images en dépendent tous. C’est un encodage de transport, ni une compression, ni une protection. Le décodage est instantané et ne demande aucune clé : considérez tout ce que vous encodez en Base64 comme du texte en clair lisible par n’importe qui.

Comment décoder du Base64 en texte, et pourquoi UTF-8 compte

Pour décoder du Base64 en ligne, choisissez Décoder et collez la chaîne. Les espaces et les sauts de ligne sont d’abord supprimés : une sortie découpée en lignes provenant d’un fichier PEM ou d’un e-mail se décode donc sans problème. Le remplissage = manquant est rajouté automatiquement, et les caractères compatibles URL - et _ sont aussi acceptés : inutile de savoir quelle variante vous avez. Les octets décodés sont ensuite lus comme du texte UTF-8.

UTF-8 compte parce que Base64 encode des octets, pas des caractères. La fonction btoa() intégrée au navigateur n’accepte que le Latin-1 : l’appeler sur un texte contenant ✓ ou un emoji lève une InvalidCharacterError. Cet outil convertit d’abord le texte en octets UTF-8, si bien que les accents et les emoji font l’aller-retour correctement : « é » devient les deux octets C3 A9 et s’encode en « w6k= ». Si les octets décodés ne sont pas de l’UTF-8 valide, comme une image ou un fichier gzip, vous obtenez une erreur au lieu d’un texte illisible.

Base64, hexadécimal ou encodage URL : lequel utiliser ?

Base64, l’hexadécimal et l’encodage pourcent transforment tous des données en texte sûr, mais ils conviennent à des usages différents. L’hexadécimal utilise deux caractères par octet, ce qui double la taille, mais il est facile à lire et constitue la norme pour les hachages et les sommes de contrôle. Base64 utilise quatre caractères pour trois octets, soit environ 33 % de surcoût, ce qui en fait le meilleur choix pour des données binaires plus volumineuses comme des images, des clés ou le contenu de fichiers dans du JSON.

L’encodage pourcent, utilisé dans les URL, est prévu pour du texte comportant quelques caractères réservés, pas pour des données binaires. Si une valeur Base64 doit aller dans une URL, une query string ou un nom de fichier, utilisez l’alphabet base64url au lieu d’encoder + et / en pourcent. Activez Compatible URL lors de l’encodage ici : - et _ remplacent + et /, et le remplissage = est supprimé, ce qui correspond exactement au format utilisé par les JWT. Pour l’encodage pourcent lui-même, utilisez l’outil Encodage, décodage et analyse d’URL.

Quelque chose ne fonctionne pas, ou un résultat semble faux ? Signaler un problème avec cet outil