Converter CSV para JSON

Cole o CSV e receba o JSON no navegador, com o delimitador reconhecido sozinho, com ou sem cabeçalho, prévia em tabela e download local. CPF com zero à frente e número grande continuam intactos.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

A conversão acontece no seu navegador. A planilha não é enviada para servidor nenhum, nem fica salva aqui.

Sem cabeçalho, cada linha vira uma lista de valores em vez de um objeto com nomes de campo.

196 caracteres · 4 linhas · limite 200.000

O que a conversão precisou mudar ou preservar

  • Estas colunas continuaram como texto porque virar número perderia dígito (zero à esquerda ou número grande demais): cpf, cep, matricula, mensalidade.

Prévia do que vai para o JSON3 linhas · 6 colunas

nomecpfcepmatriculamensalidadeativo
Ana Souza008456789090131100012345678901234567890249.90true
Bruno Lima12345678909200400207180false
Carla Dias98765432100700400101024315.5true

JSON gerado

[
  {
    "nome": "Ana Souza",
    "cpf": "00845678909",
    "cep": "01311000",
    "matricula": "12345678901234567890",
    "mensalidade": "249.90",
    "ativo": true
  },
  {
    "nome": "Bruno Lima",
    "cpf": 12345678909,
    "cep": 20040020,
    "matricula": 7,
    "mensalidade": 180,
    "ativo": false
  },
  {
    "nome": "Carla Dias",
    "cpf": 98765432100,
    "cep": 70040010,
    "matricula": 1024,
    "mensalidade": 315.5,
    "ativo": true
  }
]

O download é gerado e salvo pelo próprio navegador. O arquivo não passa por servidor nenhum.

Antes e depois, com as duas armadilhas à vista

A planilha abaixo tem um CEP que começa com zero e uma matrícula de 20 dígitos. São exatamente os dois casos em que a conversão descuidada estraga o dado sem avisar.

CSV de entrada

nome;cep;matricula;ativo
Ana Souza;01311000;12345678901234567890;true

JSON gerado aqui

[
  {
    "nome": "Ana Souza",
    "cep": "01311000",
    "matricula": "12345678901234567890",
    "ativo": true
  }
]

Um conversor que trata todo número como número devolveria "cep": 1311000 e "matricula": 12345678901234567000. O primeiro perdeu o zero da frente e o segundo perdeu os últimos dígitos, porque o tipo numérico do JavaScript só garante inteiro exato até 9.007.199.254.740.991. Nos dois casos o arquivo continua parecendo correto, e o erro aparece semanas depois, quando alguém tenta cruzar esses dados com outra base.

Como cada célula da planilha sai no JSON

Deslize a tabela para o lado: são 4 colunas.

Resultado do conversor de CSV para JSON para 11 células de exemplo: o valor escrito na planilha, o que ele representa, o valor gerado no JSON e o motivo.
Na planilhaO que éNo JSONO que aconteceu
00845678909CPF que começa com zero"00845678909"continuou texto, porque como número voltaria 845678909
007código com zeros à esquerda"007"continuou texto, porque como número voltaria 7
249.90preço com zero no fim"249.90"continuou texto, porque como número voltaria 249.9
315.5decimal com ponto315.5virou número, porque a volta devolve o mesmo texto
1,50decimal com vírgula"1,50"continuou texto, porque o JSON não tem esse formato de valor
-5número negativo-5virou número, porque a volta devolve o mesmo texto
1e3notação científica"1e3"continuou texto, porque como número voltaria 1000
truebooleano em minúsculastruevirou booleano do JSON
TRUEbooleano em maiúsculas"TRUE"continuou texto, porque o JSON não tem esse formato de valor
nulla palavra nullnullvirou null do JSON
vaziacélula vazia""virou texto vazio, e não null

Cada linha foi gerada pelo próprio conversor desta página, quando a página foi publicada, com a mesma regra que roda quando você cola o arquivo. Tipos do JSON: RFC 8259.

Em resumo

O conversor de CSV para JSON transforma cada linha da planilha num objeto, com os nomes do cabeçalho como chaves, e roda no seu navegador, sem enviar o arquivo. O delimitador é reconhecido pelo próprio texto entre 4 opções: vírgula, ponto e vírgula, tabulação e barra. Vence a que dá o mesmo número de colunas em todas as linhas, e não a que aparece mais vezes. É por isso que a planilha do Excel em português, que sai com ponto e vírgula e usa vírgula no decimal, não vira uma coluna só.

Na tipagem, true, false e null viram os valores do JSON, e texto com cara de número só vira número se a volta for idêntica. Na planilha que abre com a página, 4 das 6 colunas ficam como texto em pelo menos uma linha: CPF e CEP pelo zero à esquerda, a matrícula de 20 dígitos por passar do limite do JavaScript e a mensalidade 249.90, que voltaria como 249.9. A prévia mostra as 50 primeiras linhas, e o JSON e o download trazem o arquivo inteiro, de até 200 mil caracteres colados. A leitura segue a RFC 4180, de outubro de 2005.

