Subir un archivo
  1. base64hub
  2. Herramientas de texto
  3. JSON a Base64

JSON a Base64: codificar cargas JSON

Pega JSON y obtén una línea de Base64 que puedes poner en una cabecera, una URL o una variable de entorno. Los bytes se codifican tal como los escribiste, así que minifica antes si el resultado tiene que ser reproducible.

Gratis sin registro, sin límites Local no se sube nada Actualizado 27 oct 2026
Entrada 0 BSalida 0 BTamaño –

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo codificar JSON a Base64

  1. Pega el JSON en Entrada · texto, o pulsa Ejemplo para cargar un objeto de muestra.
  2. Copia el Base64 de Salida · Base64. Las cifras de tamaño muestran cuánto ha crecido.
  3. Para URL, cookies o valores tipo token, marca URL-safe (- _) y Sin relleno (=).
  4. Descargar guarda el resultado como base64.txt.

El ejemplo de esta página, {"id":42,"name":"base64hub","tags":["json","encode"],"active":true}, ocupa 67 bytes y se codifica como eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJlbmNvZGUiXSwiYWN0aXZlIjp0cnVlfQ==. Para comprobar un resultado, pulsa Intercambiar o usa Base64 a JSON, que además lo formatea.

Los espacios y el formato cambian el Base64

Base64 codifica exactamente los caracteres del texto JSON, así que dos documentos JSON que significan lo mismo producen Base64 distinto si difieren en un solo espacio:

Texto JSONBase64
{"a":1}eyJhIjoxfQ==
{"a": 1}eyJhIjogMX0=
{ "a": 1 }eyAiYSI6IDEgfQ==
{"a":1} formateado en tres líneasewogICJhIjogMQp9

Cuando el Base64 se compara, se guarda en caché o se firma, genera el JSON con un solo serializador y con ajustes fijos, y codifica esa cadena exacta. El orden de las claves es otra trampa: la mayoría de los serializadores mantienen el orden de inserción, así que {"a":1,"b":2} y {"b":2,"a":1} se codifican de forma distinta.

Python y JavaScript no coinciden por defecto

El objeto {"name": "Zoë", "n": 1} serializado con los valores por defecto de cada lenguaje:

SerializadorTexto JSONBase64
JavaScript JSON.stringify{"name":"Zoë","n":1}eyJuYW1lIjoiWm/DqyIsIm4iOjF9
Python json.dumps{"name": "Zo\u00eb", "n": 1}eyJuYW1lIjogIlpvXHUwMGViIiwgIm4iOiAxfQ==
Python con separators=(",", ":"), ensure_ascii=False{"name":"Zoë","n":1}eyJuYW1lIjoiWm/DqyIsIm4iOjF9

Con URL-safe y sin relleno marcados, la versión de JavaScript pasa a ser eyJuYW1lIjoiWm_DqyIsIm4iOjF9.

Dónde se usa JSON en Base64

  • Cabeceras HTTP. Las cabeceras personalizadas que llevan contexto, como datos de trazas o metadatos del usuario, suelen contener JSON en Base64, porque las comillas del JSON y los caracteres no ASCII no son seguros en los valores de cabecera. Muchos servidores rechazan líneas de cabecera de más de unos 8 KB, así que mantén pequeñas estas cargas.
  • Parámetros de URL. Los valores state de OAuth, los destinos de redirección y los enlaces para compartir a veces llevan un pequeño objeto JSON en Base64URL.
  • Variables de entorno y secretos. Una configuración JSON entera cabe en una variable sin escapes, por ejemplo la clave de una cuenta de servicio en un sistema de CI.
  • Formatos de token. La cabecera y el payload de un JWT son JSON codificado en Base64URL sin relleno. Para crear un token firmado, usa el codificador JWT; esta página solo codifica.

Base64 añade un tercio al tamaño, y las comillas y claves del propio JSON a menudo ocupan más que los valores. La sobrecarga de tamaño de Base64 muestra cuándo compensa comprimir antes.

JSON a Base64 en código

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)

Sin el paso por TextEncoder, btoa(JSON.stringify(obj)) codifica ë como un único byte Latin-1 (eyJuYW1lIjoiWm/rIiwibiI6MX0=), que los decodificadores UTF-8 no pueden leer, y lanza un error con cualquier cosa fuera de Latin-1, como 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'

Más opciones en las páginas de JavaScript, Node.js y Python.

Preguntas frecuentes

¿Cómo convierto JSON a Base64?

Serializa el JSON a una cadena, codifica la cadena como UTF-8 y codifica en Base64 los bytes. Pega el JSON arriba para ver el resultado, o usa btoa con un paso UTF-8 en JavaScript y base64.b64encode(json.dumps(obj).encode()) en Python.

¿Por qué el mismo objeto da un Base64 distinto en Python y en JavaScript?

Sus serializadores son diferentes. json.dumps de Python añade espacios tras : y , y escapa lo que no es ASCII como \u00eb, mientras que JSON.stringify no hace ninguna de las dos cosas. Usa separators=(",", ":") y ensure_ascii=False para que coincidan.

¿Esta herramienta valida o minifica mi JSON?

No, codifica el texto exactamente como lo escribiste, espacios incluidos. Minifica antes el JSON si la salida tiene que ser corta o idéntica byte a byte a la de otro sistema.

¿Debo usar Base64 URL-safe para JSON en una URL?

Sí. El Base64 estándar puede contener +, / y =, que tienen significado en las URL. Marca URL-safe y Sin relleno, el mismo formato que usa JWT.