Formateador y validador de JSON

Pega JSON o abre un archivo. Se comprueba mientras escribes y se muestra formateado con la sangría que elijas, o minificado; si hay un error, aparece con su línea, su columna y lo que debes corregir.

Pégalo, suelta un archivo sobre el cuadro o abre uno. No se sube nada.
Salida

Pega JSON en el cuadro, o pulsa «Ejemplo» para ver cómo funciona.

¿Estás creando una API que sirve JSON? Necesita un servidor donde ejecutarse. Desde 3,02 € al mes hoy, entre 2226 servidores.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo funciona

La página lee tu texto con un analizador de JSON estricto que sigue la RFC 8259, el estándar de JSON. Se detiene en el primer carácter que no puede ser JSON e indica dónde está y por qué: una coma final, una comilla simple, unos dos puntos o una coma que faltan, un comentario, un número que JSON no permite.

El JSON válido se escribe de nuevo con la sangría que elegiste, o sin ningún espacio opcional si lo minificas. Los números y las cadenas se copian exactamente como los escribiste, así que un ID largo como 12345678901234567890 conserva todos sus dígitos y un escape como \u00e9 se queda como está. Al ordenar, las claves de cada objeto se colocan según el punto de código de sus caracteres; las claves que aparecen dos veces conservan las dos copias, en orden.

Todo se ejecuta en tu navegador. Los archivos de hasta unos pocos megabytes se formatean al instante; por encima de 1 MB, la página espera a que pulses «Formatear» en lugar de reformatear con cada tecla.

Ejemplo

Esta entrada tiene una coma final después del último elemento:

input.json
{
  "name": "web-1",
  "ports": [80, 443,]
}

El validador se detiene en la línea 3, columna 20, en esa coma, y avisa de que JSON no permite una coma después del último elemento. Quítala y el texto se formatea como se ve, o se minifica en una sola línea de 33 caracteres.

formatted.json
{
  "name": "web-1",
  "ports": [
    80,
    443
  ]
}

Preguntas

¿Por qué mi JSON falla por una coma final?

Porque JSON solo permite una coma entre dos elementos. JavaScript, Python y muchos formatos de configuración aceptan una coma después del último elemento de una lista o de un objeto; JSON no, y los analizadores estrictos como JSON.parse, jq y la mayoría de las API rechazan todo el documento. Quita la coma que señala el error.

¿Puede JSON tener comentarios?

No. JSON no tiene sintaxis de comentarios. Algunos programas leen JSONC o JSON5, que sí los permiten (los ajustes de VS Code y tsconfig.json son JSONC), pero un analizador de JSON estricto los rechaza. Borra los comentarios, o deja una nota en un campo normal como "_comment".

¿Formatear cambia mis números?

Aquí no. JSON.parse de JavaScript convierte cada número en un valor de coma flotante de 64 bits, así que 12345678901234567890 vuelve como 12345678901234567000 y 1.10 como 1.1. Este formateador nunca los convierte: los números, las cadenas y los escapes se escriben tal como estaban. Solo cambian los espacios y los saltos de línea que hay entre ellos.

¿Cuál es la diferencia entre formatear y minificar?

Formatear añade saltos de línea y sangría para que una persona pueda leer la estructura. Minificar quita todos los espacios y saltos de línea que JSON no necesita, con lo que el archivo ocupa menos al guardarlo y enviarlo. Ambos contienen exactamente los mismos datos; un programa los lee igual.

¿Se envía a algún sitio el JSON que pego?

No. El script de esta página lo analiza y lo formatea en tu navegador y nunca sale de tu dispositivo, así que es seguro para configuraciones y respuestas de API que contengan claves o datos personales. Una vez cargada la página, funciona sin conexión.