L'encodage Base64 expliqué : quand et pourquoi l'utiliser

Le Base64 apparaît partout en développement web – des pièces jointes aux JWT. Découvrez ce qu'il fait réellement, quand l'utiliser, et ses limites.

Qu'est-ce que le Base64 ?

Base64 est un schéma d'encodage qui convertit des données binaires en une chaîne de 64 caractères ASCII imprimables : A-Z, a-z, 0-9, + et /, plus = comme caractère de rembourrage.

Il a été conçu pour résoudre un problème précis : de nombreux protocoles de transport et systèmes de stockage ont été construits pour gérer du texte, pas des données binaires arbitraires. Quand vous devez faire transiter du contenu binaire (images, fichiers, clés) via un canal textuel, Base64 est la solution standard.

Comment ça fonctionne

Base64 prend chaque groupe de 3 octets (24 bits) et les encode en 4 caractères. Cela implique :

  • Une entrée de 3 octets → 4 caractères en sortie
  • Chaque chaîne encodée en Base64 est environ 33% plus volumineuse que le binaire original

Le processus est déterministe et réversible – c'est un encodage, pas un chiffrement. N'importe qui peut décoder une chaîne Base64 pour retrouver les octets d'origine.

Cas d'usage courants

1. Intégration d'images dans HTML ou CSS

Au lieu de lier un fichier image externe, on peut l'intégrer directement :

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUh..." />

Cela supprime une requête HTTP, utile pour les petites icônes. Contrepartie : le fichier HTML devient plus lourd et l'image ne peut pas être mise en cache indépendamment.

2. JSON Web Tokens (JWT)

Les JWT utilisent Base64URL (variante qui remplace + par - et / par _) pour encoder leur en-tête et leur payload. Le token est ainsi utilisable dans les URL et les en-têtes HTTP sans encodage supplémentaire.

3. Pièces jointes e-mail (MIME)

Les protocoles e-mail étaient originellement en texte seul. MIME utilise Base64 pour encoder les pièces jointes binaires (PDF, images, documents Word).

4. Authentification API

L'authentification HTTP Basic encode les identifiants en Base64 :

Authorization: Basic dXNlcjpwYXNzd29yZA==
Attention : ce n'est pas du chiffrement. Les identifiants sont trivialement décodables. C'est HTTPS qui fournit la sécurité, pas Base64.

5. Données binaires dans JSON ou bases de données

JSON n'a pas de type binaire natif. Base64 est la façon standard d'inclure des blobs binaires (icônes, clés cryptographiques) dans un payload JSON.

Ce que Base64 n'est PAS

Base64 n'est pas du chiffrement. Il n'offre aucune sécurité. Ne l'utilisez jamais pour masquer des données sensibles. Base64 n'est pas une compression. Il augmente la taille des données. Base64 n'est pas un hash. Il est entièrement réversible.

Base64 standard vs Base64URL

Base64 standard utilise + et /, qui ont des significations spéciales dans les URL. Base64URL les remplace par - et _, rendant la sortie utilisable dans les chemins URL et les query strings sans encodage percent. Pour les JWT ou les tokens URL, utilisez toujours Base64URL.

Encoder et décoder dans votre navigateur

L'Encodeur/Décodeur Base64 de ce site convertit vos données instantanément, sans envoi à un serveur. En JavaScript : btoa(str) encode, atob(str) décode. En Python : base64.b64encode(bytes) et base64.b64decode(str).

En résumé

Base64 est un encodage binaire-vers-texte qui rend les données binaires sûres pour les systèmes textuels. Il apparaît dans les JWT, les pièces jointes e-mail, les images intégrées et l'authentification API. Il ajoute ~33% de volume et n'offre aucune sécurité intrinsèque.