Cuándo minificar JSON
Minificar tiene sentido en cualquier momento donde los bytes cuestan: tráfico de red, storage en bases de datos, columnas JSON en MySQL o Postgres, payloads de WebSocket, mensajes en colas como SQS o Kafka. Cada espacio en blanco que quitás es un byte menos que tu sistema procesa, almacena o transmite. A escala (millones de requests por día) la diferencia se nota en facturación de cloud.
Cuándo NO minificar
- Archivos de configuración versionados en git. Si tu package.json está minificado, los diffs se vuelven ilegibles y los merge conflicts son una pesadilla.
- Logs. Aunque haya herramientas que pretty-printean, leer logs minificados a ojo en una terminal es frustrante.
- Datos que un humano va a editar. Si esperás que alguien edite el archivo manualmente, dejalo formateado.
- Cuando ya hay compresión gzip/brotli. El servidor te comprime al vuelo y la diferencia entre minificado y formateado se reduce mucho. Igual conviene minificar antes para aliviar parsers.
Cómo funciona la minificación
El proceso es trivial: parsear el JSON con JSON.parse y volver a serializarlo con JSON.stringify(obj) sin pasar el tercer argumento de indentación. El resultado es JSON canónico sin whitespace fuera de strings. Los strings se mantienen intactos: si dentro de un string hay un espacio, se queda. Solo se eliminan espacios estructurales.
Compresión adicional
Minificar es solo el primer paso. Si querés bajar más, considerá:
- Gzip o Brotli en HTTP. Tu servidor web (nginx, Cloudflare, Vercel) lo hace por defecto. Reduce JSON entre un 60% y un 80% adicional.
- Formatos binarios. Si controlás cliente y servidor, MessagePack, CBOR o Protocol Buffers son sustancialmente más chicos.
- Cambiar nombres de claves. Si una API devuelve millones de objetos con clave
"longDescriptiveKey", abreviarla a"k"ahorra mucho. Pero pierde legibilidad y requiere mapear de vuelta del lado del cliente.
Tamaños típicos antes y después
Un objeto típico de e-commerce con 20 campos, indentación de 2 espacios, ocupa unos 800 bytes. Minificado baja a 600. Minificado y comprimido con gzip cae a 250-300. Si estás devolviendo listas de mil objetos por request, esos 50% importan en latencia y costo de bandwidth.
Validación incluida
Este minificador parsea con JSON.parse, así que si tu input tiene errores de sintaxis, te avisa. Si tiene comentarios o trailing commas (que JSON estricto no acepta), también falla. Para input no estándar usá un linter previo y limpialo antes.
Privacidad y datos sensibles
Como el minificador corre en tu navegador, podés pegar configs con tokens, datos de usuarios reales, o cualquier información sensible sin riesgo. Nada sale de tu dispositivo. Si dudás, abrí las DevTools y mirá el panel Network: vas a ver que no hay requests salientes mientras minificás.