Aller à l’encodeur Base64

RFC 4648 · Encodeur et décodeur

Encodez tout en Base64, sans rien envoyer.

Un encodeur et décodeur Base64 en ligne et gratuit pour le texte, les fichiers et les images, exécuté en JavaScript dans votre propre onglet. Rien n’est envoyé : l’outil continue de fonctionner hors ligne et n’a aucune limite de taille.

  • Encode pendant la saisie
  • Texte, fichiers et images
  • Modes URL-safe et MIME
  • Sans pub ni inscription
0 caractères · 0 B
0 caractères · 0 B
Options
Variantes d’encodage

Ctrl+Enter encoder Ctrl+Shift+C copier le résultat Ctrl+Shift+X inverser le sens

Encoder en Base64 en ligne : gratuit, instantané et privé

Cet outil pour encoder en Base64 en ligne travaille dans votre navigateur, pas sur un serveur. Tapez dans le champ ci-dessus et le Base64 s’affiche au fur et à mesure : pas de bouton, pas de rechargement, pas d’envoi. Passez sur Décoder pour l’opération inverse, ou ouvrez l’onglet Fichier et image pour encoder une image en Base64 et obtenir une data URI à coller directement dans du HTML ou du CSS.

Tout ce que définit la norme est là : l’alphabet standard, le Base64 URL-safe (RFC 4648 §5), les lignes MIME de 76 caractères, les fins de ligne LF et CRLF, l’encodage ligne par ligne et six jeux de caractères, de l’UTF-8 à l’ISO-8859-1 et l’UTF-16. Si vous préférez encoder en Base64 dans votre code, les exemples ci-dessous couvrent Python, JavaScript, Linux et macOS, PowerShell, PHP, Java, Go, C# et Ruby.

Dernière mise à jour :

Pourquoi celui-ci

Toute la différence : l’endroit où se fait l’encodage.

La plupart des outils Base64 envoient votre fichier à un serveur, l’encodent là-bas et vous renvoient un lien de téléchargement. Vos données quittent donc votre machine pour une transformation que votre navigateur fait en quelques microsecondes. Cet outil n’envoie jamais cette requête.

Comparaison entre cet encodeur Base64 et les outils Base64 en ligne classiques basés sur un serveur
Fonctionnalité freebase64encode.com Encodeur en ligne classique
Où vos données sont traitées Toujours dans votre onglet Envoyées sur un serveur
Limite de taille de fichier Seulement la mémoire de votre appareil Souvent plafonnée à 100 Mo
Fichiers stockés sur un serveur Jamais : il n’y a aucun point d’envoi Conservés temporairement, puis supprimés
Fonctionne hors ligne Oui, une fois la page chargée Non
Encodage en direct pendant la saisie Activé par défaut En option ou via un bouton
Encoder et décoder Une page, un clic pour inverser Deux pages distinctes
Image → data URI + HTML/CSS/Markdown Intégré, avec aperçu Non proposé
Exemples de code en 9 langages Sur la page Non proposé
Surcoût de taille affiché Octets et % en direct Non affiché
Publicités et bandeaux cookies Aucun, et aucun cookie de suivi Généralement présents

Dans votre code

Encoder en Base64 en Python, JavaScript, Bash, PowerShell et cinq autres.

Du code prêt à copier-coller pour encoder et décoder dans les langages les plus recherchés, avec pour chacun le piège qui fait perdre un après-midi à tout le monde.

Encoder en Base64 en Python

Python intègre Base64 dans sa bibliothèque standard. Le piège classique : b64encode attend des bytes, pas un str, il faut donc d’abord encoder le texte en UTF-8.

import base64

# Encode a string ─ note the .encode("utf-8"): b64encode takes bytes, not str
text = "Man is distinguished"
encoded = base64.b64encode(text.encode("utf-8")).decode("ascii")
print(encoded)                       # TWFuIGlzIGRpc3Rpbmd1aXNoZWQ=

# Decode it back
decoded = base64.b64decode(encoded).decode("utf-8")

# URL-safe, unpadded (RFC 4648 §5) ─ the JWT flavour
base64.urlsafe_b64encode(b"data").rstrip(b"=")

# Encode a file, wrapped at 76 characters for MIME
with open("photo.png", "rb") as f:
    mime = base64.encodebytes(f.read()).decode("ascii")

# Build a data URI for an image
uri = "data:image/png;base64," + base64.b64encode(open("photo.png", "rb").read()).decode()

Le mécanisme

Comment fonctionne vraiment l’encodage Base64.

