Skip to content
Retour au blog
Tutoriels

Qu'est-ce que l'encodage Base64 ? Guide pour débutants

Découvrez Base64 depuis zéro : qu'est-ce que l'encodage Base64, comment il fonctionne étape par étape, et pourquoi les développeurs l'utilisent — une introduction claire avec des exemples.

8 min de lecture

Comprendre l’encodage Base64

Vous découvrez Base64 ? Vous êtes au bon endroit. Ce guide accessible aux débutants explique ce qu’est Base64, comment il fonctionne étape par étape, et où vous le rencontrerez en tant que développeur. Pour les sujets avancés comme l’encodage MIME, les Data URLs, l’optimisation des performances et les considérations de sécurité, consultez notre Guide avancé Base64.

L’encodage Base64 est une technique fondamentale utilisée dans le développement logiciel moderne. Que vous intégriez des images dans du HTML, transmettiez des données binaires via des protocoles textuels ou travailliez avec des API, comprendre Base64 est essentiel.

Qu’est-ce que Base64 ?

Base64 est un schéma d’encodage binaire-vers-texte qui représente des données binaires sous forme de chaîne ASCII. Il utilise un ensemble de 64 caractères (A-Z, a-z, 0-9, +, /) pour représenter les données, avec = utilisé pour le remplissage.

Le nom “Base64” vient du fait qu’il utilise exactement 64 caractères ASCII imprimables comme alphabet. Ce schéma est né aux premiers jours de l’email, lorsque le standard MIME (Multipurpose Internet Mail Extensions) avait besoin d’un moyen fiable pour joindre des fichiers binaires — comme des images et des documents — à des messages email qui ne pouvaient gérer que du texte ASCII sur 7 bits. Base64 a été formellement défini dans la RFC 4648, et ses origines remontent à la spécification PEM (Privacy Enhanced Mail) de la fin des années 1980. Depuis, il est devenu l’une des méthodes d’encodage les plus largement adoptées en informatique.

Pourquoi utiliser Base64 ?

  1. Transmission de données : De nombreux protocoles ne supportent que les données textuelles. Base64 permet de transmettre du contenu binaire en toute sécurité.
  2. URI de données : Intégrez de petites images ou fichiers directement dans le HTML/CSS à l’aide d’URI de données.
  3. Charges utiles API : Envoyez des données binaires dans des charges utiles JSON sans problèmes d’encodage.
  4. Pièces jointes email : L’encodage MIME utilise Base64 pour les pièces jointes.

Pour rendre cela plus concret, voici des scénarios quotidiens où Base64 est utilisé :

  • Pièces jointes email (MIME) : Lorsque vous joignez un PDF ou une image à un email, votre client de messagerie encode le fichier en Base64 et l’intègre dans le corps du message sous forme de bloc texte. Le client du destinataire le décode pour retrouver le fichier original.
  • Intégration d’images en HTML/CSS : Au lieu de créer un lien vers une image externe, vous pouvez l’insérer directement en tant que data URL : <img src="data:image/png;base64,iVBOR...">. Cela élimine une requête HTTP supplémentaire, ce qui est utile pour les petites icônes et les sprites.
  • Stockage de données binaires en JSON/XML : JSON et XML sont des formats textuels qui ne peuvent pas représenter nativement des octets bruts. Base64 vous permet d’inclure du contenu binaire — comme des vignettes, des clés cryptographiques ou des certificats — en tant que simple champ de chaîne.
  • Authentification HTTP Basic : L’en-tête Authorization encode les identifiants sous la forme Basic base64(identifiant:mot_de_passe). Par exemple, user:pass devient Basic dXNlcjpwYXNz. Notez qu’il s’agit d’un encodage et non d’un chiffrement — utilisez toujours HTTPS en complément.

Comment fonctionne Base64

L’encodage Base64 fonctionne en prenant chaque groupe de 3 octets (24 bits) de données binaires et en les convertissant en 4 caractères (6 bits chacun) :

Original :  01001101 01100001 01101110  (3 octets = "Man")
Découpage : 010011 010110 000101 101110  (4 groupes de 6 bits)
Base64 :    T      W      F      u       (4 caractères)

Exemple pas à pas : encoder “Hi”

Suivons le processus d’encodage de la courte chaîne “Hi” pour voir exactement ce qui se passe à chaque étape :

1. Obtenir les valeurs ASCII :

  • H = 72, i = 105

2. Convertir en binaire sur 8 bits :

  • H = 01001000, i = 01101001

3. Concaténer tous les bits :

  • 01001000 01101001 (16 bits au total)