Outras ferramentas de dados e formatos

  • Formatador de JSONFormate, valide e minifique JSON sem que um número grande mude de valor nem uma chave repetida desapareça. O erro vem com a linha e a coluna. Tudo no seu navegador.
  • Conversor de dadosConverta CSV, JSON, YAML e XML sem perder dado: CPF com zero na frente e número grande continuam inteiros, e toda transformação é avisada. Tudo no seu navegador.
  • Codificador Base64Codifique texto para Base64 ou decodifique Base64 para texto diretamente no navegador. Suporte completo a UTF-8, emojis e caracteres acentuados. Processamento 100% local.
  • Codificar e decodificar URLCodifique, decodifique e analise URLs completas no navegador. Separa protocolo, host, porta, caminho, query string e fragmento. Usa APIs nativas, processamento 100% local, sem fetch externo.
  • Conversor de timestamp UnixConverta Timestamp Unix para data/hora legível ou vice-versa. Suporte a segundos e milissegundos. Exibe ISO 8601, UTC, data e hora local. Processamento 100% local no navegador.
  • Conversor binário, decimal e hexadecimalConverta números entre decimal, binário, hexadecimal e octal instantaneamente. Informe o valor e a base de origem e veja todas as representações em paralelo. Processamento 100% local.

Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.

Cole o CSV, confirme o delimitador e se a primeira linha é cabeçalho, e o JSON aparece pronto para copiar ou baixar. Com cabeçalho, cada linha vira um objeto com os nomes das colunas como chaves. Tudo roda no seu navegador, e valores como CPF e CEP com zero à frente continuam exatamente como estavam.

Como funciona a conversão de CSV para JSON

A leitura segue o padrão do RFC 4180: o texto é percorrido caractere a caractere, respeitando aspas duplas, de modo que um campo entre aspas pode conter o delimitador, quebra de linha e aspas escapadas. A marca de ordem de byte que o Excel escreve no começo do arquivo é removida, senão a primeira coluna viraria uma chave com um caractere invisível na frente e nenhum acesso por nome funcionaria.

Depois vem a tipagem. O CSV não carrega tipo nenhum, então cada célula é examinada: true, false e null viram os valores correspondentes do JSON, e texto que parece número só vira número quando a conversão é reversível. O teste é literal: converte, escreve o número de volta como texto e compara com o original. Se der diferente, o campo permanece string, e a página lista as colunas em que isso aconteceu, em vez de mudar o dado calada.

Para o caminho inverso e para YAML e XML, use o conversor de dados completo. Para validar ou formatar o JSON gerado, o formatador e validador de JSON, e para comparar duas versões do mesmo arquivo, o comparador de texto.

Método

com cabeçalho: [ { coluna1: valor, coluna2: valor } ]

sem cabeçalho: [ [ valor, valor ] ]

vira número apenas se String(Number(texto)) === texto

Base: RFC 4180 (formato CSV) e RFC 8259 (formato JSON). A conversão é determinística e roda no seu navegador, sem enviar dado nenhum.

Limitações

  • O limite de entrada é de 200 mil caracteres colados na página. Planilha maior que isso é melhor converter por script, porque o navegador precisaria manter o texto e o resultado na memória ao mesmo tempo.
  • A prévia em tabela mostra as 50 primeiras linhas. O JSON gerado e o download trazem o arquivo inteiro.
  • Toda célula de uma coluna é avaliada sozinha, então a mesma coluna pode sair com tipos diferentes em linhas diferentes se o arquivo for inconsistente. O conversor não força um tipo por coluna, e diz quais colunas precisou preservar como texto.
  • Decimal com vírgula (1,50) é lido como texto, e não como número, porque o JSON usa ponto. Converta a coluna na planilha antes se precisar do valor numérico.

Guia completo

Como converter CSV, JSON, YAML e XML sem perder estrutura

Veja quando usar CSV, JSON, YAML e XML, como converter entre os formatos sem perder dados, e os cuidados com delimitadores, cabeçalhos, aspas, arrays e estruturas aninhadas.

Coloque esta ferramenta no seu site, de graça

Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.

CSV para JSON para sitever todas as ferramentas para site

Calculadoras relacionadas

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Ferramenta transparente, com o método explicado

Atualizado em . Fontes: RFC 4180 (CSV) / RFC 8259 (JSON).

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

Como converter CSV para JSON sem estragar CPF e CEP?

O risco é o conversor transformar 00845678909 em 845678909, porque o texto parece número. Aqui a conversão para número só acontece quando ela é reversível: o valor vira número, volta para texto e, se o texto de volta for diferente do original, o campo continua string. CPF, CEP e código de barras que começam com zero ficam como texto, e também o número longo que voltaria com outros dígitos, como a matrícula de 20 dígitos do exemplo. A página avisa quais colunas foram preservadas assim.

Qual delimitador usar, vírgula ou ponto e vírgula?

