Json To Csv LogoJson To Csv

Convert Large JSON to CSV Online Free: Quão Grande é Grande Demais? (Guia 2026)

Arquivos JSON grandes convertem bem no navegador até certo ponto, e esse ponto é memória, não velocidade. Este guia mede o teto real com o próprio motor de conversão da página, mostra a receita de dividir em partes que nunca perde uma linha, e diz com honestidade quando o trabalho pertence a um script em vez de uma aba.

Atualizado: 2026-10-2016 min de leitura

O que "grande" realmente significa para um conversor de navegador

Quando as pessoas dizem que um arquivo JSON é grande, podem estar falando de cinco mil linhas ou de cinco gigabytes, e esses são problemas completamente diferentes. Um conversor de navegador não tem um único teto. Ele tem três, e saber qual você está prestes a atingir diz se você deve apenas converter, dividir em partes ou sair do navegador de vez.

O primeiro teto é a interpretação. Antes de qualquer conversão acontecer, o navegador transforma seu texto JSON em objetos na memória com JSON.parse, e objetos interpretados ocupam cerca de duas a três vezes a memória do texto de onde vieram. Um arquivo de 25 MB vira 50 a 75 MB de objetos ativos antes de existir uma única célula de CSV. O segundo teto é a entrada. Colar cinquenta megabytes de texto em uma caixa de texto é lento e desagradável em qualquer máquina, e é por isso que existe o botão de upload: ele entrega o arquivo ao conversor sem passar pela sua área de transferência. O terceiro teto é a pré-visualização. Depois de converter, a página renderiza uma tabela para você conferir o resultado a olho, e renderizar meio milhão de linhas no DOM é o que realmente congela abas. Repare o que está faltando nesta lista: velocidade de conversão. Como as medições abaixo mostram, transformar os objetos em texto CSV é a etapa mais barata de todo o processo.

Então "dá para converter um arquivo JSON grande online de graça" na verdade pergunta três coisas menores. O navegador vai interpretar o arquivo sem ficar sem memória. O caminho de entrada vai lidar com ele com elegância. A pré-visualização vai sobreviver. Para a maioria dos arquivos que as pessoas chamam de grandes, a resposta às três é sim, e o resto deste guia é sobre encontrar o limite com honestidade em vez de adivinhar.

Medido: a rapidez com que esta página converte arquivos grandes

Cada número desta seção foi medido na máquina de build com o exato motor de conversão que esta página roda no seu navegador, a mesma função jsonToCsv com o achatamento ligado, contra dados de pedidos gerados com objetos de cliente aninhados. A máquina é um servidor comum, não uma bancada de benchmark afinada, então trate esses números como a ordem de grandeza certa para um bom notebook.

Mil linhas, 0,10 MB de JSON: 20 milissegundos. Dez mil linhas, 1,01 MB: 57 milissegundos. Cinquenta mil linhas, 5,10 MB: 221 milissegundos. Cem mil linhas, 10,21 MB: 403 milissegundos. Duzentas e cinquenta mil linhas, 12,5 MB: 636 milissegundos. Quinhentas mil linhas, 25,0 MB: cerca de 1,4 segundo de tempo do motor, 2,3 segundos de relógio. O CSV de saída do arquivo de meio milhão de linhas ficou com 11,7 MB, e a linha de cabeçalho saiu exatamente como esperado: id, item, qty, price, customer.name, customer.city.

Duas ressalvas honestas. Primeira, esses tempos são só da conversão. Seu navegador também interpreta o JSON antes e renderiza a tabela de pré-visualização depois, e a pré-visualização é a parte cara no limite superior. Um arquivo que converte em dois segundos ainda pode deixar a aba pesada enquanto meio milhão de linhas de tabela são pintadas. Segunda, dados de teste gerados são uniformes. Exportações reais com chaves irregulares, aninhamento profundo ou blocos gigantes de texto convertem um pouco mais devagar, porque o motor percorre cada valor. Mesmo assim, a forma do resultado se mantém: a etapa de conversão fica abaixo de um segundo bem depois das cem mil linhas, e fica em poucos segundos com meio milhão. Se o seu arquivo converte devagar em outro lugar, o conversor está fazendo algo desperdiçado, porque o trabalho em si é barato.

Tempos de conversão medidos (motor da página, máquina de build)
rows        JSON size    convert time
1,000       0.10 MB      20 ms
10,000      1.01 MB      57 ms
50,000      5.10 MB      221 ms
100,000     10.21 MB     403 ms
250,000     12.5 MB      636 ms
500,000     25.0 MB      ~1.4 s engine / 2.3 s wall

# header produced for every file:
# id,item,qty,price,customer.name,customer.city

O teste de 60 segundos: tente antes de complicar