Base64 réécrit des octets quelconques avec 64 caractères que tous les systèmes comprennent. Il prend trois octets (24 bits) et les redécoupe en quatre groupes de 6 bits. Chaque groupe est un index dans l’alphabet A–Z a–z 0–9 + /. Comme 3 octets donnent toujours 4 caractères, la sortie est exactement un tiers plus grande.

Exemple détaillé: Man → TWFu

Texte Man
ASCII 7797110
Bits 01001101 01100001 01101110
Groupes de 6 bits 010011 010110 000101 101110
Index 19 · 22 · 5 · 46
Base64 TWFu

Quand la longueur de l’entrée n’est pas un multiple de trois, le dernier groupe est complété par = pour que la sortie reste un multiple de quatre. Un octet restant donne ==, deux octets restants donnent =.

Exemples d’encodage Base64

Voici des chaînes courantes une fois encodées en Base64 depuis l’UTF-8. Collez-en une dans l’outil ci-dessus pour vérifier.

Chaînes d’exemple et leur encodage Base64
Entrée Base64 Remarque
Hello, World! SGVsbG8sIFdvcmxkIQ== Deux = car 13 octets en laissent un de trop
Hello World SGVsbG8gV29ybGQ= 11 octets, donc un seul =
hello aGVsbG8=
base64 YmFzZTY0 6 octets sont divisibles par 3 : pas de remplissage
user:password dXNlcjpwYXNzd29yZA== Valeur d’un en-tête HTTP Basic auth
héllo 🎉 aMOpbGxvIPCfjok= UTF-8 : é fait 2 octets, l’emoji 4
{"alg":"HS256","typ":"JWT"} eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 En-tête de JWT, URL-safe et sans remplissage

L’alphabet Base64 (table d’index)

Chaque valeur de 6 bits, de 0 à 63, correspond à un caractère. L’alphabet URL-safe est identique, sauf que 62 devient - et 63 devient _. Le = sert au remplissage et ne fait pas partie de l’alphabet.

Table d’index Base64 : valeurs de 0 à 63 et leurs caractères
Valeur Caractère Valeur Caractère Valeur Caractère Valeur Caractère
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Les variantes de Base64 comparées

« Base64 » désigne une famille. Toutes les variantes partagent les mêmes 62 lettres et chiffres et diffèrent par les deux derniers caractères, le remplissage et les retours à la ligne. L’outil ci-dessus produit les trois premières.

Comparaison des variantes de Base64 : standard, URL-safe, MIME et PEM
VarianteSpécificationCaractères 62 / 63RemplissageRetours à la ligneUsage
Standard RFC 4648 §4 + / Obligatoire Aucun Usage général, JSON, data URI
URL-safe (base64url) RFC 4648 §5 - _ Généralement omis Aucun JWT, URL, noms de fichiers
MIME RFC 2045 + / Obligatoire CRLF tous les 76 Pièces jointes d’e-mail
PEM RFC 7468 + / Obligatoire Tous les 64, avec BEGIN/END Certificats TLS, clés

Où l’on utilise Base64

Pièces jointes d’e-mail

SMTP a été conçu pour du texte sur 7 bits. MIME (RFC 2045) encode les pièces jointes en Base64 et coupe la sortie tous les 76 caractères pour que les serveurs de messagerie la transmettent sans la modifier.

Data URI

data:image/png;base64,… intègre une petite image, une police ou un SVG directement dans le HTML ou le CSS et économise une requête. Intéressant en dessous de quelques kilo-octets ; au-delà, les 33 % de surpoids et la perte du cache coûtent plus cher que la requête.

Données JSON et XML

Aucun de ces formats ne peut contenir des octets arbitraires. Base64 transforme un fichier en simple chaîne qui passe dans n’importe quel parseur JSON : c’est ainsi que les données binaires circulent dans les API REST.

JWT et URL

Les JSON Web Tokens utilisent base64url, la variante RFC 4648 §5 avec - et _ à la place de + et / et sans remplissage, pour qu’un jeton tienne sans risque dans une URL, un cookie ou un en-tête.

HTTP Basic auth

Authorization: Basic, c’est littéralement base64(utilisateur:mot de passe). C’est un encodage, pas un chiffrement, et c’est précisément pour cela que Basic auth n’est acceptable qu’en HTTPS.

Configuration et secrets

Les Secrets Kubernetes, les certificats TLS au format PEM et les clés SSH stockent tous leurs données binaires en Base64, pour que le fichier reste un texte lisible, comparable et facile à copier.

