Pular para o conteúdo principal
PulsarKit

CSV, Excel ou JSON: medimos os três em uma tabela de 10.000 linhas

Passamos uma tabela de 10.000 linhas por CSV, Excel e JSON com seis conversores. Aqui estão os tamanhos dos arquivos, os tamanhos em ZIP, os tempos e cada célula que voltou diferente.

Por PulsarKit ·

A resposta curta

Para uma tabela plana, o CSV gerou o menor arquivo de texto: 1,2 MB para as nossas 10.000 linhas. As mesmas linhas deram 2,7 MB em JSON indentado e 2 MB em NDJSON. Compactados em ZIP, o CSV e o JSON ficaram próximos: 357 KB contra 398 a 424 KB.

As diferenças maiores apareceram na volta. Uma ida e volta pelo Excel ou pelo JSON, com as configurações padrão, mudou 10.960 de 100.000 células, e não as mesmas nos dois caminhos. Uma única configuração deixou a ida e volta pelo Excel exata. Só o JSON manteve os campos aninhados: depois de passar por CSV ou por uma planilha, eles não voltaram mais. Por isso, escolha o formato pelo que vai ler o arquivo em seguida.

Como medimos

Em 21 de outubro de 2026, montamos com um script uma tabela de teste: 10.000 linhas e 10 colunas de dados inventados. Ela tem IDs com zeros à esquerda, como 000001, códigos de barras de 13 dígitos e números de conta de 19 dígitos. Também tem datas ISO e valores em dinheiro com duas casas decimais, cerca de metade deles negativos. Os nomes misturam letras latinas, acentuadas e cirílicas, com um emoji a cada cem linhas. Uma em cada cem observações traz uma vírgula, aspas e uma quebra de linha. A coluna de cupom está vazia em 3.096 linhas, e todo número de telefone começa com o sinal de mais.

Passamos a tabela por seis conversores em pulsarkit.com: CSV para Excel, Excel para CSV, CSV para JSON, JSON para CSV, Excel para JSON e JSON para Excel. Usamos o Chrome 155 em um MacBook de 2023. Os seis funcionam dentro da aba do navegador, e as configurações ficaram no padrão, a não ser quando as mencionamos. O tempo era contado do clique no botão da ferramenta até o botão “Baixar” ficar ativo. Depois, um script nosso comparou cada célula devolvida com a original, e conferimos o tipo das células dentro de cada pasta de trabalho. Os tamanhos em ZIP vêm de um ZIP padrão, com Deflate no nível 6.

Tamanho, tamanho em ZIP e velocidade

O CSV grava os nomes das colunas uma vez, no topo. O JSON os repete em cada registro. Com a indentação padrão de dois espaços, a ferramenta CSV para JSON transformou a tabela em 2,7 MB, 2,3 vezes o CSV. O NDJSON, com um registro compacto por linha, ficou com 2 MB. A ferramenta Formatar JSON no modo “Minificar” reduziu o arquivo indentado aos mesmos 2 MB, 23,6% a menos.

Um ZIP elimina a maior parte dessa diferença, porque a compressão lida muito bem justamente com chaves repetidas. Compactados em ZIP, o CSV ficou com 357 KB, o NDJSON com 398 KB e o JSON indentado com 424 KB.

Um arquivo XLSX já é um ZIP, então o tamanho dele depende do programa que o grava. A planilha gerada pela ferramenta CSV para Excel, salva de novo pelo LibreOffice Calc, ficou com 753 KB. Quando só o tamanho importa, envie o CSV compactado em ZIP.

A velocidade não separou os formatos. Cronometramos 60 execuções, e na mediana a conversão das 10.000 linhas levou cerca de um terço de segundo. Das 60, 49 levaram menos de meio segundo. A mais lenta, a primeira execução do Excel para CSV na nossa sessão, levou 2 segundos.

O que a ida e volta mudou

Pelo Excel: CSV para Excel e depois Excel para CSV. Os zeros à esquerda, os números de conta de 19 dígitos, os códigos de barras, as quebras de linha dentro das observações, os emojis e as células vazias voltaram como estavam. Duas colunas mudaram. Cada true e cada false voltou como TRUE e FALSE, porque a pasta de trabalho os guarda como valores lógicos. E 960 valores perderam o zero final, então 612.40 virou 612.4: a pasta de trabalho guarda o número, e não o jeito como ele foi escrito.

Pelo JSON: CSV para JSON e depois JSON para CSV. Os mesmos 960 valores perderam o zero final, pelo mesmo motivo. Todo número de telefone voltou com um apóstrofo na frente, como '+1 202 555 0117. A ferramenta JSON para CSV põe esse apóstrofo em qualquer valor que comece com +, =, - ou @ e não seja um número simples. Assim, uma planilha não tem como executá-lo como fórmula. As células vazias viraram strings vazias no JSON, enquanto o Excel para JSON gravou null nas mesmas 3.096 células. O JSON que você recebe depende do caminho, a menos que escolha null em “Células vazias viram”, na ferramenta CSV para JSON.

Em um navegador configurado para UTC ou UTC+4, todas as datas passaram pelo CSV para Excel sem mudança. O CSV para Excel grava cada data como meia-noite em UTC, então um navegador no horário de Nova York também não a desloca.

Uma configuração eliminou todas as mudanças no caminho pelo Excel: “Tipos de célula” em “Tudo como texto”, no CSV para Excel. Com ela, tanto no horário de Nova York quanto em UTC+4, a ida e volta devolveu as 100.000 células exatamente como foram escritas. O preço é uma planilha só com células de texto, inclusive as dos valores em dinheiro. Texto também serve bem para códigos de barras. Com as configurações padrão, os nossos códigos de 13 dígitos viraram números no formato Geral. Segundo a documentação da Microsoft, o formato Geral mostra números de 12 ou mais dígitos em notação científica.

Dados aninhados não voltam

Um JSON real raramente é plano, então demos a cada registro um objeto de endereço e uma lista de tags: 3,8 MB com indentação. A ferramenta JSON para CSV dividiu o endereço em colunas chamadas address.city e address.zip e juntou as tags em uma só célula, como em new, wholesale. O JSON para Excel fez o mesmo.

Convertidos de volta para JSON, nenhum dos dois arquivos recuperou a forma antiga. Nos dois casos vieram chaves planas, como address.city, e o campo tags como string, e não como lista. O caminho pelo CSV também mudou tipos: 6.017 dos 10.000 códigos postais, os que não começam com zero, como 78701, voltaram como números, enquanto 02134 continuou como texto. Nesse caminho, os cupons vazios, null no nosso arquivo, voltaram como strings vazias. O caminho pelo Excel manteve todos os códigos postais como texto e todo null como null.

Qual formato escolher

Se uma pessoa vai ordenar, filtrar e somar os dados, escolha XLSX. Ele mantém valores em dinheiro como números, datas como datas e true ou false como valores lógicos. Se quem lê o arquivo é um programa, escolha JSON. Ele mantém números, true, false e null, e é o único dos três que guarda campos aninhados. O NDJSON tem o mesmo tamanho do JSON minificado e põe um registro em cada linha.

Se o arquivo só passa de um sistema para outro, um CSV compactado em ZIP é o menor dos três. Separadores, codificações e a marca de ordem de bytes (BOM) ainda podem atrapalhar um CSV no caminho para o Excel. O nosso guia CSV para Excel e vice-versa sem estragar seus dados trata de cada um deles.

Ferramentas usadas neste artigo

Leia também