Le codage Base64 convertit des données binaires en un alphabet textuel de 64 caractères (A-Z, a-z, 0-9, plus deux symboles) afin qu'elles puissent transiter en toute sécurité via des systèmes conçus pour le texte, comme les URL, JSON, e-mails et CSS. Pour décoder, vous inversez le processus pour retrouver les octets d'origine. Il s'agit d'un encodage, pas d'un chiffrement : n'importe qui peut le décoder, il n'offre donc aucune sécurité.
La raison d'être du Base64 est simple. De nombreux canaux ont été conçus pour transporter du texte et sont inefficaces avec les données binaires brutes. Une chaîne JSON ne peut pas contenir d'octets arbitraires, un corps d'e-mail devait historiquement être en ASCII 7 bits, et une URL comporte des caractères réservés ayant une signification spéciale. Le Base64 transforme tout bloc binaire en caractères imprimables sûrs, au prix d'une augmentation d'environ 33% de la taille, car il regroupe 3 octets en 4 caractères.
Comment fonctionne l'encodage Base64#
Le mécanisme mérite d'être compris une fois. Base64 prend vos octets 3 par 3. Trois octets représentent 24 bits, qui se divisent en quatre groupes de 6 bits. Chaque groupe de 6 bits (une valeur de 0 à 63) correspond à un caractère de l'alphabet base64. Ainsi, tous les 3 octets d'entrée deviennent exactement 4 caractères de sortie.
Lorsque l'entrée n'est pas un multiple exact de 3 octets, l'encodeur ajoute un remplissage à la fin. Un octet restant produit deux caractères plus == ; deux octets restants produisent trois caractères plus =. Ce = final est un remplissage, pas des données, et c'est pourquoi les chaînes base64 se terminent souvent par un ou deux signes égal.
Octets d'entrée : M a n
ASCII : 77 97 110
Binaire : 01001101 01100001 01101110
Groupes de 6 bits :010011 010110 000101 101110
Base64 : T W F u
Ainsi, Man s'encode en TWFu. Décodez TWFu et vous récupérez Man, octet par octet. Rien n'est perdu, car base64 est totalement réversible.
Les trois variantes qui piègent les utilisateurs#
Voici l'écart que la plupart des explications laissent ouvert : "base64" n'est pas un format unique. Il existe trois variantes courantes, et utiliser la mauvaise est une source fréquente de bugs "le décodage donne des données incohérentes".
| Variante | Caractères 62 et 63 | Remplissage | Où l'utiliser |
|---|---|---|---|
| Standard (RFC 4648) | + et / | remplissage = | JSON, données générales, la plupart des API |
| URL-safe (RFC 4648 §5) | - et _ | souvent sans remplissage | URL, noms de fichiers, segments JWT |
| MIME (RFC 2045) | + et / | remplissage = | Email ; sauts de ligne tous les 76 caractères |
Les différences comptent en pratique :
- Standard est la valeur par défaut. Il utilise
+et/, qui sont acceptables dans JSON et la plupart des corps de requête. - URL-safe remplace
+par-et/par_, car+et/ont des significations réservées dans une URL (un+peut devenir un espace, un/est un séparateur de chemin). C'est la variante utilisée par les JWT pour leurs segments d'en-tête et de charge utile. Le remplissage est souvent supprimé. - MIME est le base64 standard, mais il insère un saut de ligne tous les 76 caractères pour que les anciens systèmes de messagerie ne soient pas perturbés par des lignes longues. Si vous transmettez ces sauts de ligne à un décodeur strict qui ne les attend pas, il peut échouer.
Astuce : si une chaîne base64 se décode en données incohérentes, vérifiez d'abord l'alphabet. Un
-ou_dans les données signifie qu'elle est URL-safe et que vous la décodez comme standard, ou vice versa. Les variantes incompatibles sont le premier bug base64.
Intégration d'images sous forme d'URL de données#
L'utilisation la plus pratique du base64 sur le web est l'URL de données : intégrer un petit fichier directement dans le HTML ou le CSS au lieu de le lier. Une URL de données a une forme fixe :
data:[<type-mime>][;base64],<données-encodées>
Pour une petite icône PNG, l'image encodée devient une chaîne que vous pouvez insérer directement dans une propriété CSS background-image :
.icon {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...");
width: 16px;
height: 16px;
}
Le navigateur décode le base64, reconstruit le PNG et l'affiche sans requête réseau supplémentaire. La même chose fonctionne en ligne dans le HTML :
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." alt="icône" />
Quand l'intégration aide et quand elle nuit#
C'est le jugement que les explications omettent souvent. L'intégration n'est pas gratuite, car le base64 augmente la taille du fichier d'environ 33% et les octets intégrés ne peuvent pas être mis en cache séparément de la page ou de la feuille de style.
Intégrez une URL de données lorsque :
- L'élément est minuscule (une petite icône, un espaceur 1x1, un SVG de quelques kilo-octets).
- Vous souhaitez éliminer une requête HTTP supplémentaire pour une image critique au-dessus de la ligne de flottaison.
- L'élément est utilisé une seule fois et change rarement.
Lieze plutôt un fichier normal lorsque :
- L'image est grande. Le gonflement du base64 et l'absence de cache séparé alourdissent et ralentissent la page.
- L'élément est réutilisé sur plusieurs pages, où un fichier externe mis en cache est bien plus efficace.
- L'image change souvent, car une copie intégrée invalide tout le cache de la page ou de la feuille de style à chaque modification.
La règle générale : intégrez les petits éléments uniques et critiques ; liez tout le reste.
Le Base64 n'est pas un chiffrement#
Cela piège constamment les débutants, donc il vaut la peine de le dire clairement. Le Base64 est réversible par n'importe qui sans clé ni secret. Il n'obscurcit rien. Si vous encodez en base64 un mot de passe ou une clé API, vous ne l'avez pas protégé ; vous l'avez simplement rendu légèrement moins évident pour un humain qui parcourt le texte. Un payload JWT est encodé en base64url, c'est exactement pourquoi n'importe qui peut le décoder et lire ses revendications sans la clé de signature.
Lorsque vous avez réellement besoin de confidentialité, utilisez un vrai chiffrement. Le Base64 sert au transport sûr des octets via des canaux textuels, pas à les cacher. Pour l'angle JWT spécifiquement, notre guide sur décoder versus vérifier un JWT en toute sécurité explique pourquoi lire un token est trivial alors que lui faire confiance nécessite une vérification de signature.
Encodez et décodez en toute sécurité dans votre navigateur#
Comme les requêtes SQL et les JWT, les données que vous encodez en base64 sont souvent sensibles : un fichier de configuration, un blob de clé privée, une image interne. Les coller dans un outil côté serveur envoie ces octets hors de votre machine. Un codec qui s'exécute entièrement dans le navigateur garde tout en local.
Étape 1 : Encodez du texte ou un fichier#
Ouvrez l'encodeur et décodeur base64 gratuit, collez du texte ou déposez un fichier, puis choisissez votre variante (standard ou URL-safe). Pour une image, l'outil lit le fichier, encode les octets et construit une URL data: prête à coller avec le bon type MIME, le tout dans la page, donc le fichier n'est jamais téléchargé.
Étape 2 : Décodez et prévisualisez le résultat#
Collez une chaîne base64 pour la décoder. S'il s'agit de texte, vous obtenez le texte. S'il s'agit d'une image encodée, le codec prévisualise l'image décodée directement, vous permettant de confirmer sa validité sans regarder un blob. Lorsque l'entrée n'est pas un texte imprimable, il bascule vers un affichage hexadécimal pour inspecter les octets bruts.
Étape 3 : Copiez l'URL de données dans votre CSS ou HTML#
Prenez la chaîne data:image/...;base64,... générée et insérez-la dans une background-image ou une balise <img src>. Réservez cette méthode pour les petits actifs critiques selon les règles d'incorporation ci-dessus, et liez les images plus grandes ou réutilisées normalement.
Référence rapide#
- Base64 transforme chaque groupe de 3 octets en 4 caractères texte, augmentant la taille d'environ 33%.
- Le
=final est un bourrage, pas une donnée. - La norme utilise
+et/; la version URL-safe utilise-et_; MIME insère des sauts de ligne tous les 76 caractères. - Une URL de données est
data:<mime>;base64,<données>et intègre une ressource sans requête supplémentaire. - Intégrez les petites ressources ponctuelles ; liez les grandes ou réutilisées.
- Base64 est un encodage, pas un chiffrement ; il n'offre aucune sécurité.
Pour les images spécifiquement, le convertisseur dédié image-vers-base64 construit l'URL de données avec un aperçu en direct, et le codec base64 Molixa gère le texte, les fichiers et le repli en hexadécimal pour les entrées non textuelles, entièrement côté client.
Foire aux questions#
À quoi sert l'encodage base64 ? Base64 convertit des données binaires en texte brut afin qu'elles puissent transiter via des canaux conçus pour le texte, comme les URL, les charges utiles JSON, les corps d'e-mails et les URL de données CSS. Il permet d'intégrer une image directement dans une feuille de style, de transporter un fichier dans un champ JSON ou de passer des données binaires dans un paramètre d'URL sans qu'elles soient corrompues par des caractères réservés.
L'encodage base64 est-il sécurisé ou crypté ? Ni l'un ni l'autre. Base64 est entièrement réversible par n'importe qui, sans clé ni secret, il n'offre donc aucune sécurité. Il transforme simplement les octets en caractères imprimables sûrs pour le transport. Encoder un mot de passe ou une clé API en base64 ne le protège pas. Pour une confidentialité réelle, utilisez un vrai cryptage, pas base64.
Comment convertir une image en URL de données base64 ?
Encodez les octets de l'image en base64, puis enveloppez-les sous la forme data:image/png;base64,<données-encodées> (remplacez le type MIME par celui du fichier). Collez cette chaîne dans un background-image CSS ou une balise HTML <img src> et le navigateur la décode et l'affiche sans requête supplémentaire. Un codec côté navigateur construit l'URL de données complète et prévisualise le résultat.
Quelle est la différence entre le base64 standard et le base64 compatible URL ?
Le base64 standard utilise + et / pour ses deux derniers caractères, ce qui convient dans JSON et la plupart des API. Le base64 compatible URL les remplace par - et _ car + et / sont réservés dans les URL, et il supprime souvent le remplissage =. Les segments d'en-tête et de charge utile JWT utilisent la variante compatible URL. Décoder avec le mauvais alphabet produit des données inutilisables.
Pourquoi ma chaîne base64 a-t-elle des signes égal à la fin ?
Ce sont des caractères de remplissage. Base64 fonctionne par groupes de 3 octets d'entrée produisant 4 caractères, donc lorsque la longueur d'entrée n'est pas un multiple de 3, l'encodeur ajoute un ou deux caractères = pour compléter le dernier groupe. Un octet final donne ==, deux octets finaux donnent =. Le remplissage ne contient aucune donnée et certains encodeurs compatibles URL l'omettent.
Dois-je intégrer des images en base64 ou les lier à des fichiers ? Intégrez uniquement les petits actifs uniques et critiques, comme une petite icône ou une image au-dessus de la ligne de flottaison où économiser une requête HTTP est important. Base64 augmente la taille d'environ 33 % et les données intégrées ne peuvent pas être mises en cache séparément de la page. Pour les images volumineuses ou fréquemment réutilisées, un fichier lié normal que le navigateur met en cache est plus rapide.



