Ir al contenido principal
PulsarKit

CSV, Excel y JSON, medidos con la misma tabla de 10 000 filas

Pasamos una tabla de 10 000 filas por CSV, Excel y JSON con seis conversores. Aquí están los tamaños de los archivos, los tamaños en ZIP, los tiempos y todas las celdas que cambiaron al volver.

Por PulsarKit ·

La respuesta corta

Con una tabla plana, CSV dio el archivo de texto más pequeño: 1,2 MB para nuestras 10 000 filas. Las mismas filas ocuparon 2,7 MB como JSON con sangría y 2 MB como NDJSON. Comprimidos en ZIP, CSV y JSON quedaron cerca: 357 KB frente a valores de entre 398 y 424 KB.

Las diferencias grandes aparecieron a la vuelta. Una ida y vuelta por Excel o por JSON, con los ajustes predeterminados, cambió 10 960 de 100 000 celdas, y no las mismas. Un solo ajuste hizo exacto el viaje por Excel. Solo JSON conservó los campos anidados: una vez que pasaron por CSV o por una hoja de cálculo, ya no volvieron. Así que elige el formato según lo que vaya a leer el archivo después.

Cómo lo medimos

El 21 de octubre de 2026 creamos con un script una tabla de prueba: 10 000 filas y 10 columnas de datos inventados. Tiene identificadores con ceros a la izquierda, como 000001, códigos de barras de 13 dígitos y números de cuenta de 19 dígitos. También tiene fechas ISO e importes con dos decimales, más o menos la mitad negativos. Los nombres mezclan letras latinas, con tilde y cirílicas, con un emoji cada cien filas. Una nota de cada cien contiene una coma, comillas y un salto de línea. La columna de cupones está vacía en 3096 filas, y todos los números de teléfono empiezan con un signo más.

La pasamos por seis conversores de pulsarkit.com: CSV a Excel, Excel a CSV, CSV a JSON, JSON a CSV, Excel a JSON y JSON a Excel. Usamos Chrome 155 en un MacBook de 2023. Los seis funcionan dentro de la pestaña del navegador, y los ajustes se quedaron en sus valores predeterminados salvo cuando los nombramos. El cronómetro corría desde que se pulsaba el botón hasta que aparecía el botón «Descargar». Después, nuestro propio script comparó cada celda devuelta con la original, y leímos los tipos de celda dentro de cada libro. Los tamaños en ZIP salen de un ZIP estándar, Deflate de nivel 6.

Tamaño, tamaño en ZIP y velocidad

CSV escribe los nombres de las columnas una sola vez, arriba. JSON los repite en cada registro. Con su sangría predeterminada de dos espacios, CSV a JSON convirtió la tabla en 2,7 MB, 2,3 veces el CSV. NDJSON, un registro compacto por línea, ocupó 2 MB. Formatear JSON en modo «Minimizar» dejó el archivo con sangría en esos mismos 2 MB, un 23,6 por ciento menos.

Un ZIP elimina casi toda esa diferencia, porque las claves repetidas son justo lo que mejor se comprime. En ZIP, el CSV ocupó 357 KB; el NDJSON, 398 KB, y el JSON con sangría, 424 KB.

Un archivo XLSX ya es un ZIP, así que su peso depende del programa que lo escribe. La hoja de CSV a Excel, guardada de nuevo con LibreOffice Calc, ocupó 753 KB. Cuando solo importa el tamaño, envía el CSV en ZIP.

La velocidad no distinguió a los formatos. Cronometramos 60 ejecuciones, y la conversión mediana de las 10 000 filas tardó alrededor de un tercio de segundo. De ellas, 49 tardaron menos de medio segundo. La más lenta, el primer Excel a CSV de nuestra sesión, tardó 2 segundos.

Qué cambió una ida y vuelta

Por Excel: CSV a Excel y después Excel a CSV. Los ceros a la izquierda, las cuentas de 19 dígitos, los códigos de barras, los saltos de línea dentro de las notas, los emojis y las celdas vacías volvieron tal como estaban. Cambiaron dos columnas. Cada true y false volvió como TRUE y FALSE, porque el libro los guarda como valores lógicos. Y 960 importes perdieron un cero final, así que 612.40 pasó a ser 612.4: el libro guarda el número, no la forma en que estaba escrito.

Por JSON: CSV a JSON y después JSON a CSV. Los mismos 960 importes perdieron su cero final, por la misma razón. Todos los números de teléfono volvieron con un apóstrofo delante, como '+1 202 555 0117. JSON a CSV se lo añade a cualquier valor que empiece por +, =, - o @ y no sea un número sin más. Así una hoja de cálculo no puede ejecutarlo como fórmula. Las celdas vacías pasaron a ser cadenas vacías en el JSON, mientras que Excel a JSON escribió null en esas mismas 3096 celdas. El JSON que obtienes depende del camino, salvo que en CSV a JSON elijas null en «Las celdas vacías se convierten en».

En un navegador con la hora UTC o UTC+4, todas las fechas pasaron por CSV a Excel sin cambios. CSV a Excel escribe cada fecha como medianoche UTC, así que un navegador con la hora de Nueva York tampoco la mueve.

Un solo ajuste eliminó todos los cambios de la ruta por Excel: «Tipos de celda» en «Todo como texto», en CSV a Excel. Tanto con la hora de Nueva York como con UTC+4, la ida y vuelta devolvió entonces las 100 000 celdas exactamente como estaban escritas. El precio es una hoja de celdas de texto, importes incluidos. El texto también conviene a los códigos de barras. Con los ajustes predeterminados, nuestros códigos de 13 dígitos pasaron a ser números con el formato General. La documentación de Microsoft dice que el formato General muestra los números de 12 o más dígitos en notación científica.

Los datos anidados no vuelven

El JSON real rara vez es plano, así que dimos a cada registro un objeto address y una lista de tags: 3,8 MB con sangría. JSON a CSV repartió la dirección en columnas llamadas address.city y address.zip, y juntó las etiquetas en una sola celda, como new, wholesale. JSON a Excel hizo lo mismo.

Al convertirlos de nuevo a JSON, ninguno de los dos archivos recuperó su forma anterior. Los dos dieron claves planas como address.city, y el campo tags pasó a ser una cadena en lugar de una lista. La ruta por CSV también cambió tipos: 6017 de los 10 000 códigos postales, los que no tenían cero a la izquierda, como 78701, volvieron como números, mientras que 02134 siguió siendo texto. En esa ruta, los cupones vacíos, null en nuestro archivo, volvieron como cadenas vacías. La ruta por Excel conservó todos los códigos postales como texto y cada null como null.

Qué formato elegir

Si una persona va a ordenar, filtrar y sumar los datos, elige XLSX. Guarda los importes como números, las fechas como fechas y true o false como valores lógicos. Si el archivo lo lee un programa, elige JSON. Conserva los números, true, false y null, y es el único de los tres que admite campos anidados. NDJSON ocupa lo mismo que el JSON minimizado y pone un registro en cada línea.

Si el archivo solo pasa de un sistema a otro, un CSV en ZIP es el más pequeño de los tres. Los separadores, las codificaciones y la marca de orden de bytes todavía pueden hacer tropezar a un CSV en su camino a Excel. Nuestra guía De CSV a Excel y vuelta sin estropear tus datos los explica.

Herramientas usadas en este artículo

Sigue leyendo