A maior parte da ansiedade com arquivos grandes se resolve simplesmente tentando. Use o botão de upload em vez de colar para qualquer coisa acima de alguns megabytes, e observe o selo de status acima do conversor. Ele muda de Ready para Valid com uma contagem de linhas quando o JSON é interpretado sem erros. Se a aba continua responsiva e o botão de download entrega um CSV, você terminou, e nenhuma estratégia de divisão foi necessária.

Dois detalhes tornam o teste honesto. Primeiro, mantenha o Auto Convert ligado, que é o padrão: o CSV aparece assim que o arquivo carrega, então você vê o resultado sem um clique extra. Segundo, confie na contagem de linhas. Se o selo diz Valid com 480.000 linhas e você esperava algo perto disso, a interpretação entendeu seu arquivo. Se a contagem estiver muito errada, geralmente 1, seu JSON provavelmente é um objeto gigante envolvendo o array, e o conversor extraiu o que conseguiu. Isso é um problema de formato do arquivo, não de tamanho, e nosso guia de achatamento explica o padrão do invólucro.

Se a aba congelar, engasgar por muito tempo ou o navegador oferecer encerrar a página, pare e divida em partes. Não recarregue e cole o mesmo arquivo esperando um resultado diferente. O teto de memória não negocia, e a próxima seção é o caminho através dele.

Dividir em partes no navegador: a receita que nunca perde uma linha

Dividir em partes parece um improviso, mas é exato. Divida o array JSON em pedaços, converta cada pedaço na aba, baixe um CSV por pedaço e junte-os mantendo uma única linha de cabeçalho. Na máquina de build isso foi verificado diretamente: um arquivo de 20.000 linhas dividido em duas metades, cada metade convertida separadamente, o cabeçalho do segundo CSV removido, os dois corpos concatenados. O resultado mesclado ficou byte a byte idêntico a converter o arquivo inteiro de uma vez.

Vale uma frase sobre por que funciona. Quando cada parte tem o mesmo formato, o conversor deriva a mesma lista de colunas na mesma ordem para cada parte, então os corpos se alinham perfeitamente e a única coisa a gerenciar é o cabeçalho. Guarde o cabeçalho do primeiro CSV, descarte a linha de cabeçalho de cada CSV seguinte e concatene. O único caso que exige cuidado é dado irregular, onde linhas diferentes carregam chaves diferentes: se a parte um nunca viu uma coluna "notes" que a parte dois tem, as colunas não vão se alinhar. Para arquivos irregulares, use a rota do script na seção adiante, que calcula a lista completa de colunas antes.

Quantas partes. Mire em pedaços que sua aba converte com conforto, que pelas medições acima fica em torno de 50 mil a 100 mil linhas cada. Um arquivo de 400 mil linhas vira de quatro a oito partes, cada uma convertendo em menos de meio segundo. O trabalho todo, incluindo seus cliques, leva alguns minutos, e cada linha sobrevive.

Como dividir o arquivo sem quebrar o JSON

O erro a evitar é dividir o arquivo como texto. Cortar um arquivo de 25 MB ao meio em um editor de texto quase sempre o quebra: um colchete deixado aberto, uma string cortada no meio das aspas, uma vírgula órfã na fronteira. Divida como dados, com uma ferramenta que entende JSON, para que cada pedaço continue sendo um JSON válido por conta própria.

O divisor confiável mais curto é algumas linhas de Python. Carregue o arquivo uma vez, fatie a lista e grave cada fatia em seu próprio arquivo. Verificado na máquina de build contra um arquivo de 30.000 linhas: três partes de 10.000 linhas, e remontar as partes reproduziu o arquivo original exatamente. Se você preferir ficar no terminal, o jq fatia arrays com a mesma ideia: jq '.[0:50000]' big.json > part1.json pega os primeiros cinquenta mil elementos, e jq '.[50000:100000]' pega os próximos cinquenta mil. Essa é a sintaxe padrão de fatiamento do jq, documentada no manual do jq.

Nomeie as partes em ordem, part1, part2, part3, e converta-as em ordem. Os CSVs saem na mesma ordem, e a etapa de junção é só concatenação com a regra do cabeçalho da seção anterior.

Dividir um array JSON em partes válidas (verificado)
import json