Six erreurs qui font perdre un après-midi

Base64 n’est pas du chiffrement

N’importe qui peut le décoder en une commande. Ne l’utilisez jamais pour cacher un mot de passe, une clé d’API ou des données personnelles : utilisez un vrai chiffrement.

Des jeux de caractères différents abîment le texte

Base64 encode des octets, et un texte ne devient des octets qu’une fois un jeu de caractères choisi. Encodez en UTF-8, décodez en Latin-1, et vous obtenez des caractères illisibles. Gardez l’UTF-8 des deux côtés.

echo ajoute un saut de ligne

echo "hi" | base64 encode trois octets, pas deux, car echo ajoute \n. Utilisez printf %s pour encoder exactement ce que vous avez tapé.

Les retours à la ligne changent la chaîne

La sortie MIME contient un CRLF tous les 76 caractères. La plupart des décodeurs ignorent les espaces, mais une comparaison stricte ou un hachage de deux chaînes « identiques » échouera si l’une est coupée.

+ et / cassent les URL

Le + devient une espace quand une chaîne de requête est décodée comme un formulaire, et le / découpe les chemins. Utilisez la variante URL-safe dès que la valeur va dans une URL ou un nom de fichier.

Les données grossissent d’un tiers

Tous les 3 octets deviennent 4 caractères. Mettre un gros fichier en Base64 dans un corps JSON gonfle la bande passante et la mémoire des deux côtés : envoyez plutôt du multipart/form-data.

Questions

L’encodage Base64 en questions.

Qu’est-ce que l’encodage Base64 ?

Base64 est un schéma d’encodage binaire vers texte qui représente des données binaires avec 64 caractères ASCII imprimables (A–Z, a–z, 0–9, + et /). Il permet de faire transiter des données binaires sans risque par des canaux prévus pour du texte : corps d’e-mails, documents JSON et XML, en-têtes HTTP, URL et attributs HTML. Base64 est un encodage, pas un chiffrement : n’importe qui peut le décoder, il n’apporte donc aucune confidentialité.

Comment encoder du texte en Base64 en ligne ?

Collez ou tapez votre texte dans le champ d’entrée de cette page. Le résultat apparaît immédiatement dans le champ de sortie : aucun bouton à cliquer ni rechargement, car l’encodage se fait dans votre navigateur pendant la saisie. Cliquez sur Copier, ou appuyez sur Ctrl+Shift+C, pour copier la chaîne Base64 dans le presse-papiers.

Comment encoder une chaîne en Base64 ?

La chaîne est d’abord convertie en octets avec un jeu de caractères (presque toujours l’UTF-8), puis ces octets sont encodés en Base64. Sur cette page, c’est automatique : tapez la chaîne et copiez le résultat. Par exemple, "Hello, World!" donne SGVsbG8sIFdvcmxkIQ== en Base64. Dans le code, c’est une seule ligne dans tous les grands langages ; voyez les exemples pour Python, JavaScript, Bash, PowerShell, PHP, Java, Go, C# et Ruby.

Cet encodeur Base64 est-il sûr et confidentiel ?

Oui. Chaque octet est encodé localement par du JavaScript qui s’exécute dans votre propre onglet. Vos textes, fichiers et images ne sont jamais envoyés à un serveur, jamais enregistrés dans une base de données et jamais journalisés : le site est une page entièrement statique, sans aucun point d’envoi. Vous pouvez le vérifier en ouvrant l’onglet Réseau des DevTools pendant l’encodage, ou en vous déconnectant d’internet pour constater que l’outil fonctionne toujours.

Comment encoder en Base64 en Python ?

Utilisez le module intégré base64. Encodez avec base64.b64encode(data.encode("utf-8")).decode("ascii") et décodez avec base64.b64decode(encoded).decode("utf-8"). Notez que b64encode attend des bytes et non un str, d’où l’encodage préalable en UTF-8. Pour une sortie URL-safe, utilisez base64.urlsafe_b64encode, et pour une sortie MIME en lignes de 76 caractères, base64.encodebytes.

Comment encoder en Base64 avec PowerShell ou sous Windows ?

Dans PowerShell, lancez [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello")) pour encoder une chaîne, ou [Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\chemin\fichier.png")) pour encoder un fichier. Depuis cmd.exe, certutil -encode in.png out.b64 fonctionne sur toutes les installations de Windows, mais ajoute des lignes d’en-tête BEGIN et END. N’utilisez [Text.Encoding]::Unicode (UTF-16 LE) que pour powershell -EncodedCommand.

