100 % local: tus datos nunca salen de tu navegador

Formateador JSON — lee un payload minificado

Indenta JSON dejando los números tal como se escribieron. Un identificador de veinte cifras las conserva todas: lees la respuesta, no una copia.

Instantáneo Privado Cero cookies
Indentación

Entrada JSON

Salida JSON

Qué hace esta herramienta

Reindenta. Los caracteres que componen cada valor siguen siendo exactamente los que escribiste.

{"id":12345678901234567890,"ratio":1.0,"enorme":1e400}
{
  "id": 12345678901234567890,
  "ratio": 1.0,
  "enorme": 1e400
}

La vía obvia cambia tus números

Pasa la misma entrada por la implementación obvia —JSON.parse y luego JSON.stringify— y los tres valores cambian:

escritotras una ida y vuelta de análisis e impresión
1234567890123456789012345678901234567000
1.01
1e400null

Un número de JavaScript es un flotante de doble precisión. Guarda unas quince cifras, no recuerda que escribiste un punto decimal, y más allá de unos 1,8 × 10³⁰⁸ se convierte en infinito, que JSON no sabe representar y que se imprime como null.

Nada de eso es una curiosidad de redondeo. 12345678901234567890 es la forma de un snowflake de Twitter, un bigint de PostgreSQL o una referencia de pago, y un formateador que lo cambia te devuelve un archivo que ya no apunta a la misma fila.

Esta herramienta lee cada número como el texto que es y vuelve a escribir ese texto.

Las claves repetidas se rechazan, no se arbitran

{ "port": 8080, "host": "example.com", "port": 3000 }

El RFC 8259 dice que los nombres de un objeto deberían ser únicos —un «debería», no un «debe»— y no dice qué hacer si no lo son. En la práctica los analizadores discrepan: la mayoría se queda con el último, algunos con el primero, otros rechazan el documento.

Elegir por ti produciría un archivo que ya no dice lo mismo, sin nada que lo señale. La herramienta se detiene y da la posición de la segunda clave.

Solo JSON estricto

Ni comentarios, ni comas finales, ni cadenas entre comillas simples. Eso es JSON5 y JSONC: lenguajes distintos que viven en archivos llamados .json.

Aceptarlos supondría producir una salida que la mitad de los analizadores del mundo rechaza, es decir, lo contrario de para lo que sirve un formateador. El mensaje de error nombra la posición del carácter que lo rompió.

Los dos ajustes

Indentación — dos espacios por defecto. Cero produce la forma minificada.

Ordenar claves — alfabéticamente, de forma recursiva, con los arrays en su orden. Práctico antes de comparar dos archivos; déjalo apagado cuando el orden de las claves signifique algo.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Por qué otros formateadores cambian mis números?
Porque analizan a un valor de JavaScript y lo vuelven a imprimir, y un número de JavaScript es un flotante de doble precisión. `12345678901234567890` pasa a `12345678901234567000`, `1.0` pasa a `1`, y `1e400` —más allá del mayor doble— pasa a `null`. Este conserva el texto literal de cada número: el formateo cambia la disposición y nada más.
¿Por qué una clave repetida es un error?
Porque no hay respuesta correcta. El RFC 8259 dice que los nombres de un objeto *deberían* ser únicos y deja el comportamiento indefinido cuando no lo son: algunos analizadores se quedan con el primero, la mayoría con el último, otros rechazan. Elegir en silencio produciría un documento que ya no dice lo mismo que el que pegaste. La posición de la segunda clave está en el mensaje.
¿Puede leer JSON con comentarios o comas finales?
No. Eso es JSON5 y JSONC, lenguajes distintos que llevan el mismo nombre en el archivo. Aceptarlos aquí sería producir una salida que la mitad de los analizadores del mundo rechaza. El error da la posición del carácter culpable.

Convertidores relacionados