Minificar JSON

Minifica JSON a su forma valida mas compacta o formatealo con 2 espacios, 4 espacios o tabulaciones. Ordenacion opcional de claves, contador de bytes en vivo y ejecucion 100% en tu navegador.

Elimina cada byte que no cambia los datos. Pega JSON para quitar todos los espacios opcionales, o cambia a embellecer para volver a distribuirlo con la sangria que prefieras. La ordenacion de claves hace comparables dos documentos, y el contador de bytes muestra lo que realmente has ganado.

Lo que la minificacion hace y lo que no

Solo se eliminan espacios

La gramatica de JSON permite espacios, tabulaciones y saltos de linea entre dos tokens cualesquiera, y ninguno de ellos aporta significado. Minificar consiste en eliminar todos esos caracteres opcionales: {"a": 1, "b": 2} se convierte en {"a":1,"b":2}. El valor analizado es identico byte a byte en memoria, y por eso la operacion siempre es segura antes de enviar un payload.

Lo que la minificacion no hace es comprimir los datos. Los nombres de clave, el contenido de las cadenas y la precision numerica se conservan exactamente. Si tu documento es grande porque repite los mismos veinte nombres de campo en diez mil registros, minificar recortara la sangria pero dejara intacta la repeticion: eso es trabajo de gzip o de un esquema distinto.

Cuando el ahorro importa de verdad

En una respuesta de API formateada, los espacios suelen suponer entre el 10% y el 30% del tamano bruto. Suena util hasta que recuerdas que casi toda respuesta HTTP ya viaja comprimida con gzip o brotli, y esos algoritmos manejan secuencias de espacios extraordinariamente bien. Tras gzip, la diferencia entre JSON minificado y formateado suele quedar por debajo del 2%.

La minificacion sigue siendo util en tres casos: datos incrustados directamente en una pagina HTML o en un bundle de JavaScript, donde no se comprimen por separado; almacenamiento en una columna de base de datos o en una cache, donde lo que ocupa es la cadena en bruto; y cualquier sitio donde cuentes caracteres contra un limite estricto, como un parametro de URL o un campo de mensaje con tope fijo.

Ordenar claves para comparar

Los objetos JSON son oficialmente desordenados, pero cada serializador escribe las claves en algun orden concreto y dos sistemas rara vez eligen el mismo. Eso vuelve ilegible un diff de texto plano entre dos documentos logicamente identicos.

Ordenar las claves de forma recursiva antes de la salida da a ambos documentos la misma forma canonica, de modo que un diff por lineas muestra por fin solo los cambios reales. Es el mismo truco que hay detras de las compilaciones reproducibles y las caches direccionadas por contenido. Eso si: ordenar cambia los bytes de salida, asi que el documento ordenado ya no coincide con lo que produjo el sistema origen. Usalo para comparar, no para devolver algo cuya firma deba verificarse.

Nota de codigo abierto: implementado en JavaScript puro sin librerias de terceros.

Preguntas frecuentes

¿Se sube mi informacion a algun sitio?
No. El analisis y la reserializacion ocurren integramente en tu navegador con las funciones JSON nativas, asi que el documento nunca sale de la pagina.
¿Minificar cambia mis datos?
No. Solo se eliminan los espacios insignificantes entre tokens. Cada clave, cadena, numero y booleano se conserva intacto y el valor analizado es identico.
¿Por que el ahorro es menor de lo que esperaba?
El contador mide bytes UTF-8 en bruto. Si tu JSON ya era compacto, o su tamano procede sobre todo del contenido de las cadenas y no de la sangria, hay pocos espacios que quitar.
¿Debo minificar si mi servidor ya usa gzip?
Para trafico de red normalmente no: gzip comprime muy bien las secuencias de espacios y la ganancia extra suele quedar por debajo del 2%. Sigue siendo util para JSON incrustado o almacenado.
¿Que hace ordenar las claves?
Reordena alfabeticamente las claves de cada objeto de forma recursiva. Dos documentos logicamente identicos producen entonces el mismo texto, lo que hace utilizable un diff por lineas.
¿Por que da error de analisis un JSON que parece valido?
La gramatica estricta rechaza comas finales, cadenas con comillas simples, comentarios y claves sin comillas. Esas son caracteristicas de los literales de objeto de JavaScript, no de JSON.