Use o que está no seu arquivo. Planilha exportada em português costuma sair com ponto e vírgula, porque a vírgula é o separador decimal aqui; arquivo gerado por sistema costuma vir com vírgula. Ao colar o conteúdo, o delimitador é reconhecido sozinho: o critério é qual caractere produz o mesmo número de colunas em todas as linhas, e não qual aparece mais vezes.

Como converter uma planilha do Excel para JSON?

Selecione as células no Excel ou no Google Planilhas, copie e cole no campo CSV de entrada. A cópia de planilha chega como texto separado por tabulação, e o delimitador é reconhecido sozinho. Outra forma é salvar como CSV e abrir o arquivo num editor de texto para copiar. A marca invisível que o Excel grava no começo do CSV UTF-8 é removida, então a primeira coluna não ganha caractere escondido no nome. Antes de baixar, confira na prévia se as colunas saíram separadas.

O que muda quando desligo o cabeçalho?

Com cabeçalho ligado, a primeira linha vira o nome dos campos e cada linha seguinte vira um objeto, no formato [{"nome": "Ana", "cpf": "008..."}]. Com o cabeçalho desligado, nenhuma linha é tratada como nome de campo e o resultado é uma lista de listas, no formato [["nome", "cpf"], ["Ana", "008..."]]. Desligue quando o arquivo começa direto nos dados. Com o cabeçalho ligado, dois nomes iguais na primeira linha fazem cada objeto ficar só com o valor da última coluna daquele nome, e o aviso aponta o nome repetido.

O conversor entende campo com vírgula dentro e aspas?

Sim. O leitor respeita as aspas duplas do padrão RFC 4180: um campo entre aspas pode conter o delimitador, quebra de linha e aspas escapadas como duas aspas seguidas. Um endereço escrito como "Rua A, 100" continua sendo uma coluna só, e quebras de linha no estilo Windows também são tratadas. Sem as aspas, a vírgula do endereço abre uma coluna a mais: essa linha fica com mais células que o cabeçalho, a sobra fica de fora do JSON e o aviso diz quantas linhas passaram por isso.

Por que 249.90 continua texto e 315.5 vira número?

Porque 249.90, lido como número, volta como 249.9: o zero do fim some, e esta página só converte quando a volta é idêntica. Já 315.5 volta igual e vira número. Na planilha de exemplo isso faz a coluna mensalidade sair com tipos diferentes em linhas diferentes, e o aviso lista a coluna. Se o sistema que vai ler o JSON precisa de número em todas as linhas, converta a coluna no código, com a regra de arredondamento dele; se precisa do valor como foi digitado, o texto já é o certo.

Por que true e false viram booleano e alguns números continuam texto?

O CSV não tem tipos: tudo é texto. Para o JSON ficar útil, a conversão reconhece true, false e null como valores do JSON, e reconhece número quando a conversão é segura. A regra de segurança é a mesma em todos os casos: se converter mudaria o valor, o campo fica como texto. É isso que impede 007 de virar 7 e um identificador de 20 dígitos de perder os últimos dígitos.

O que é o aviso amarelo acima da prévia?

É a caixa "O que a conversão precisou mudar ou preservar". Ela aparece quando alguma célula tem cara de número mas ficaria diferente se virasse número, e lista cada coluna em que isso aconteceu. Na planilha que abre com a página, são 4 das 6 colunas: cpf, cep, matricula, mensalidade. A mesma caixa avisa quando uma linha tem células a mais ou a menos que o cabeçalho. O aviso não é erro: o JSON foi gerado, e as células preservadas estão nele como estavam na planilha.

Por que a prévia mostra só algumas linhas?

A tabela "Prévia do que vai para o JSON" serve para conferir se as colunas saíram separadas e se o cabeçalho foi lido certo, e para isso as 50 primeiras linhas bastam. Desenhar dezenas de milhares de linhas deixaria a aba lenta. O contador ao lado do título diz quantas linhas e colunas o arquivo inteiro tem, e o JSON gerado, a cópia e o download trazem todas. Se o contador mostra uma coluna só, o delimitador está errado: troque no campo Delimitador das colunas.

Como transformar o JSON de volta em CSV?

Esta página faz só o sentido de CSV para JSON. Para voltar, use o conversor de dados, na aba JSON → CSV: ele escreve uma coluna por chave, põe entre aspas a célula que tem vírgula ou aspas e coloca um apóstrofo na frente do texto que começa com =, +, - ou @, para a planilha não executar como fórmula. Número negativo e número grande saem como estavam. O mesmo conversor faz JSON para YAML e para XML, e o caminho de volta de cada um.

O arquivo é enviado para algum servidor?

Não. A conversão roda no seu navegador, em JavaScript, e o download é gerado pelo próprio navegador a partir do texto que já está na página. Nenhuma linha da sua planilha sai do computador, e nada fica salvo aqui depois que você fecha a aba. A única requisição que a ferramenta dispara é o registro de uso da estatística do site, uma vez, na primeira conversão que você pede, com o endereço da página e nada do conteúdo.