Comment encoder en Base64 en JavaScript ?

Pour du texte ASCII, btoa(str) encode et atob(str) décode. btoa échoue sur les caractères au-delà de U+00FF ; pour du texte Unicode, convertissez-le d’abord en octets : btoa(Array.from(new TextEncoder().encode(str), (b) => String.fromCharCode(b)).join("")). Évitez la forme avec spread String.fromCharCode(...bytes), qui fait déborder la pile d’appels sur de grosses entrées. Dans Node.js, utilisez Buffer.from(str, "utf8").toString("base64"). Les environnements récents proposent aussi Uint8Array.prototype.toBase64().

Comment encoder un fichier en Base64 sous Linux ?

Utilisez la commande base64 de coreutils : base64 fichier.txt l’encode et base64 -d fichier.b64 le décode. Ajoutez -w 0 pour désactiver les retours à la ligne quand il vous faut une seule ligne, ou -w 76 pour une sortie conforme à MIME. Pour encoder directement une chaîne, passez-la par un pipe : printf %s "hello" | base64. Préférez printf à echo pour ne pas inclure de saut de ligne final dans les octets encodés.

Comment encoder en Base64 sur Mac ?

macOS fournit la commande base64 BSD dans le Terminal. Encodez un fichier avec base64 -i fichier.png -o fichier.b64, une chaîne avec printf %s "hello" | base64, et décodez avec base64 -D -i fichier.b64 -o fichier.png. Contrairement au base64 GNU de Linux, il ne coupe pas les lignes par défaut et n’a pas d’option -w. Redirigez vers pbcopy pour copier directement le résultat dans le presse-papiers.

Comment encoder une image en Base64 ?

Ouvrez l’onglet Fichier et image de cette page et déposez votre image. Vous obtenez le Base64 brut, une data URI prête à coller (data:image/png;base64,...) et des extraits HTML, CSS et Markdown générés. Base64 rend une image environ 33 % plus lourde : réservez l’intégration aux petites images (moins de 5 Ko environ) et servez les plus grandes comme des fichiers normaux que le navigateur peut mettre en cache.

Qu’est-ce que le Base64 URL-safe ?

Le Base64 standard utilise + et /, qui ont un sens réservé dans les URL et les noms de fichiers. Le Base64 URL-safe (RFC 4648 §5, aussi appelé base64url) remplace + par - et / par _, et supprime généralement le remplissage =. C’est le format des JSON Web Tokens. Activez l’option URL-safe de cette page pour le produire.

Pourquoi ma chaîne Base64 se termine-t-elle par des signes = ?

Base64 traite l’entrée par groupes de 3 octets qui donnent 4 caractères. Quand la longueur de l’entrée n’est pas un multiple de 3, le dernier groupe est complété par des = pour que la sortie reste un multiple de 4. Un octet restant donne deux =, deux octets restants en donnent un. Ce remplissage ne contient aucune donnée et il est facultatif dans certaines variantes comme base64url.

De combien Base64 augmente-t-il la taille des données ?

D’environ 33 % : chaque groupe de 3 octets en entrée devient 4 caractères en sortie, soit un rapport de 4/3. La longueur exacte avec remplissage est de 4 × ⌈n / 3⌉ caractères pour n octets en entrée : 10 octets donnent 16 caractères et 1 Mo donne environ 1,33 Mo. En mode MIME, les retours à la ligne ajoutent environ 2,6 % (un CRLF de deux octets tous les 76 caractères). Cet outil affiche la taille exacte d’entrée et de sortie et le pourcentage de surcoût sous le résultat pendant la saisie.

Y a-t-il une limite de taille de fichier ?

Il n’y a aucune limite côté serveur, puisqu’aucun serveur n’intervient. La limite pratique est la mémoire de votre appareil et celle de l’onglet ; sur un ordinateur, les fichiers de quelques centaines de mégaoctets passent généralement, et cet outil traite les gros fichiers par blocs pour que le navigateur reste réactif. Les outils concurrents qui envoient les fichiers sur un serveur vous limitent souvent à 100 Mo.

L’encodage Base64 fonctionne-t-il avec l’Unicode et les emojis ?

Oui. Le texte est d’abord converti en octets avec le jeu de caractères choisi (UTF-8 par défaut, qui couvre tous les points de code Unicode, emojis compris), puis ces octets sont encodés en Base64. Des jeux de caractères différents entre l’encodeur et le décodeur sont la cause habituelle d’un texte illisible : gardez l’UTF-8 des deux côtés, sauf raison précise.