rows = json.load(open('big.json'))
chunk = 50000
for i in range(0, len(rows), chunk):
    part = rows[i:i+chunk]
    json.dump(part, open('part%d.json' % (i // chunk + 1), 'w'))
    print('part%d.json:' % (i // chunk + 1), len(part), 'rows')

# terminal alternative (standard jq slice syntax):
# jq '.[0:50000]' big.json > part1.json
# jq '.[50000:100000]' big.json > part2.json

Quando o arquivo é grande demais para qualquer aba do navegador

Existe um teto honesto, e vale nomeá-lo sem rodeios. Se o navegador não consegue interpretar o arquivo na memória de jeito nenhum, nenhum conversor online pode ajudar, porque todos eles interpretam primeiro. Os sintomas são inconfundíveis: a aba oferece encerrar a página durante o carregamento, o navegador relata um erro de falta de memória, ou o arquivo nunca termina de subir. Nesse ponto o arquivo superou a aba, e o trabalho pertence a um script rodando na sua máquina, que pode processar os dados sem nunca segurar tudo como objetos de uma vez.

Onde fica esse teto na prática. Depende da RAM da sua máquina e de quão aninhados estão os dados, mas arquivos de centenas de megabytes de texto JSON são onde as abas começam a morrer em notebooks comuns. Um arquivo de 25 MB converteu aqui em cerca de dois segundos com folga; um arquivo de 250 MB é outro bicho, cerca de dez vezes a pressão de memória, e um arquivo de 1 GB é território firme de script. Se você não sabe de que lado da linha está, o teste de 60 segundos da seção anterior responde empiricamente: uma aba morta é o arquivo dizendo que precisa de um script.

Mais uma nota honesta. Alguns sites anunciam "tamanho de arquivo ilimitado" para conversão online. O que geralmente querem dizer é que os servidores deles aceitam o upload, o que apenas move o teto do seu navegador para a fila deles, e entrega seus dados a terceiros no processo. Para arquivos grandes o bastante para importar, essa troca raramente vale a pena.

A rota do script: Python em partes que sobrevive a dados irregulares

Quando o navegador está fora, este é o script. Ele lê o arquivo inteiro uma vez, achata cada parte com pandas e grava um CSV por parte, e lida com o caso de dados irregulares que a receita do navegador não consegue: linhas com chaves diferentes. O truque é calcular a lista completa de colunas a partir de todos os dados primeiro, e então forçar cada parte nessas colunas antes de gravar. Verificado na máquina de build contra um arquivo de 30.000 linhas onde algumas linhas carregavam um campo notes e outras um campo flag: três CSVs de partes mesclados em uma saída byte a byte idêntica a converter o arquivo de uma vez, em 0,4 segundo.

O padrão escala além do que o navegador jamais conseguiria. Como cada parte é convertida e gravada antes da próxima carregar, o pico de memória fica proporcional ao tamanho da parte, não ao tamanho do arquivo. Aumente o tamanho da parte para ganhar velocidade em uma máquina grande, diminua se a memória estiver apertada. E o mesmo truque da união de colunas protege você sempre que exportações mudam de formato no meio do caminho, que é o que exportações reais adoram fazer.

Resta uma decisão de julgamento: um CSV por parte versus um único arquivo mesclado. O script abaixo grava um arquivo por parte, o que mantém cada pedaço utilizável por conta própria. Se você quiser um único arquivo, concatene-os com a mesma regra de cabeçalho da receita do navegador: guarde o cabeçalho do primeiro arquivo, descarte os demais.

Conversão em partes segura para dados irregulares (verificada, pandas)
import json, pandas as pd

rows = json.load(open('big.json'))
cols = list(pd.json_normalize(rows).columns)  # union of all keys

chunk = 50000
for i in range(0, len(rows), chunk):
    part = pd.json_normalize(rows[i:i+chunk]).reindex(columns=cols)
    part.to_csv('out_part%d.csv' % (i // chunk + 1), index=False)

# merge the parts into one CSV (keep one header):
# head -n 1 out_part1.csv > merged.csv
# tail -n +2 -q out_part*.csv >> merged.csv

Arquivos grandes e privacidade: por que o lado do cliente importa mais em escala

Arquivos grandes geralmente são arquivos sensíveis. Uma exportação de 500 mil linhas raramente é um conjunto de dados de brinquedo; são clientes, pedidos, logs ou prontuários. É exatamente aí que a arquitetura do conversor mais importa, e é a vantagem silenciosa de fazer isso em uma aba do navegador em vez de no servidor de alguém.

O conversor desta página roda inteiramente no seu navegador depois que a página carrega. Isso foi verificado contra o próprio código-fonte da página para nosso guia de download: o motor de conversão é importado como código local do lado do cliente, e a única requisição de rede em todo o conversor é o botão opcional de buscar por URL, que só roda quando você clica e só busca o endereço que você digita. Seus dados colados ou enviados nunca são mandados para lugar nenhum, o que significa que nenhum terceiro jamais vê o arquivo, nenhuma fila de upload para esperar, e nenhuma política de retenção para ler.

É também por isso que a receita de dividir em partes acima é segura para dados privados. Cada parte converte na sua máquina, e os pedaços nunca a deixam. Se seu arquivo for grande o bastante para precisar da rota do script, a mesma propriedade vale: o script Python roda localmente, e nada nele toca a rede.

O que não fazer com um arquivo grande

Quatro erros aparecem o tempo todo. Primeiro, colar dezenas de megabytes na caixa de entrada em vez de usar o botão de upload. O caminho de upload existe precisamente para isso, e colar é a forma mais lenta de colocar um arquivo grande em qualquer página. Segundo, minificar o JSON esperando que encolha o bastante para importar. A minificação economiza talvez dez por cento em exportações típicas, o que transforma um arquivo grande demais em um arquivo que continua grande demais. Terceiro, abrir um CSV de 500 mil linhas em uma planilha para "conferir". Planilhas têm teto em torno de um milhão de linhas e renderizam devagar muito antes disso; confira a contagem de linhas e examine o começo e o fim do arquivo em vez disso. Quarto, converter a mesma exportação gigante à mão toda semana. Se o arquivo chega com uma agenda, o script Python da seção anterior é uma configuração única que supera cinquenta conversões manuais.

E uma coisa com que não se preocupar: achatamento. Dados aninhados não mudam de forma relevante a matemática do tamanho. O interruptor de achatamento transforma objetos aninhados em colunas com notação de ponto, o que o motor faz na mesma passada que todo o resto, e as medições acima foram todas feitas com o achatamento ligado.

Guias relacionados

Perguntas frequentes

Existe uma ferramenta online gratuita para converter JSON grande em CSV?

Sim, o conversor desta página é gratuito, sem cadastro e sem limite de tamanho do nosso lado. Suba o arquivo, observe o selo de status confirmar a contagem de linhas e baixe o CSV. Seus dados nunca saem da sua máquina porque a conversão roda inteiramente no seu navegador. Para arquivos além de algumas centenas de milhares de linhas, divida o arquivo em partes primeiro usando a receita deste guia.

Qual é o tamanho máximo de JSON que consigo converter online?

Não há limite rígido nesta página; o teto prático é a memória da sua aba do navegador. Medido com o próprio motor da página, 25 MB / 500.000 linhas convertem em cerca de dois segundos, com folga. Depois disso, a memória da aba para interpretar e a tabela de pré-visualização viram o limite, não a conversão. Se a aba congelar ou morrer, divida o arquivo em partes ou mude para a rota do script neste guia.

Como divido um arquivo JSON grande em arquivos menores?

Divida como dados, não como texto, para que cada pedaço continue sendo um JSON válido. Em Python: carregue o arquivo com json.load, fatie a lista em partes, grave cada parte com json.dump. No terminal: jq '.[0:50000]' big.json > part1.json pega os primeiros cinquenta mil elementos. Nunca corte o arquivo em um editor de texto, que quebra colchetes e aspas na fronteira.

Dividir em partes muda o CSV final?

Não, desde que cada parte tenha o mesmo formato. Verificado na máquina de build: um arquivo dividido ao meio, convertido em duas partes e rejuntado mantendo um cabeçalho produziu uma saída byte a byte idêntica a converter o arquivo inteiro de uma vez. A exceção são dados irregulares onde as linhas carregam chaves diferentes; para isso, use o script deste guia, que calcula a lista completa de colunas antes de gravar qualquer parte.

É seguro converter um JSON grande com dados sensíveis online?

Nesta página, sim. A conversão roda inteiramente no seu navegador: o motor é código local do lado do cliente e seu arquivo nunca é enviado para nenhum servidor. A única requisição de rede no conversor é o botão opcional de buscar por URL. Isso torna a rota do navegador, e a receita de dividir em partes, segura para exportações privadas que você não entregaria a um serviço de terceiros.

Por que meu navegador trava ao converter um JSON grande?

Geralmente a tabela de pré-visualização, não a conversão. Renderizar centenas de milhares de linhas de tabela é muito mais caro do que produzir o texto do CSV. Colar um arquivo enorme na caixa de entrada em vez de subir faz piorar. Suba o arquivo, e se a aba ainda sofrer, converta em partes: cada pedaço fica pequeno o bastante para a pré-visualização renderizar na hora.

Dá para converter um JSON de 1 GB em CSV no navegador?

Com honestidade, não. Um arquivo desse tamanho excede o que uma aba do navegador consegue interpretar na memória, e nenhum conversor online muda isso. Use um script na sua máquina: Python com json_normalize em partes como mostrado neste guia, ou uma ferramenta de streaming para dados em JSON-lines. Se o arquivo for um array gigante, considere convertê-lo para JSON-lines primeiro, um objeto por linha, que flui bem em streaming.

Teste agora no seu arquivo grande

Cole um pedaço do seu JSON grande e veja o conversor lidar com ele em milissegundos. Grátis, sem cadastro, roda inteiramente no seu navegador.

Abrir o conversor de JSON para CSV
Todos os guias