Charger un fichier
  1. base64hub
  2. Outils texte
  3. JSON en Base64

JSON en Base64 : encoder des payloads JSON

Collez du JSON et obtenez une ligne de Base64 à placer dans un en-tête, une URL ou une variable d’environnement. Les octets sont encodés exactement tels que saisis : minifiez d’abord si le résultat doit être reproductible.

Gratuit sans inscription, sans limites Local rien n'est envoyé Mis à jour 27 oct. 2026
Entrée 0 BSortie 0 BTaille –

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment encoder du JSON en Base64

  1. Collez le JSON dans Entrée · texte, ou appuyez sur Exemple pour charger un objet d’exemple.
  2. Copiez le Base64 depuis Sortie · Base64. Les chiffres de taille montrent de combien il s’est allongé.
  3. Pour les URL, les cookies ou les valeurs de type jeton, cochez URL-safe (- _) et Sans remplissage (=).
  4. Télécharger enregistre le résultat dans base64.txt.

L’exemple de cette page, {"id":42,"name":"base64hub","tags":["json","encode"],"active":true}, fait 67 octets et s’encode en eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJlbmNvZGUiXSwiYWN0aXZlIjp0cnVlfQ==. Pour vérifier un résultat, appuyez sur Inverser, ou utilisez Base64 en JSON, qui formate aussi le JSON.

Les espaces et la mise en forme changent le Base64

Base64 encode les caractères exacts du texte JSON : deux documents qui veulent dire la même chose produisent donc un Base64 différent dès qu’une seule espace diffère :

Texte JSONBase64
{"a":1}eyJhIjoxfQ==
{"a": 1}eyJhIjogMX0=
{ "a": 1 }eyAiYSI6IDEgfQ==
{"a":1} formaté sur trois lignesewogICJhIjogMQp9

Si le Base64 est comparé, mis en cache ou signé, produisez le JSON avec un seul sérialiseur aux réglages fixes, et encodez cette chaîne exacte. L’ordre des clés est un autre piège : la plupart des sérialiseurs conservent l’ordre d’insertion, si bien que {"a":1,"b":2} et {"b":2,"a":1} s’encodent différemment.

Python et JavaScript divergent par défaut

L’objet {"name": "Zoë", "n": 1} sérialisé avec les réglages par défaut de chaque langage :

SérialiseurTexte JSONBase64
JavaScript JSON.stringify{"name":"Zoë","n":1}eyJuYW1lIjoiWm/DqyIsIm4iOjF9
Python json.dumps{"name": "Zoë", "n": 1}eyJuYW1lIjogIlpvXHUwMGViIiwgIm4iOiAxfQ==
Python avec separators=(",", ":"), ensure_ascii=False{"name":"Zoë","n":1}eyJuYW1lIjoiWm/DqyIsIm4iOjF9

Avec URL-safe et sans remplissage cochés, la version JavaScript devient eyJuYW1lIjoiWm_DqyIsIm4iOjF9.

Où l’on utilise du JSON en Base64

  • Les en-têtes HTTP. Les en-têtes personnalisés qui transportent du contexte, comme des données de traçage ou des métadonnées utilisateur, contiennent souvent du JSON en Base64, car les guillemets et les caractères non ASCII du JSON brut ne sont pas sûrs dans les valeurs d’en-tête. Beaucoup de serveurs rejettent les lignes d’en-tête de plus de 8 Ko environ : gardez ces payloads petits.
  • Les paramètres d’URL. Les valeurs state d’OAuth, les cibles de redirection et les liens de partage transportent parfois un petit objet JSON en Base64URL.
  • Les variables d’environnement et les secrets. Une configuration JSON entière tient dans une seule variable sans échappement, par exemple une clé de compte de service dans un système de CI.
  • Les formats de jetons. L’en-tête et le payload d’un JWT sont du JSON encodé en Base64URL sans remplissage. Pour construire un jeton signé, utilisez l’encodeur JWT ; cette page ne fait qu’encoder.

Base64 ajoute un tiers à la taille, et les guillemets et les clés du JSON pèsent souvent plus lourd que les valeurs. Le surcoût de taille de Base64 montre quand compresser d’abord est rentable.

JSON en Base64 dans le code

const obj = { name: "Zoë", n: 1 };
const bytes = new TextEncoder().encode(JSON.stringify(obj));
btoa(String.fromCharCode(...bytes));                     // "eyJuYW1lIjoiWm/DqyIsIm4iOjF9"
Buffer.from(JSON.stringify(obj)).toString("base64url"); // "eyJuYW1lIjoiWm_DqyIsIm4iOjF9" (Node.js)

Sans l’étape TextEncoder, btoa(JSON.stringify(obj)) encode ë en un seul octet Latin-1 (eyJuYW1lIjoiWm/rIiwibiI6MX0=), que les décodeurs UTF-8 ne savent pas lire, et lève une exception pour tout ce qui dépasse le Latin-1, comme un emoji.

import base64, json

obj = {"name": "Zoë", "n": 1}
text = json.dumps(obj, separators=(",", ":"), ensure_ascii=False)
base64.b64encode(text.encode("utf-8")).decode()   # 'eyJuYW1lIjoiWm/DqyIsIm4iOjF9'

D’autres options sur les pages JavaScript, Node.js et Python.

FAQ

Comment convertir du JSON en Base64 ?

Sérialisez le JSON en chaîne, encodez la chaîne en UTF-8 et encodez les octets en Base64. Collez le JSON ci-dessus pour obtenir le résultat, ou utilisez btoa avec une étape UTF-8 en JavaScript et base64.b64encode(json.dumps(obj).encode()) en Python.

Pourquoi le même objet donne-t-il un Base64 différent en Python et en JavaScript ?

Leurs sérialiseurs diffèrent. json.dumps en Python ajoute des espaces après : et , et échappe le non-ASCII sous la forme \u00eb, alors que JSON.stringify ne fait ni l’un ni l’autre. Utilisez separators=(",", ":") et ensure_ascii=False pour obtenir le même résultat.

Cet outil valide-t-il ou minifie-t-il mon JSON ?

Non, il encode le texte exactement tel que vous l’avez saisi, espaces compris. Minifiez d’abord le JSON si la sortie doit être courte ou identique octet pour octet à celle d’un autre système.

Faut-il utiliser du Base64 URL-safe pour du JSON dans une URL ?

Oui. Le Base64 standard peut contenir +, / et =, qui ont un sens dans les URL. Cochez URL-safe et Sans remplissage, le format qu’utilisent les JWT.