← Volver a la herramienta JSON

Comparar JSON

Última actualización: 2 de octubre de 2026

Compara dos documentos JSON y ve solo lo que realmente difiere. Como la comparación es estructural, reordenar claves o cambiar el formato no cuenta; el informe lista cada cambio real con su ruta, dentro de tu navegador.

Estructural, no textual Se ignora el orden de claves Se ejecuta en tu navegador Sin subir nada Código abierto (MIT)

Qué ve una comparación estructural

Los dos documentos se analizan primero y luego se recorren juntos. Solo se reportan las diferencias en los datos: una clave presente en un lado y no en el otro, un valor que cambió, o un valor cuyo tipo cambió —un número que pasó a ser cadena, un objeto que pasó a ser array—. Los espacios y el orden de las claves no forman parte de la comparación, porque después de analizar ya no existen.

Un cambio de tipo se reporta una vez, en la ruta donde ocurre, en lugar de desglosarse en una eliminación y una adición por cada hoja que hay debajo. Eso mantiene legible el informe cuando cambia de forma un subárbol entero.

Por qué esto no es un diff de líneas

Un diff de texto —lo que muestra git diff— compara líneas. Para JSON eso suele engañar. Reindentar un archivo, o emitir las mismas claves en otro orden, es normal cuando el JSON lo generan herramientas distintas o versiones distintas de una biblioteca, y un diff de líneas lo convierte en un muro de cambios aunque los datos sean idénticos.

Los dos documentos de abajo son el mismo. Un diff de líneas reporta cuatro líneas cambiadas; esta herramienta no reporta nada:

{"a": 1, "b": 2}

{
  "b": 2,
  "a": 1
}

Lo contrario también se cumple, y es la parte útil: un solo carácter cambiado dentro del nombre de una clave, o un número que pasó de 3 a 4, aparece como exactamente un cambio en vez de quedar enterrado en el ruido del reformateo.

Cómo leer la notación de rutas

Cada cambio se reporta con una ruta. $ es la raíz del documento; un punto entra en una clave de objeto y un corchete indexa un array. Así, $.settings.indent es la clave indent dentro de settings, $.features[2] es el tercer elemento del array features, y $["weird key"] nombra una clave que no es un identificador simple. La notación sigue el estilo de JSON Pointer, así que una ruta del informe se puede pegar en otras herramientas JSON.

Lo que la comparación no puede decirte

Preguntas frecuentes

¿Importa el orden de las claves?

No. Los dos documentos se analizan antes de compararse, y las claves de los objetos se emparejan por nombre, no por posición. Por eso, reformatear un documento o emitir sus claves en otro orden produce una diferencia vacía, como debe ser, porque los datos son los mismos.

¿Por qué al insertar un elemento en un array aparecen tantos cambios?

Los arrays se emparejan por posición, como en casi cualquier comparación estructural. Insertar un elemento al principio de un array largo desplaza cada elemento posterior un índice, así que todos se reportan como modificados aunque los valores solo se hayan movido. Sin una clave con la que emparejar, nada puede saber qué se insertó y qué se alteró. Si tus elementos llevan un id estable, ordena ambos lados por él antes de comparar.

¿Qué pasa si uno de los lados no es JSON válido?

La comparación se detiene y se muestra el mensaje del propio analizador para el documento que falló, indicando si es el izquierdo o el derecho. No se compara nada, porque dos documentos no se pueden recorrer juntos hasta que ambos se analicen.

¿Se sube mi JSON a algún sitio?

No. Los dos documentos se analizan con JSON.parse en tu navegador y se comparan en memoria. Ninguna petición los transporta, y no hay cuenta ni almacenamiento en servidor. Puedes cargar la página y luego desconectarte de la red: la comparación sigue funcionando.

¿Puede saber si un valor se movió en vez de cambiar?

No. Esta herramienta reporta diferencias, no produce un parche. No emite un documento JSON Patch ni detecta valores que se movieron de un sitio a otro; verás una eliminación en la ruta antigua y una adición en la nueva.

¿Puedo comparar JSON con comentarios o comas finales?

No. La comparación usa el mismo analizador estricto que el resto del sitio, así que JSON5, los comentarios y las comas finales se rechazan. Si un documento no se analiza, pásalo primero por el formateador o el validador para ver dónde falla.

¿Necesitas convertir JSON en una tabla? JSON a CSV lo hace. ¿Has encontrado un fallo? Escríbenos.