4. Découper en groupes de 6 bits (compléter avec des zéros pour remplir le dernier groupe) :

  • 010010 000110 100100
  • Les 16 bits originaux nécessitent 3 groupes de 6 (= 18 bits), donc 2 bits à zéro sont ajoutés.

5. Faire correspondre chaque valeur de 6 bits à l’alphabet Base64 :

  • 010010 = 18 → S
  • 000110 = 6 → G
  • 100100 = 36 → k

6. Ajouter le remplissage : L’entrée fait 2 octets (pas un multiple de 3), donc un = est ajouté.

Résultat : SGk=

La règle de remplissage est simple : si la longueur de l’entrée modulo 3 vaut 1, on ajoute == ; si elle vaut 2, on ajoute = ; si elle vaut 0, aucun remplissage n’est nécessaire.

Pièges courants

Augmentation de la taille

Base64 augmente la taille des données d’environ 33 %. Une image de 1 Mo devient environ 1,37 Mo après encodage Base64 (le surcoût exact dépend des retours à la ligne et du remplissage). Pour de petites ressources comme des icônes, c’est négligeable, mais pour les fichiers volumineux, le gonflement s’accumule vite — une vidéo de 10 Mo dépassera 13 Mo. Évaluez si la commodité de l’intégration en ligne justifie le coût en taille.

Ce n’est pas du chiffrement

Base64 est un encodage, pas un chiffrement. Il n’offre aucune sécurité et peut être facilement inversé par n’importe qui — en JavaScript, atob('SGVsbG8=') retourne "Hello". N’utilisez jamais Base64 pour masquer des mots de passe, des jetons ou des données sensibles. Si vous avez besoin de confidentialité, utilisez un vrai chiffrement (AES, RSA, etc.).

Sécurité URL

Le Base64 standard utilise + et / qui ont une signification spéciale dans les URL et les paramètres de requête. Par exemple, data+test/value en Base64 standard casserait un paramètre d’URL. Le Base64 compatible URL remplace + par - et / par _, produisant des chaînes comme data-test_value qui peuvent être utilisées en toute sécurité dans les URL sans encodage en pourcentage. La plupart des langages offrent une variante URL-safe — utilisez-la dès que votre sortie Base64 apparaît dans une URL.

Base64 dans différents langages de programmation

La plupart des langages disposent d’un support Base64 intégré. Voici deux exemples courants :

// JavaScript (navigateur et Node.js)
btoa('Hello')     // "SGVsbG8="
atob('SGVsbG8=')  // "Hello"
# Python
import base64
base64.b64encode(b'Hello').decode()   # 'SGVsbG8='
base64.b64decode('SGVsbG8=').decode()  # 'Hello'
// Go
package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    encoded := base64.StdEncoding.EncodeToString([]byte("Hello"))
    fmt.Println(encoded) // "SGVsbG8="

    decoded, _ := base64.StdEncoding.DecodeString("SGVsbG8=")
    fmt.Println(string(decoded)) // "Hello"

    // URL-safe variant
    urlEncoded := base64.URLEncoding.EncodeToString([]byte("Hello?World"))
    fmt.Println(urlEncoded) // "SGVsbG8/V29ybGQ="
}

En JavaScript, btoa() (binary-to-ASCII) encode et atob() (ASCII-to-binary) décode. Attention : btoa() ne gère que les caractères Latin-1 ; pour les chaînes Unicode, il faut d’abord encoder en UTF-8. Le module base64 de Python travaille avec des objets bytes, il faut donc convertir une chaîne en bytes avec b'...' ou .encode() avant de la passer. Le package encoding/base64 de Go fournit StdEncoding et URLEncoding prêts à l’emploi, facilitant le choix de la bonne variante selon le cas d’usage. Les autres langages — Java, C#, Ruby, PHP — proposent des API similaires en une ligne dans leurs bibliothèques standard.

Utiliser notre outil Base64

Notre Encodeur/Décodeur Base64 facilite :

  • L’encodage de texte ou de fichiers en Base64
  • Le décodage de chaînes Base64
  • La génération d’URI de données pour l’intégration web
  • La gestion des variantes d’encodage compatibles URL

Conclusion

Base64 est un schéma d’encodage polyvalent que tout développeur devrait comprendre. Utilisez-le lorsque vous devez transmettre des données binaires via des canaux textuels, mais n’oubliez pas que ce n’est pas une mesure de sécurité et que cela augmente la taille des données.


Envie d’aller plus loin ? Consultez notre Guide avancé Base64 : de MIME aux Data URLs pour des exemples d’implémentation en JavaScript et Python, des conseils d’optimisation de performance et des considérations de sécurité.

Articles connexes

Voir tous les articles