Comment encoder du texte en Base64
- Saisissez ou collez votre texte dans la zone Entrée · texte. La page s’ouvre avec un exemple ; appuyez sur Effacer pour partir d’une zone vide.
- Le Base64 s’affiche dans Sortie · Base64 pendant la saisie. Pour de très grosses entrées, vous pouvez décocher En direct et appuyer sur Exécuter.
- Réglez les options qu’attend le système destinataire : URL-safe (- _), Sans remplissage (=), Retour à la ligne et Jeu de caractères. Les valeurs par défaut (alphabet standard, avec remplissage, une seule ligne, UTF-8) conviennent à la plupart des API.
- Appuyez sur Copier la sortie, ou sur Télécharger pour enregistrer le résultat dans
base64.txt. - Pour vérifier l’aller-retour, appuyez sur Inverser. Le Base64 passe dans l’entrée et l’outil bascule en décodage.
Sous les boutons s’affichent la taille de l’entrée en octets, celle de la sortie et la variation en pourcentage, pratique quand un champ a une longueur maximale.
Comment fonctionne l’encodage Base64
Base64 travaille sur des octets : la première étape consiste donc à transformer votre texte en octets avec un jeu de caractères (ici UTF-8, sauf si vous en choisissez un autre). L’encodeur prend ensuite les octets trois par trois, soit 24 bits, les découpe en quatre nombres de 6 bits et écrit chaque nombre sous la forme d’un caractère d’un alphabet de 64 caractères : A–Z, a–z, 0–9, + et /.
L’exemple classique est le texte Man : les octets 4D 61 6E deviennent TWFu. Quand le dernier groupe ne compte qu’un ou deux octets, la sortie est complétée par = : Ma devient TWE= et M devient TQ==. Le détail pas à pas se trouve dans comment fonctionne Base64, et le remplissage expliqué indique quand le = peut être omis.
Pour n octets, la sortie fait toujours 4 × ⌈n / 3⌉ caractères, soit environ 33 % de plus que l’entrée. Le calculateur de taille Base64 fait ce calcul pour n’importe quelle taille, et le surcoût de taille de Base64 explique quand il pèse vraiment. N’importe qui peut inverser du Base64 : il ne cache donc rien. Lisez encodage ou chiffrement avant d’y mettre des secrets.
Options d’encodage
| Option | Ce qu’elle change | Quand l’utiliser |
|---|---|---|
| URL-safe (- _) | + devient - et / devient _ (RFC 4648, section 5) | URL, query strings, noms de fichiers, cookies, JWT. L’encodeur Base64URL l’active par défaut |
| Sans remplissage (=) | Supprime les caractères = de fin | JWT et la plupart des formats URL-safe ; tout ce qui supprime les = de toute façon |
| Retour à la ligne : 76 (MIME, LF ou CRLF) | Insère un saut de ligne tous les 76 caractères | Corps et pièces jointes d’e-mails (encodeur MIME) |
| Retour à la ligne : 64 (PEM) | Insère un saut de ligne tous les 64 caractères | Certificats et clés entre les lignes -----BEGIN et -----END |
| Jeu de caractères | Les octets que devient chaque caractère avant l’encodage | UTF-8, sauf si le destinataire attend de l’UTF-16, du Windows-1251, du Shift_JIS ou un autre encodage historique |
Exemples avec Unicode, emoji et sortie URL-safe
Chaque valeur ci-dessous a été produite avec le module base64 de Python et correspond à la sortie de cet outil.
| Entrée | Réglages | Base64 |
|---|---|---|
Hello | UTF-8 | SGVsbG8= |
Hello, world! | UTF-8 | SGVsbG8sIHdvcmxkIQ== |
café | UTF-8 | Y2Fmw6k= |
café | ISO-8859-1 | Y2Fm6Q== |
€ | UTF-8 | 4oKs |
€ | Windows-1252 | gA== |
👋 | UTF-8 | 8J+Riw== |
👋 | UTF-8, URL-safe, sans remplissage | 8J-Riw |
Привет | UTF-8 | 0J/RgNC40LLQtdGC |
Привет | Windows-1251 | z/Do4uXy |
Le même mot donne un Base64 différent selon le jeu de caractères parce que les octets diffèrent : é occupe deux octets (C3 A9) en UTF-8 et un seul (E9) en Latin-1. L’emoji de la main qui salue fait quatre octets en UTF-8 : seul, il occupe donc 8 caractères, dont deux de remplissage.
Jeux de caractères et caractères qui n’y figurent pas
UTF-8 sait représenter tous les caractères Unicode, il ne perd donc jamais rien. Les 26 autres jeux de caractères de la liste (UTF-16LE/BE, UTF-32LE, ASCII, les pages de code ISO-8859 et Windows, KOI8-R/U, CP866, Shift_JIS, EUC-JP, GBK, Big5 et EUC-KR) existent pour les systèmes qui les attendent. Si votre texte contient un caractère absent du jeu choisi, il est remplacé par ? et un avertissement indique combien de caractères ont été remplacés. Par exemple, € en ISO-8859-1 s’encode en Pw==, qui n’est rien d’autre qu’un point d’interrogation.
Choisissez UTF-16LE pour les chaînes Windows et .NET ainsi que pour PowerShell ; la page UTF-16 en Base64 explique pourquoi. Choisissez ASCII quand un système doit refuser tout ce qui sort du texte 7 bits (ASCII en Base64).
Retour à la ligne
Le Base64 brut tient sur une seule longue ligne, ce qu’exigent JSON, les en-têtes HTTP, les URL et les variables d’environnement. Les e-mails utilisent des lignes de 76 caractères (RFC 2045) et les fichiers PEM des lignes de 64. L’option de retour à la ligne insère des sauts de ligne \n à cette largeur, ou CRLF avec 76 (MIME, CRLF). Les décodeurs, y compris celui de ce site, ignorent les sauts de ligne : une sortie coupée redonne donc les mêmes octets. Base64 dans les e-mails détaille les règles MIME.
Erreurs d’encodage courantes
- Un saut de ligne final se glisse.
echo Hello | base64afficheSGVsbG8Kparce queechoajoute\n. Le texteHelloseul donneSGVsbG8=. Utilisezprintf '%s'et, quand vous collez ici, vérifiez que le nombre d’octets de l’entrée est bien celui que vous attendez. btoa()plante sur l’Unicode. Dans les navigateurs,btoa("Grüße 👋")lèveInvalidCharacterError, carbtoan’accepte que les caractères Latin-1. Encodez d’abord en octets UTF-8, comme dans l’extrait ci-dessous.- Le destinataire utilise un autre jeu de caractères. Si vous encodez en UTF-8 et que l’autre côté décode en Latin-1,
cafédevientcafé. Mettez-vous d’accord sur le jeu de caractères, ou choisissez ici celui du destinataire. - Encoder deux fois. Le Base64 de
SGVsbG8=estU0dWc2JHOD0=. Si une valeur se décode en un autre Base64, un maillon de la chaîne l’a encodée une seconde fois. +et/cassent les URL. Dans une query string,+est lu comme une espace. Utilisez l’option URL-safe ou l’encodeur Base64URL, ou encodez la valeur en pourcent.
Encoder en Base64 en JavaScript, en Python et en ligne de commande
En JavaScript dans le navigateur, convertissez la chaîne en octets UTF-8 avec TextEncoder, puis encodez les octets. Les navigateurs récents peuvent appeler directement bytes.toBase64() (Uint8Array.toBase64).
const bytes = new TextEncoder().encode("Grüße 👋");
let bin = "";
for (const b of bytes) bin += String.fromCharCode(b);
btoa(bin); // "R3LDvMOfZSDwn5GL"
// Node.js
Buffer.from("Grüße 👋", "utf8").toString("base64"); // "R3LDvMOfZSDwn5GL"
Buffer.from("👋", "utf8").toString("base64url"); // "8J-Riw"
En Python, b64encode prend des octets et renvoie des octets :
import base64
base64.b64encode("Grüße 👋".encode("utf-8")).decode("ascii")
# 'R3LDvMOfZSDwn5GL'
base64.urlsafe_b64encode("👋".encode()).rstrip(b"=").decode()
# '8J-Riw'
Sous Linux et macOS, la commande base64 encode l’entrée standard :
printf '%s' 'Grüße 👋' | base64
base64 -w 0 file.bin > file.b64
La première commande affiche R3LDvMOfZSDwn5GL. Le base64 de GNU sous Linux coupe la sortie à 76 colonnes par défaut, et -w 0 désactive ce comportement ; la version macOS ne coupe pas sauf si on le lui demande. D’autres langages et cas particuliers : Base64 en JavaScript, Node.js, Python et PHP.
Images, PDF et tout autre fichier passent par l'encodeur de fichiers, avec sortie en data URI et en JSON.
FAQ
Comment encoder une chaîne en Base64 ?
Collez la chaîne dans la zone d’entrée ci-dessus et copiez le résultat dans la zone de sortie. Dans le code, convertissez la chaîne en octets UTF-8 et encodez ces octets : base64.b64encode(s.encode()) en Python, Buffer.from(s).toString("base64") en Node.js.
Pourquoi mon Base64 se termine-t-il par = ou == ?
Base64 travaille par blocs de 3 octets. Quand la longueur de l’entrée n’est pas un multiple de 3, le dernier bloc est incomplet et = marque les octets manquants : un = pour 2 octets restants, == pour 1. Tous les détails dans le remplissage expliqué.
Pourquoi le même texte donne-t-il un autre Base64 ailleurs ?
En général à cause d’une différence invisible dans les octets : un saut de ligne final (echo en ajoute un), un autre jeu de caractères (UTF-8, Latin-1 ou UTF-16) ou une normalisation Unicode. Comparez le nombre d’octets de l’entrée affiché sous l’outil.
L'encodage Base64 permet-il de cacher des mots de passe ?
Non. Base64 n’a pas de clé et n’importe qui le décode en une seconde. Servez-vous-en pour transporter des données, et utilisez un vrai chiffrement ou un hachage pour les protéger. Voir encodage ou chiffrement.
De combien un texte grossit-il une fois encodé en Base64 ?
Chaque groupe de 3 octets devient 4 caractères : la sortie est donc environ 33 % plus longue, plus les sauts de ligne si vous la coupez. 100 octets d’UTF-8 deviennent 136 caractères.