Convertisseur Base64
Tapez du texte pour obtenir son Base64, ou collez du Base64 pour voir ce qu’il contient. Pas besoin de dire dans quel sens vous allez. Si le résultat est une image ou un fichier, nous l’affichons comme tel.
Le résultat s’affiche pendant que vous tapez. Les textes et les fichiers sont convertis dans cette page et ne nous sont pas envoyés. Base64 est une façon d’écrire des octets avec des lettres, pas un chiffrement : n’importe qui peut le décoder.
Faire passer des octets par des canaux faits pour du texte
L’e-mail a été conçu pour des lettres anglaises simples. Les premières adresses web aussi et JSON et XML aujourd’hui encore. Une photo, un PDF ou une clé cryptographique sont faits d’octets quelconques et pour un canal de ce genre, beaucoup de ces octets veulent dire quelque chose de spécial ou rien du tout. Si vous les faites passer tels quels, ils arrivent abîmés.
Base64 est la solution de contournement. Il réécrit n’importe quelle suite d’octets avec 64 caractères inoffensifs : A à Z, a à z, 0 à 9, + et /. Toutes les pièces jointes d’e-mail voyagent ainsi. Il en va de même des images intégrées dans une feuille de style et des jetons qui vous gardent connecté.
Trois octets deviennent quatre caractères
Un octet contient 8 bits et un caractère parmi 64 peut représenter 6 bits. L’encodeur prend donc 3 octets (24 bits) à la fois et les coupe en quatre groupes de 6 bits. Chaque groupe choisit un caractère dans l’alphabet.
text M a n
bytes 01001101 01100001 01101110
6 bits 010011 010110 000101 101110
Base64 T W F uCela a deux effets secondaires. Le résultat est plus long d’un tiers que l’entrée, environ 33 %, un peu plus avec les sauts de ligne. Et quand l’entrée n’est pas divisible par 3, le dernier groupe est complété par un ou deux signes =, appelés bourrage (padding). Ma donne TWE= et M donne TQ==. Le bourrage ne porte aucune donnée, c’est pourquoi certains systèmes l’omettent.
Standard, URL-safe, MIME
| Variante | Caractères 63 et 64 | Bourrage | Où on la rencontre |
|---|---|---|---|
| Standard | + / | Oui | Data URI, authentification HTTP Basic, clés PEM |
| URL-safe (Base64URL) | - _ | Souvent aucun | JSON Web Tokens, liens, noms de fichiers |
| MIME | + / | Oui | Pièces jointes d’e-mail, avec un saut de ligne tous les 76 caractères |
Au décodage, cet outil les accepte toutes à la fois : l’un ou l’autre alphabet, avec ou sans bourrage, espaces et sauts de ligne n’importe où. Puis il vous dit quelle variante il a vue. Les caractères hors de l’alphabet sont listés avec leur position et ignorés. Une longueur qui laisse un caractère de trop est signalée. Un seul caractère contient 6 bits et ne peut pas former un octet : quelque chose a donc été coupé.
Le texte, ce sont d’abord des octets
Base64 encode des octets, pas des lettres, donc le texte doit être transformé en octets avant toute autre chose. Cet outil utilise UTF-8, l’encodage de presque tout le web. En UTF-8, une lettre latine sans accent fait 1 octet, é en fait 2, la plupart des caractères chinois ou japonais en font 3 et un emoji en fait 4. C’est pourquoi é seul devient w6k=.
Le bogue classique consiste à sauter cette étape. En JavaScript, btoa("é") renvoie 6Q==, l’octet Latin-1 et btoa("👍") lève une erreur. Au retour, atob() vous donne é là où il y avait é. La solution est TextEncoder avant l’encodage et TextDecoder après le décodage.
Quand les octets décodés ne sont pas de l’UTF-8 valide, l’outil ne vous affiche pas de charabia. Il regarde les premiers octets, qui identifient la plupart des formats de fichier (PNG, JPEG, GIF, WebP, PDF, ZIP et gzip sont reconnus), affiche un aperçu de l’image, propose le résultat en fichier et montre le début en hexadécimal.
Il ne cache rien
Base64 n’a ni clé ni secret. Décoder, c’est la même recette lue à l’envers et tous les langages de programmation l’ont d’origine. Un mot de passe « protégé » par Base64 est un mot de passe en clair avec des étapes en plus. Prenez l’en-tête HTTP Authorization: Basic dXNlcjpwYXNz : n’importe qui peut le retransformer en user:pass.
Une URI data: comme data:image/png;base64,iVBORw0… met un fichier entier dans une adresse. Pour une minuscule icône, cela économise une requête. Pour quoi que ce soit de plus gros, vous payez les 33 % de plus et le fichier ne peut plus être mis en cache séparément.
Questions fréquentes
Base64 est-il un chiffrement ?
Non. C’est un encodage, une façon publique et réversible d’écrire des octets avec 64 caractères imprimables. Il n’y a pas de clé, donc n’importe qui peut le décoder. Servez-vous-en pour transporter des données, jamais pour les protéger.
Pourquoi le Base64 se termine-t-il par un ou deux signes égal ?
L’encodeur travaille par groupes de 3 octets. Quand le dernier groupe n’a que 1 ou 2 octets, le résultat est complété par == ou = pour que sa longueur reste un multiple de 4. Ces signes ne portent aucune donnée et le Base64 URL-safe les omet souvent.
Quelle est la différence entre Base64 et Base64URL ?
Deux caractères. Le Base64 standard utilise + et /, qui ont chacun un sens dans les adresses web. Base64URL les remplace par - et _ et supprime en général le bourrage =. Les données à l’intérieur sont les mêmes.
Pourquoi les accents ou les emoji sortent-ils mal après le décodage ?
Le décodeur a lu les octets avec le mauvais encodage de texte, souvent du Latin-1 alors que le texte était en UTF-8. C’est alors que vous voyez é pour é. Décodez les octets en UTF-8 (en JavaScript, avec TextDecoder) et le texte revient intact.
De combien un fichier en Base64 est-il plus gros ?
D’environ 33 %, puisque chaque groupe de 3 octets devient 4 caractères. Une image de 300 Ko devient environ 400 Ko de texte, plus à peu près 2,6 % quand les lignes sont coupées à 76 caractères pour l’e-mail.
Comment transformer une image en data URI ?
Déposez l’image sur l’outil. Vous obtenez le Base64 et une adresse complète data:image/…;base64,… à coller dans un attribut src ou dans un url() CSS. Réservez cela aux petites images de quelques kilo-octets.