Vos données restent 100 % privées -- Base64 est entièrement encodé et décodé directement sur votre appareil.
Base64 est une façon de représenter des données binaires sous forme de texte brut en utilisant 64 caractères ASCII : A–Z, a–z, 0–9, plus + et /. Il permet à des données binaires comme les images, les clés et les pièces jointes d'e-mail de voyager en toute sécurité à travers des systèmes conçus pour le texte. Il s'agit d'encodage, pas de chiffrement.
Base64 utilise un alphabet fixe de 64 caractères. Chaque valeur de 0 à 63 correspond exactement à l'un d'eux, c'est ainsi que 3 octets quelconques de données binaires deviennent 4 caractères lisibles :
| Valeurs | Caractères | |
|---|---|---|
| 0–25 | A–Z | 26 lettres majuscules |
| 26–51 | a–z | 26 lettres minuscules |
| 52–61 | 0–9 | 10 chiffres |
| 62–63 | + / | 2 symboles |
Le signe "=" est la seule exception. Il s'agit d'un rembourrage, pas l'une des 64 valeurs, et il ne fait qu'arrondir le dernier bloc.
Vous l'avez presque certainement déjà vu. Base64 apparaît partout où des données binaires doivent circuler à l'intérieur du texte :
Cette astuce d'URI de données ressemble à ceci. La longue chaîne est l'image entière :
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />Les premiers protocoles réseau étaient conçus pour le texte, pas pour les octets bruts. ASCII utilisait 7 bits et 128 caractères, ce qui convenait pour l'anglais mais pas pour les données binaires. Certains systèmes altéraient les caractères de contrôle ou réécrivaient les fins de ligne (LF en CR + LF), corrompant silencieusement les images et l'audio en transit.
Base64 contourne tout cela en n'émettant que des caractères sur lesquels tous les systèmes s'accordent déjà. Base16 et Base32 font le même travail avec des alphabets plus petits, mais Base64 compresse davantage de données par caractère tout en restant sûr. C'est pourquoi il a gagné.
Tout le schéma repose sur une seule idée répétée : prendre 3 octets (24 bits), les redécouper en quatre groupes de 6 bits, et rechercher chaque groupe dans l'alphabet. Voici le mot "Logto", encodé à la main.
Étape 1. Convertir chaque caractère en binaire 8 bits :
| Caractère | Code ASCII | Binaire |
|---|---|---|
| L | 76 | 01001100 |
| o | 111 | 01101111 |
| g | 103 | 01100111 |
| t | 116 | 01110100 |
| o | 111 | 01101111 |
Étape 2. Prendre les trois premiers octets, "Log", et redécouper ces mêmes 24 bits en quatre groupes de 6 bits :
Étape 3. Lire chaque groupe de 6 bits comme un nombre, puis rechercher ce nombre dans l'alphabet :
| Groupe de 6 bits | Valeur | Caractère Base64 |
|---|---|---|
| 010011 | 19 | T |
| 000110 | 6 | G |
| 111101 | 61 | 9 |
| 100111 | 39 | n |
"Logto" fait 5 octets, pas un multiple de 3. Les deux derniers octets, "to", laissent un découpage 6 + 6 + 4. Compléter ces 4 derniers bits avec des zéros pour remplir un groupe de 6 bits, puis ajouter un "=" pour compléter le bloc de 4 caractères :
Assembler les blocs :
"Logto" → TG9ndG8=Chaque langage l'intègre nativement. En Node.js :
const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=Trois règles découlent de ce processus, qui méritent d'être gardées en tête :
Recourez à Base64 lorsque des données binaires doivent passer par un canal uniquement textuel :
Ce que vous obtenez en retour :
Le Base64 standard s'appuie sur trois caractères qui entrent en conflit avec le fonctionnement des URL, des chaînes de requête et des noms de fichiers : +, / et le rembourrage =. Insérez une chaîne Base64 normale dans un lien et elle peut se casser de manière silencieuse :
Vous pouvez les encoder en pourcentage (+ devient %2B, / devient %2F, = devient %3D), mais cela alourdit la chaîne et il est facile de double-encoder par erreur.
Base64URL (RFC 4648 §5) règle cela à la source : remplacer + par -, remplacer / par _, et supprimer le rembourrage =. Le résultat s'insère directement dans une URL, un paramètre de requête ou un nom de fichier sans rien à échapper. Vous le verrez dans les URL, les noms de fichiers et de nombreuses API web.
const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8Base64 est une représentation, pas un repas gratuit. Gardez trois choses en tête :
Non. Il s'agit d'un encodage réversible avec un alphabet public, donc n'importe qui peut le décoder instantanément et il n'ajoute aucune confidentialité. Chiffrez les données sensibles à la place.
Base64 transforme chaque 3 octets en 4 caractères, donc la forme encodée est toujours environ un tiers plus grande que les octets d'origine.
Ce sont des rembourrages qui maintiennent la sortie à un multiple de 4 caractères. Un "=" signifie que l'entrée avait 2 octets restants ; deux "=" signifient qu'il en avait 1 ; pas de "=" signifie que la longueur était déjà un multiple de 3 octets.
Base64URL est le même encodage avec un alphabet sûr pour les URL et les noms de fichiers : - et _ remplacent + et /, et le rembourrage = est généralement supprimé. Il est courant dans les URL, les noms de fichiers et de nombreuses API web.
N'importe quoi en binaire : images, PDF, clés, exécutables. Base64 fonctionne sur des octets bruts, donc le type de contenu d'origine n'a pas d'importance.
Non. L'encodage et le décodage s'exécutent entièrement dans votre navigateur. Rien de ce que vous collez n'est téléchargé ni enregistré.